在我主线程的CMainFrame中有消息响应函数:
afx_msg void OnStepArrive(WPARAM wParam,LPARAM lParam);
定义的消息映射形式为:
ON_MESSAGE(STEPDEBUGARRIVE, OnStepArrive)
函数原型为:
void CMainFrame::OnStepArrive(WPARAM wParam, LPARAM lParam)
{
    ....
}
在另一个线程中,使用代码:
AfxGetApp()->m_pMainWnd->PostMessage(STEPDEBUGARRIVE, 1);
向主窗口发消息,可在CMainFrame::OnStepArrive中下断点却没有中断,即主窗口中没有接收到这个消息,而如果使用:
AfxGetApp()->m_pMainWnd->PostMessage(STEPDEBUGARRIVE, 0);
则可以中断,即接收到消息.
将wParam设成其它值也收不到消息,why

解决方案 »

  1.   

    afx_msg void OnStepArrive(WPARAM wParam,LPARAM lParam);
    =>
    afx_msg LRESULT OnStepArrive(WPARAM wParam,LPARAM lParam);
      

  2.   

    还是不行,看来与返回值类型没有关系.
    我以前用的就是SendMessage,不行了才换PostMessage的.
    使用PostMessage,返回值为0,表示消息没有post成功.
    调用GetLastError()后,错误码为0x487,意为:"消息只能与同步操作一起使用"。不知具体是什么意思?
      

  3.   

    最后发现是定义的自定义消息所使用的值不对,应该定义为:
    #define STEPDEBUGARRIVE (WM_USER+101)
    这种形式,即一定要使用WM_USER以后的值,以前我是随便用一个值:)