Показать сообщение отдельно

  #6  
Старый 27.08.2016, 16:16
AWRage
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами: 5706781

Репутация: 43


По умолчанию

Цитата:
Сообщение от Gabriel__  

Хочу взять адрес метода класса и передать в функцию преобразовав в тип long но ошибка. Вроде можно брать адреса только со статических методов а они требуют статические переменные внутри класса. Помогите передать адрес. Вот код

C++:





Код:
class
HookedWndProc
{
public
:
HookedWndProc
(
HWND hWnd
,
WNDPROC WndProc
)
;
~
HookedWndProc
(
)
;
private
:
LRESULT CALLBACK
m_WindowProc
(
HWND hWnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
;
// data
HWND m_hWnd
;
WNDPROC m_WndProc
;
WNDPROC m_prevWndProc
;
}
;
HookedWndProc
::
HookedWndProc
(
HWND hWnd
,
WNDPROC WndProc
)
{
m_hWnd
=
hWnd
;
m_WndProc
=
WndProc
;
m_prevWndProc
=
(
WNDPROC
)
SetWindowLongA
(
m_hWnd
,
GWL_WNDPROC
,
/*error C2440: приведение типов*/
(
LONG
)
m_WindowProc
)
;
// Ставим свой Window proc
}
HookedWndProc
::
~
HookedWndProc
(
)
{
SetWindowLongA
(
m_hWnd
,
GWL_WNDPROC
,
(
LONG
)
m_prevWndProc
)
;
// Восстанавливаем прежний Window proc
}
LRESULT HookedWndProc
::
m_WindowProc
(
HWND hWnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
/* callback */
{
CallWindowProcA
(
this
->
m_WndProc
,
hWnd
,
uMsg
,
wParam
,
lParam
)
;
// Вызыв пользовательского Window proc
return
CallWindowProcA
(
this
->
m_prevWndProc
,
hWnd
,
uMsg
,
wParam
,
lParam
)
;
// Вызов оригинального
}

Нужно что бы функция m_WindowProc была статической.
 
Ответить с цитированием