主线程是一个CDialog1,子线程是一个CWinThread,CWinThread被调用后生成一个CDialog2,
在CDialog1中使用postmessge给CDialog2发送消息,dlg2接受到消息后是一个while(1)的循环,此时CDialog1为什么也挂了,不能操作了?
如果是PostThreadMessage发送消息给CWinThread,处理消息也是死循环,CDialog1却可以正常操作,这是为什么?高手帮忙解答啊~!
在CDialog1中使用postmessge给CDialog2发送消息,dlg2接受到消息后是一个while(1)的循环,此时CDialog1为什么也挂了,不能操作了?
如果是PostThreadMessage发送消息给CWinThread,处理消息也是死循环,CDialog1却可以正常操作,这是为什么?高手帮忙解答啊~!
解决方法:如果2个界面有互操作的,就在另外一个线程中启动DLG2.这样就不会死了.如果2个界面互相取得句柄,那么就可以通信了
谢谢tiger9991的回复
我是在CWinThread中启动的DLG2啊,CWinThread是另外的线程啊,为什么也有错误呢?
http://download.csdn.net/source/2760249
你这句代码::PostMessage(m_dlg.GetSafeHwnd(),WM_MSG_HELLO,0,0);是能执行死循环,但是是在主线程里执行的!不信你可以跟踪下线程的ID,这样其实你那新的线程开与没开没什么区别
正确的做法是pThread->PostThreadMessage(WM_MSG,NULL,NULL)
发现一个问题,你发消息是向对话框发的,但是自定义消息的处理函数却不是写在对话框类中的,而是写在线程类中的。