while(!m_threadclose)
{
sockRecv = accept(sockAccept,(sockaddr *)&RecvAddr,&length);
if(INVALID_SOCKET == sockRecv)
{
               ........
} CFileDlg *pfileDlg = new CFileDlg;
pfileDlg->Create(IDD_RECEIVERFIEL_DLG);
::SendMessage(pfileDlg->m_hWnd , WM_RECVFILE , 0 , (LPARAM)&sockRecv);
pfileDlg->ShowWindow(SW_SHOW);

}为什么,子窗体只显示出个框架然后就死在那了。

解决方案 »

  1.   

    MFC封装了一个线程类CWinThread 
    所有的MFC应用程序(对话框,单文档,多文档)中的主应用程序CWinApp都从CWinThread继承,即MFC应用程序的主线程在CWinApp中。 
    MFC线程的创建方法 
    AfxBeginThread全局函数 
    AfxBeginThread全局函数可以创建一个CWinThread线程类,启动线程,并且返回CWinThread对象指针 
    得到CWinThread对象指针后可以控制线程的挂起(SuspendThread函数),恢复(ResumThread函数), 线程函数返回的时候,该对象被自动销毁。 
    直接声明CWinThread对象,并且调用它的方法CWinThread::CreateThread来创建线程。 
      

  2.   

    可以你的socket通信线程发送一个消息给你的主线程 ,也就是UI线程,让UI线程的消息响应函数中,再弹出你的对话框