例如在
DWORD RecThread(void lpParam)
{
   .....;
   AfxMessageBox(".....");
   .....
}为什么此时的AfxMessageBox不能弹对话框呢,请问各位这种问题怎么解决

解决方案 »

  1.   

    用MessageBox可以弹出的通常来讲,不要在线程里面使用任何关于界面的操作
      

  2.   

    可以弹出来的,要调试数据的话最好用TRACE :)
      

  3.   

    可以弹出来,但会有问题,AfxMessageBox可以处理消息循环,这样工作线程也能够处理消息循环。但是当点击AfxMessageBox的确定按钮时,它却并不能得到响应,因为消息没有投递到工作线程。除非在GUI线程将其转发给工作线程,可为什么要这样做呢?还是GUI的归GUI,线程的归线程,在工作线程中不要直接调用GUI方法,可以给GUI线程发消息,或者使用信号量,事件,都可以通过这些来间接让GUI得到响应。
      

  4.   

    对于普通线程来说,不需要使用AfxMessageBox以窗体的形式向用户显示消息.但是如果你希望在线程中显示对话框时,需要在线程中创建消息循环.因为任何窗体的响应,包括你单击窗体,绘制窗体,关闭窗体都得有机会响应,一个消息循环专门处理这个响应.而对于一个普通线程来说,如果里面在不加入消息循环的前提下就显示出MessageBox,则这个对话框会因为不能处理消息而无法响应,给用户的感觉就是白哗哗的窗体.
      

  5.   

    工作线程里不要使用对话框的方式提示信息。这里看来你是用AfxMessageBox来调试的,可用MessageBox替换,AfxMessageBox是阻塞的,影响调试效果。
      

  6.   

    要调试数据的话最好用TRACE.
    如果是要显示窗体,可以在工作线程中发一个自定义消息给主窗体,在主窗体中处理弹出其他窗体的事情。
      

  7.   

    好像是在调试线程吧,
    最好用log