vc的类中使用SetWindowLong设置GWL_WNDPROC函数

发布时间:2014年5月9日 作者:未知 查看次数:1391

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不能作为窗口函数

 



版权所有!www.sieye.cn
E.Mail:sieye@sohu.com QQ:66697110