我在发送消息窗口MyMessageDlg1.h中,定义#define WM_MY_MESSAGE (WM_USER+100),然后在一个button中这样写
void CMyMessageDlg1::OnButtonTest() 
{
    PostMessage(WM_MY_MESSAGE, 0, 0);   
}
在接收窗口MyMessageDlg2.h中也定义了#define WM_MY_MESSAGE (WM_USER+100)
并定义消息映射函数
protected:
// Generated message map functions
//{{AFX_MSG(CMyMessageDlg2)
virtual BOOL OnInitDialog();
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); 
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
在MyMessageDlg2.cpp中声明
BEGIN_MESSAGE_MAP(CMyMessageDlg2, CDialog)
/{{AFX_MSG_MAP(CMyMessageDlg2)
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
并添加函数
LRESULT CMyMessageDlg2::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
 AfxMessageBox("OnMyMessage!");
 return 0;

但是为什么点击yMessageDlg1的test按钮没有弹出OnMyMessage!呢?

解决方案 »

  1.   

    PostMessage要给出目标窗口的窗口句柄。不然就是给本窗口发消息。
      

  2.   

    PostMessage(WM_MY_MESSAGE, 0, 0);   这里要指定MyMessageDlg2的句柄比如PostMessage(MyMessageDlg2.GetSageHwnd(),WM_MY_MESSAGE, 0, 0);
      

  3.   

    郁闷。这样写还是不好用MyMessageDlg2 aa; ::PostMessage(aa.GetSafeHwnd(), WM_MY_MESSAGE, 0, 0);
      

  4.   

    CMyMessageDlg2 就是我要收到消息的那个窗口的类啊