VS2010自定义消息

来源:互联网 发布:淘宝卖家如何退保证金 编辑:程序博客网 时间:2024/05/16 13:57

以前在VC中自定义消息的流程在VS2010中现在就不行了,比如说以前在VC中调用ON_MESSAGE宏是这样的:

ON_MESSAGE(message, memberFxn)
但是在VS2010中这样却会出错
memberFxn :The type of the function must be afx_msg LRESULT (CWnd::*)(WPARAM, LPARAM).

例如:

在VC6.0下面定义是没问题的:

ON_MESSAGE(WM_START, OnCalculate)

afx_msg void OnCalculate(WPARAM wParam, LPARAM lParam); 

如果放到VS2010编译,会出错:

error C2440: 'static_cast' : cannot convert from 'void (__thiscall CTTSDialogDlg::* )(WPARAM,LPARAM)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'

解决办法就是将void 改为LRESULT

afx_msg LRESULT OnCalculate(WPARAM wParam, LPARAM lParam); 

请特别注意:

如果你发现按照上面的方法一步步的来了之后,生成项目。 What a fuck!!竟然出现像下面这么多的错误:

 error C2143: 语法错误 : 缺少“}”(在“;”的前面)

“TheBaseClass”: 不是类或命名空间名称

........此处省略一万字......

好吧,你不用再花时间去找错误了,你看看你的类是不是中文名??!!它不支持中文!将类名改成英文吧。不信你重新建立一个项目试试吧!