在.h文件中,怎么消息映射函数声明有的在DECLARE_MESSAGE_MAP()之前,有的在之后。。
这两个位置有区别吗?
我照着书上做了一个自定义的消息,怎么到最后还是有错啊。
我的步骤是:
1) 在头文件中,#define WM_RECVDATA WM_USER+1
2) 在头文件中,在DECLARE_MESSAGE_MAP()的上面,afx_msg void OnRecvData(WPARAM wParam,LPARAM lParam);
3)在源文件中,BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加ON_MESSAGE(WM_RECVDATA,OnRecvData)
错误提示是:missing "{"
请问会是哪地方错了啊?
这两个位置有区别吗?
我照着书上做了一个自定义的消息,怎么到最后还是有错啊。
我的步骤是:
1) 在头文件中,#define WM_RECVDATA WM_USER+1
2) 在头文件中,在DECLARE_MESSAGE_MAP()的上面,afx_msg void OnRecvData(WPARAM wParam,LPARAM lParam);
3)在源文件中,BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加ON_MESSAGE(WM_RECVDATA,OnRecvData)
错误提示是:missing "{"
请问会是哪地方错了啊?
呢?
?
是不是这里啊 WM_USER是自用户定义消息中可利用的第一个,但是应用程序框架使用了其中的几个,一般都定义
WM_USER + 5
改一下试试看吧
呢?
?
BEGIN_MESSAGE_MAP(thisClass,baseClass)的作用是,此时去定义GetMessageMap(),他返回GetThisMessageMap()。在GetThisMessageMap()里面,定义了一个数组,类型为_AFX_MSG,中间的ON_MESSAGE()实质上是在给结构体数组初始化。在这个宏里面有很多的"{",不小心就缺了一个"{",所以说,是ON_MESSAGE()这一句出了问题,也就在所难免了。
还有,END_MESSAGE_MAP()也有可能没添加上去,END_MESSAGE_MAP()是给结构体数组进行最后复制,并返回这个数组。如果看到没有END_MESSAGE_MAP,请务必添加上去。
如果不行,建议你重装VC。
虽然说结贴了,结贴的原因是他们都不懂这里面的内部结构。
我希望能对你有帮助
//BEGIN_MESSAGE_MAP和DECLARE_MESSAGE_MAP代码
#define DECLARE_MESSAGE_MAP() const _AFX_MSG *GetMessageMap();\
const _AFX_MSG *GetThisMessageMap();//声明获取消息函数
#define BEGIN_MESSAGE_MAP(thisClass,baseClass)\
thisClass::GetMessageMap(){return GetThisMessageMap();}\
thisClass::GetThisMessageMap(){const _AFX_MSG MessageMap[]={
//看到了吧?这个结构体数组正在赋值