CWaitDlg wDlg;  
wDlg.Create(IDD_WAIT_DIALOG,this); 
wDlg.ShowWindow(SW_SHOW); //弹出等待对话框对话框初始化时,需要很长时间,想做一个等待对话框,在运行初始化代码之前添加以上代码,在初始化结束后,运行wDlg.EndDialog(0);将等待对话框关闭;据说以上做法是有问题,可是问题在那呢?

解决方案 »

  1.   

    CWaitDlg wDlg; 局部变量,当上述代码所在函数执行完毕之后,该变量就会销毁,所以该对话框是无法显示出来的。
    CWaitDlg *pDlg = new CWaitDlg();  
    pDlg ->Create(IDD_WAIT_DIALOG,this); 
    pDlg ->ShowWindow(SW_SHOW); //弹出等待对话框
    这就可以了,因为实在堆上分配内存,需自己释放。
      

  2.   

    你可以在OnInitDialog中,你可以开启1个定时器,然后在定时器触发事件中EndDialog(0);即可
      

  3.   

    CWaitDlg *pDlg = new CWaitDlg();   
    这个不同样是局部指针?
      

  4.   

    CWaitDlg wDlg,设置为全局变量试一下,我记得在孙鑫的20讲里有一课,就是讲这个问题的
      

  5.   

    你的意思是: 看到对话框,但是马上消失,一闪而过,对吧?
    如果是这样话加上以下代码:
     MSG msg;while(GetMessage(&msg,NULL,0,0))   
    {   
    TranslateMessage(&msg);   
    DispatchMessage(&msg);   
    }