类函数怎么放到函数指针里面
类函数如何放到函数指针里面
pCtrlClass->RegisterCtrlPro ( CtrlManage::SliderMsg );
void Control::RegisterCtrlPro( void (*TypeProg)( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,BYTE ID ))
但是出错了
“CtrlManage::SliderMsg”: 函数调用缺少参数列表;请使用“&CtrlManage::SliderMsg”创建指向成员的指针
如果使用 “&CtrlManage::SliderMsg 的话
error C2664: “Control::RegisterCtrlPro”: 不能将参数 1 从“void (__thiscall CtrlManage::* )(HWND,UINT,WPARAM,LPARAM,BYTE)”转换为“void (__cdecl *)(HWND,UINT,WPARAM,LPARAM,BYTE)”
这个错误
------解决方案--------------------
CtrlManage::SliderMsg换成静态的
------解决方案--------------------
typedef void (*TypeProg)( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,BYTE ID );
void Control::RegisterCtrlPro( TypeProg pFnEntry);
pCtrlClass->RegisterCtrlPro ( CtrlManage::SliderMsg );
------解决方案--------------------
void Control::RegisterCtrlPro( void (*TypeProg)( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,BYTE ID ))
==========>>>
void Control::RegisterCtrlPro( void (Control::*TypeProg)( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,BYTE ID ))
------解决方案--------------------
CtrlManage::SliderMsg改用静态函数,SliderMsg里面用到的成员变量也要改为静态。
------解决方案--------------------
如果你想既不想用你说的声明也不想用静态函数,那么就用Boost的bind和function功能,具体参考Boost
,你可以直接用一个成员函数作为回调函数
pCtrlClass->RegisterCtrlPro ( CtrlManage::SliderMsg );
void Control::RegisterCtrlPro( void (*TypeProg)( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,BYTE ID ))
但是出错了
“CtrlManage::SliderMsg”: 函数调用缺少参数列表;请使用“&CtrlManage::SliderMsg”创建指向成员的指针
如果使用 “&CtrlManage::SliderMsg 的话
error C2664: “Control::RegisterCtrlPro”: 不能将参数 1 从“void (__thiscall CtrlManage::* )(HWND,UINT,WPARAM,LPARAM,BYTE)”转换为“void (__cdecl *)(HWND,UINT,WPARAM,LPARAM,BYTE)”
这个错误
------解决方案--------------------
CtrlManage::SliderMsg换成静态的
------解决方案--------------------
typedef void (*TypeProg)( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,BYTE ID );
void Control::RegisterCtrlPro( TypeProg pFnEntry);
pCtrlClass->RegisterCtrlPro ( CtrlManage::SliderMsg );
------解决方案--------------------
void Control::RegisterCtrlPro( void (*TypeProg)( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,BYTE ID ))
==========>>>
void Control::RegisterCtrlPro( void (Control::*TypeProg)( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,BYTE ID ))
------解决方案--------------------
CtrlManage::SliderMsg改用静态函数,SliderMsg里面用到的成员变量也要改为静态。
------解决方案--------------------
如果你想既不想用你说的声明也不想用静态函数,那么就用Boost的bind和function功能,具体参考Boost
,你可以直接用一个成员函数作为回调函数