我在我的MFC控件里面自己定义了一个事件,在BEGIN_MESSAGE_MAP里面定义了,
在类里面的Message maps也定义了,并且也定义了消息名字的宏,可是当我通过PostMessage发送小溪的时候,我的消息接收函数总是不能激活,这是怎么回事?还需要在哪里设置吗?

解决方案 »

  1.   

    在CPP中映射,把你的消息ID与消息函数映射!
      

  2.   

    这是在头文件中
    // Message maps
    //{{AFX_MSG(CVierCallCtrl)
    //}}AFX_MSG
    afx_msg LPARAM OnFindGatekeeper(WPARAM wParam, LPARAM lParam);
    DECLARE_MESSAGE_MAP()在CPP文件中
    BEGIN_MESSAGE_MAP(CVierCallCtrl, COleControl)
    //{{AFX_MSG_MAP(CVierCallCtrl)
    //}}AFX_MSG_MAP
    ON_MESSAGE(WM_FINDGATEKEEPER, OnFindGatekeeper)
    ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
    END_MESSAGE_MAP()
      

  3.   

    WM_FINDGATEKEEPER 要定义一下吧
    example:
    #define WM_FINDGATEKEEPER WM_USER + 100
      

  4.   

    那还要看看你在哪里 PostMessage 了
      

  5.   

    我是在一个按钮点击以后PostMessage(WM_FINDGATEKEEPER);
      

  6.   

    使用GetSaftHwnd和::PostMessage(hWnd,WM_FINDGATEKEEPER),hWnd为使用GetSafeHwnd获得的接收消息的控件或者其他的类的HWND!
      

  7.   

    vcleaner(我没做大哥已经很久了.......)   我用::PostMessage(hWnd,WM_FINDGATEKEEPER),好像还需要另外两个参数吧?wpara和lpara,这两个应该怎么得到呢?
      

  8.   

    加0,0
    afx_msg LPARAM OnFindGatekeeper(WPARAM wParam, LPARAM lParam);
    =>
    afx_msg LRESULT OnFindGatekeeper(WPARAM wParam, LPARAM lParam);
      

  9.   

    WPARAM和LPARAM可以使用MAKEXXXXXX宏得到,XXXXX就是WPARAM或者WPARAM
      

  10.   

    解决了这个问题,覆盖COleControl的OnSetClientSite,结贴。不过出现了新问题,:(