如在主界面线程中创建两个界面线程A、B,然后在A和B中创建两个非模式对话框AD、BD,在AD的按钮处理函数中调用Sleep,A线程挂起,与此同时BD竟然也停止响应鼠标键盘输入,我调试跟踪发现,其实B线程GetMessage可以接收到WM_PAINT等消息并进行处理,只是时接受不到鼠标键盘输入,所以看起来BD也就不响应用户输入了,有人知道是怎么回事吗?

解决方案 »

  1.   

    问题解决了,两个对话框线程由于mfc默认行为,在创建对话框时即使传入NULL父窗口,父窗口还是被设置为应用程序主窗口,如此来相当于AttachThreadInput到主线程了,所以两线程没有自己的用户input消息队列(注意:消息队列分多种)
      

  2.   

    是不是CPU资源被那个线程耗完了哦
      

  3.   

    焦点在不在那两个窗口上,没有焦点就不可能收到事件,WM_PAINT是自发的,和外部事件不一样。