在一个Windows应用程序中有两个线程,线程A创建了3个窗口,记作Win_A1,Win_A2,Win_A3,然后线程A创建了线程B,线程B创建了2个窗口,记作Win_B1,Win_B2;最后线程A与线程B分别进入了消息循环。根据Windows核心编程中讲到的知识,线程A的消息循环只能接收到发往Win_A1,Win_A2,Win_A3这三个窗口的消息,而线程B的消息循环只能接收到发往Win_B1,Win_B2这两个窗口的消息。
问题是有一个进程外的线程,通过获取线程A的ID号并调用PostThreadMessage()发消息,那么线程A对这个消息的处理是怎么样的?是处理处理一次还是三次呀?

解决方案 »

  1.   

    是处理处理一次还是三次呀?LZ意思是消息会不会发到3个窗口去吧,不会的
    PostThreadMessage发送线程消息不是窗口消息,不会分发到窗口处理函数的
    只能在消息循环里处理
    检查lpMsg.hwnd == NULL
      

  2.   

    windows 接收消息机制是根据窗口接收的。
    这一点从 控制台程序无法接收消息就能看出来没有窗口的 程序就收不到postmessage的消息,使用PostThreadMessage函数原型:BOOL PostThreadMessage(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM IParam);就看那个idthread了、
      

  3.   

    不知道,关注。
    写个测试程序就知道了,要看看是否会发送系统自定义的消息,如WM_PAINT之类的哦。
      

  4.   

    回复于:2012-09-28 11:15:58windows 接收消息机制是根据窗口接收的。
    这一点从 控制台程序无法接收消息就能看出来没有窗口的 程序就收不到postmessage的消息,使用PostThreadMessage函数原型:BOOL PostThreadMessage(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM IParam);就看那个idthread了、 
      

  5.   

    我用的是Win32工程,不是控制台应用程序。