项目有一个主对话框,然后我生成一个进度条对话框用来显示处理进度,我另外生成了个线程进行程序处理工作,这个线程发消息到主线程更新进度条。问题是,我那个线程结束后需要关掉那个进度条对话框,但不管在哪个地方调用关闭wincore里全会出现异常。
我现在的方法是进度条对话框响应一个关闭消息,然后调用OnOK,那个辅助线程发送一个关闭消息,然后对话框响应消息后关闭。
但还是出现运行异常。到底怎么关闭对话框啊?

解决方案 »

  1.   

    提示错误是debug assert那个异常,提示wincore的4383行出错,我看了下是RunModalLoop(DWORD dwFlags)里的 // phase2: pump messages while available
    do
    {
    这地方出错 ASSERT(ContinueModal()); // pump message, but quit on WM_QUIT
    if (!AfxPumpMessage())
    {
    AfxPostQuitMessage(0);
    return -1;
    }是因为还有其他代码调用这个对话框么?我调试跟不到代码,调试到afxWinProc就调试不下去了
      

  2.   

    LRESULT CProgressDlg::OnCloseProgressWindow(WPARAM wParam, LPARAM lParam)
    {
       CDialog::OnOK();
       return true;
    }
    我大概知道为啥了,我这个是进度条里的消息响应函数,OnOK后面是不是不能再跟代码了,对话框没了,是不是就不能再返回什么了不这么做怎么相应退出消息啊。貌似只能用消息做,模态的一打开就锁死了啊谢谢各位