是你模拟的不对,线程是windows调试的最小单位,他们是单独被调度的,之所以出现这种现象可能是AfxMessageBox的内部实现机理倒置的(具体的没研究过)
你把线程函数改成下面两种任一就可以了UINT thread1(LPVOID p)
{
for(int i=0;i<100;i++)
MessageBeep(-1);
return 0;
}UINT thread1(LPVOID p)
{
::MessageBox(NULL,"begin","ok",MB_OK);
return 0;
}

解决方案 »

  1.   

    AfxMessageBox是要DoModal的而你在Modal里Sleep了
      

  2.   

    MFC把线程分为界面线程和工作线程,你是起了个工作线程,但却要让他支持消息循环,
    这就比较麻烦了,如果你需要有界面且支持消息循环为何不起一个界面线程?也用不了
    几句就可搞定,何乐而不为?
      

  3.   

    表面是AfxMessageBox的问题,实际上是messagebox的问题,AfxMessageBox在内部调用了messagebox,只不过hwnd参数用了当前窗口,而messagebox在弹出窗口前是要对父窗口进行处理的,但此时父窗口已经sleep了,当然不行了
      

  4.   

    to : arloan(泡泡) 
    是可以,如果你现在在上海,要去北京,让你先到深圳再转机,你干吗?
      

  5.   

    http://www.csdn.net/expert/topic/544/544226.xml
      

  6.   

    http://www.csdn.net/expert/topic/544/544226.xml