在.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.   

    vc什么版本?2005 消息函数的格式为afx_msg LRESULT OnRecvData(WPARAM wP,LPARAM lp);
      

  2.   

    消息响应函数卸载DECLARE_MESSAGE_MAP()宏之前和之后都可以
      

  3.   

    你这里的错误提示是:missing "{"指向的那条语句??
      

  4.   

    OnRecvData的原型应该是“afx_msg LRESULT OnRecvData(WPARAM, LPARAM);”吧
      

  5.   

    错误提示说:missing '}' before ';'错误指向ON_MESSAGE(WM_RECVDATA,OnRecvData)这句
      

  6.   

    换成LRESULT 还是有错 啊。???
      

  7.   

    检查一下,包括BEGIN_MESSAGE_MAP、END_MESSAGE_MAP及两者之间的所有各行都不应该带“;”
      

  8.   

    BEGIN_MESSAGE_MAP、END_MESSAGE_MAP两者之间没有带“;”,上下也没有"{",但是怎么提示说missing "{"
    呢?
      

  9.   

    ON_MESSAGE(WM_RECVDATA,&CxxxDlg::OnRecvData)
      

  10.   

    1) 在头文件中,#define WM_RECVDATA WM_USER+1
    是不是这里啊  WM_USER是自用户定义消息中可利用的第一个,但是应用程序框架使用了其中的几个,一般都定义
    WM_USER + 5
    改一下试试看吧
      

  11.   

    BEGIN_MESSAGE_MAP、END_MESSAGE_MAP两者之间没有带“;”,上下也没有"{",但是怎么提示说missing "{"
    呢?
      

  12.   

    声明是在之前和之后没区别,详细可以看书深入浅出MFC。上面讲的很详细
      

  13.   

    DECLARE_MESSAGE_MAP()是MFC定义的一个宏,在里面定义了两个函数:GetMessageMap()和GetThisMessageMap()
    BEGIN_MESSAGE_MAP(thisClass,baseClass)的作用是,此时去定义GetMessageMap(),他返回GetThisMessageMap()。在GetThisMessageMap()里面,定义了一个数组,类型为_AFX_MSG,中间的ON_MESSAGE()实质上是在给结构体数组初始化。在这个宏里面有很多的"{",不小心就缺了一个"{",所以说,是ON_MESSAGE()这一句出了问题,也就在所难免了。
    还有,END_MESSAGE_MAP()也有可能没添加上去,END_MESSAGE_MAP()是给结构体数组进行最后复制,并返回这个数组。如果看到没有END_MESSAGE_MAP,请务必添加上去。
    如果不行,建议你重装VC。
    虽然说结贴了,结贴的原因是他们都不懂这里面的内部结构。
    我希望能对你有帮助
      

  14.   


    //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[]={
    //看到了吧?这个结构体数组正在赋值