首页 新闻 会员 周边

c++类中回调函数无法解析

0
[已解决问题] 解决于 2013-09-23 22:50

先列出部分有关代码:

 

//这是在类中申明的回掉函数和静态成员,

staticWNDPROC Buttona;

static LRESULT CALLBACK  ButtonProc1(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);

//这是回掉函数的定义

LRESULT CALLBACK Button::ButtonProc1(HWND hwnd1,UINT message,WPARAM wParam,LPARAM lParam)
{

return CallWindowProc(Buttona, hwnd1, message, wParam, lParam);


}

 

我已经都设置成最小化的精简了,没有其他问题, 回掉函数中返回的 Button1Proc也是静态的

 

 

一下是报错内容:

 

LINK2001:无法解析的外部符号" private: static long ()__stdcall* Button::Button1Proc)

(struct HWND__*,unsigned int, unsigned int ,long)"

(?Button1Proc@Button@@QP6GJPAUHWND_@@IIj@ZA)

 

为了节约大家时间,我给出我做过的尝试:

1.回掉函数需要是静态的, 也只能调用静态成员.  这一点我做到了

2.类中申明的函数没定义会出现无法解析,我定义了,并且很确定任何名字,类型都没有错

 

问题是找出了,但是无法解决

Buttona= (WNDPROC)SetWindowLong(hwnd, GWL_WNDPROC,(LONG)ButtonProc1);

 

加了这一句代码就出错了,但是我必须要这一句代码

学友2000的主页 学友2000 | 菜鸟二级 | 园豆:204
提问于:2013-09-23 20:31
< >
分享
最佳答案
0

Button::Button1Proc?  笔误?在你尝试调用Button1Proc时候才会有这个错误

奖励园豆:5
Dean Song | 菜鸟二级 |园豆:209 | 2013-09-23 21:51

哎,我说过了,你们要无视一切笔误什么数据类型这种问题.

在我提问之前,已经非常谨慎的检查过了

并且我现在问题以解决,谢谢

学友2000 | 园豆:204 (菜鸟二级) | 2013-09-23 22:49
其他回答(1)
0

排查发现

Buttona= (WNDPROC)SetWindowLong(hwnd, GWL_WNDPROC,(LONG)ButtonProc1);

这一行代码出现问题, 把Buttona放全局里即可解决

学友2000 | 园豆:204 (菜鸟二级) | 2013-09-23 22:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册