![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
![]()
Делаю свой класс для работы с контролами. В числе фич числится сабклассинг процедуры. Собственно все вроде бы уже сделано(правдами и неправдами) но настораживает вот что:
В режиме отладки вылетает вот такая штука: "Необработанное исключение в "0xbaadf00d" в "_HKP.exe": 0xC0000005: Access violation." - тогда как если просто запустить проект то ничего не случится, программа работает без нареканий, но настораживает одна вещь, судя по всему новая процедура установки сообщений просто не устанавливается: Код:
Что может быть не так с моим классом? Код:
PPS: Нет все таки этот ООП явно от лукавого - столько нервов уже потратил, а ради чего спрашивается...
"Тяжело в учении, легко в бою" - А.В. Суворов
Последний раз редактировалось Stilet; 30.11.2009 в 12:46. |
![]() |
![]() |
![]() |
#2 | |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
![]()
весь листинг, а лучше всего файлы проекта, если это VS
Цитата:
|
|
![]() |
![]() |
![]() |
#3 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
![]()
Да тут я ошибся немного
![]() На эту строку: PHP код:
main.cpp(64) : error C2440: приведение типов: невозможно преобразовать 'LRESULT (__stdcall Control::* )(HWND,UINT,WPARAM,LPARAM)' в 'LONG' 1> Не существует контекста, в котором такое преобразование возможно
"Тяжело в учении, легко в бою" - А.В. Суворов
|
![]() |
![]() |
![]() |
#4 |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
![]()
все правильно ) должно ругаться =) ищите класс FastDelegate, он вам поможет.
дело в том, что так дял компилтора выглядит ваша функция LRESULT WINAPI Control::messageHandler(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) а аргумент функции требует LRESULT WINAPI messageHandler(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) вам нужно адресс функции, но компилятор все равно будет ругаться. А если вы все таки решите сделать приведение типов (между функциями) то вас поджидает ошибка с памятью. SetWindowLong системная процедура... забудьте про FastDelegate, щас помогу Последний раз редактировалось Stilet; 30.11.2009 в 14:28. |
![]() |
![]() |
![]() |
#5 |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
![]() Код:
|
![]() |
![]() |
![]() |
#6 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
![]()
По сути проблема в том что в данном контексте оно не может найти адрес функции?(вот бред то... взял смещение от начала объект и все замечательно...) А что если пронаследовать класс от интерфейса с набором нужных функций - тогда проблема исчезнет? (вот уж не знаю каким боком это поможет...)
С моим линкером что то явно не так: Код:
С моим линкером явно уже что то не так... с чего бы это он не принимает функцию из интерфейса? Кстати даже если убрать реализацию функции - проблема не исчезнет. Да кстати он вылетает через раз - началось это на Win 7 уже. UPDATE: Огромное спасибо ![]() UPDATE2: Точно так как вы и говорили - 0xC000005 , наверно мне лучше оставить эту затею с ООП - не мое это явно ![]()
"Тяжело в учении, легко в бою" - А.В. Суворов
Последний раз редактировалось Ivan_32; 30.11.2009 в 15:06. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
pointeur на функцию в классе | ciaonataha | Общие вопросы C/C++ | 11 | 21.04.2009 15:25 |
Динамическое создание "суб-меню" из файлов в заданном каталоге | Abhorrer | Общие вопросы Delphi | 5 | 14.03.2009 21:47 |
константность в классе | softrix | Общие вопросы C/C++ | 1 | 17.06.2008 00:21 |
Экзамен в 9 классе по ИВТ | NecRoMat | Свободное общение | 6 | 11.06.2008 11:56 |