在一个MFC对话框的程序中, 在执行某个计算时我想在最前端弹出一个提示对话框,那这个对话框该如何生成?MessageBox肯定不行,在MessageBox返回之前程序是不往下执行的。无模式对话框也不行,因为在弹出无模式对话框时用户仍可以点击主对话框上的按键。

解决方案 »

  1.   

    用多线程启动一个worker thread来完成你的计算.然后弹出一个模态对话框来阻止用户与界面的交互
      

  2.   

    LZ的逻辑有点混乱了模式对话框肯定是堵塞的,程序弹出模式对话框,肯定说明之后的程序中需要使用这个对话框中输入的数据,才能继续执行。如果主线程并不需要等待这个对话框关闭,就可以独立执行,那么说明非模式对话框也能满足需求。我认为LZ的想法其实就是只能弹出一个对话框,然后主线程还能继续运行。这个就比较容易了,实现对话框的单实例就可以了MyDlg : CDialog
    {
    private:
         MyDlg *m_Instance =  NULL
         CDialog();
    public:
         static MyDlg *ShowDlg()
         {
              if(m_Instance == NULL)
              {
                   m_Instance = new MyDlg();
               }
               else
               {
                    return m_Instance;
               }
         }
    }
      

  3.   

    关键问题是我希望在弹出一个提示任务正在执行的对话框时, 不让用户能够点击住对话框
    的其他button或控件。