Посмотрел дебуггером адрес pMethod = &MyClass::Method; в самом классе и в теле функции после создания обьекта.Адреса совпадают.Тоесть pMethod указыват на адрес метода и этот адрес абсолютный.Можно его нелегально или легально привести к типу WNDPROC?
KingT Никак не поймёшь, что у объекта есть данные. Вот как раз указатель на эти данные и нужен функциям объекта. Забудь про абсолютные и не абсолютные указатели.
не сочтите за извращение промежуточный вариант такой Код (Text): LRESULT (window::*pMethod)(HWND,UINT,WPARAM,LPARAM); pMethod = &window::wndproc; int a = 0; _asm { mov eax,pMethod mov a,eax } wndclass.lpfnWndProc=(WNDPROC)a; Работает.Тоесть указатель pMethod можно использовать даже только нет возможности его легально привести к типу WNDPROC.
KingT 1) int != DWORD (unsigned long) 2) обманули проверку типов и ваш код теперь непереносим. 3) Чем вам статик не угодил? Объявляете вашу функцию window::wndproc как статик: static LRESULT wndproc (HWND,UINT,WPARAM,LPARAM); в коде пишете: Код (Text): wndclass.lpfnWndProc=(WNDPROC)&window::wndproc; В итоге все очень красиво. Зачем так заморачиваться.
Да причем тут гений не гений.Я же просто учусь.Это экспериментальный код.Я прекрасно понимаю что так делать нельзя.