手工加载消息映射到 .cpp
BEGIN_MESSAGE_MAP(CPicFileDlg, CFileDialog)
//{{AFX_MSG_MAP(CPicFileDlg)
ON_WM_CLOSE()
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

解决方案 »

  1.   

    如果在基类是CWnd类(CDialog、CView、框架)中,直接调用SendMessage、PostMessage将在本类中处理消息,如果用API函数SendMessage、PostMessage(在函数前加::)可以发送到你传递参数的类中处理(参数hWnd指明了窗口句柄)。
      

  2.   

    在一个地方PostMessage()自定义消息了,消息处理函数在哪个类里都行吗? 
      

  3.   

    在一个地方PostMessage()自定义消息了,消息处理函数随便在哪个类里都行吗? 
      

  4.   

    窗口类才行,如CWnd或从CWnd中继承的类。
      

  5.   

    重贴一遍:
    HBRUSH CRrrView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
        HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
        if (pWnd->GetDlgCtrlID() == IDC_EDIT2)
        {
           pDC->SetTextColor(RGB(255, 0, 0));
           pDC->SetBkMode(TRANSPARENT);
           return hbr;
        }
        return hbr;}
      

  6.   

     API原型:
        LRESULT ::SendMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam);
        BOOL ::PostMessage((HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam);    MFC CWnd原型:
        LRESULT SendMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
        BOOL PostMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);    可见,MFC中只是简单封装了一下,其中的HWND就是this所指的对象的HWND
        所以当你在一个CMyDialog里调用SendMessage(WM_MYMSG)时,实际上是给自己发了一个消息,
        所以,其消息处理函数,也应该定义在这个CMyDialog中,    如果你想在CMyDialog给另一个CYourDialog发消息,应该::SendMessage(YourDiaog的HANDLE, WM_YOURMESSAGE, 0, 0);
        当然对应的消息处理函数定义在CYourDialog中.-----作为对我贴错贴子的补偿!
      

  7.   

    你在调用BOOL PostMessage(
      HWND hWnd,      // handle to destination window
      UINT Msg,       // message
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    );时,必须在持有句柄Hwnd的类中编写消息响应函数