vc的类中使用SetWindowLong设置GWL_WNDPROC函数
vc的类中使用SetWindowLong设置GWL_WNDPROC函数
vc在类中不能直接CALLBACK 定义窗口(回调)函数,否则你的编译器会报错。
摘自:http://www.myexception.cn/vc-mfc/802189.html
你应该按如下格式定义:
第一种方法:当做类函数时
static BOOL CALLBACK NewButtonProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
第二种方法:当做全局函数时(不是类函数,不能放在类里面)
BOOL CALLBACK NewButtonProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
至于你提到的问题,
当做类函数时:
SetWindowLong(m_Btnhwnd, GWL_WNDPROC,(LONG)CButton::NewButtonProc);
当做全局函数是:
SetWindowLong(m_Btnhwnd, GWL_WNDPROC,(LONG)NewButtonProc);
-----------
放在类里面只能是静态成员函数
普通成员函数有特殊的调用约定__thiscall不能作为窗口函数