我现在在用VC写一个局域网聊天程序,在主对话框A的初始化函数里创建了一个连接线程,ConnectThread=CreateThread(NULL,0,ConnectThreadFunc,this,0,NULL);
ConnectThreadFunc是连接线程函数,此函数是在自己添加的头文件和CPP文件里定义和实现的的
DWORD WINAPI ConnectThreadFunc(LPVOID pParam)
{
在此函数内部我要弹出一个对话框B(假设其是CBDlg),
因此在此函数内部我写的几行代码是:
CBDlg dlg;
dlg.DoModal();(其余代码省略);
}没有那几行代码的话运行是正确的,添上之后在运行到那个地方就会出错,
Debug Assertion Failed!
File:wincore.cpp
line:884
请大家帮帮忙,这个问题要怎么解决啊。

解决方案 »

  1.   

    资源需要切换,用这个宏试试
    AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
      

  2.   

    我上面用的好像是工作线程,如果用界面线程应该可以,
    把CBDlg dlg;
    dlg.DoModal();
    用CWinThread *pThread=AfxBeginThread(RUNTIME_CLASS(CUIThread));代替
    CUIThread是一个类,在这个类里面实现弹出对话框,不过,在ConnectThreadFunc函数中,怎么得到AfxBeginThread中弹出的对话框的句柄呢?