因为小弟要处理两个自定义消息,所以采用下面的处理方法,可不知道哪里出问题了,小弟用PostMessage发送的消息在自定义消息处理函数中怎么也获取不到,而且PostMessage也发送成功了。1、在CNewGPRSDlg.h文件的//{{AFX_MSG(CNewGprsDlg)和//}}AFX_MSG之间添加代码afx_msg LRESULT OnMessageManager(WPARAM wParam, LPARAM lParam);2、在CNewGPRSDlg类(对话框类的主窗口)中实现自定义消息,消息原型为  
LRESULT  CNewGPRSDlg::OnMessageManager(WPARAM  wParam,  LPARAM  lParam)  
{......} 
3、在CRWSock中定义自定义消息代号  
#define  WM_ONLINE_MESSAGE (WM_USER+102)  
 
4、在CRWSock的头文件中添加以下代码  
BEGIN_MESSAGE_MAP(CRWSock, CSocket)
   //{{AFX_MSG_MAP(CRWSock)
   ON_MESSAGE(WM_ONLINE_MESSAGE, OnMessageManager)    //此行代码是我添加的
   //}}AFX_MSG_MAP
END_MESSAGE_MAP()
 
5、在CRWSock的一个方法中调用自定义消息,代码如下  
   HWND m_wnd;
   m_wnd=FindWindow(NULL,"MyWindow");   //MyWidnow是对话框的标题名
   if (m_wnd!=NULL)
   {
    if (PostMessage(m_wnd,WM_ONLINE_MESSAGE,(WPARAM)CMD,(LPARAM)this)<=0)
      {
AfxMessageBox("发送消息失败!");
      }
    } 
PostMessage在发送消息时返回值是大于0的值说明发送成功了,可为什么OnMessageManager方法收不到呢?请各位朋友帮忙看看是哪里出错了?

解决方案 »

  1.   

    我已经解决了此问题,用的流程不一样,上面所用的流程在对话框类中好像不能用,但使用RegisterWindowMessage的方式只能处理一个自定义消息,对话框中能否处理两种以上的自定义消息呢?
      

  2.   

    改用 SendMessage 测试一下。处理消息的函数 MesssageBox 一下。看看是否真的接收到了。如果收到的话,我就不知道该如何处理了。如果没有收到。可能是 窗口句柄 参数错误。或者消息代码不正确