在MFC中,打开一个对话框可以通过调用一个类CExam,然后用该类创建一个对象CExam cc,然后调用cc.DoModal();,将这两个语句放入一个函数中即可打开,但一般这两个语句都是放在诸如OnLButtonDown(),OnButton()之类的函数中,也就是说当点击某个键时它就会打开这个对话框,而我现在想实时的调用该对话框,把这两个语句放在OnTimer()中,通过一个条件来判断打不打开此对话框,假如我这样写
if(ok)
{
   CExam cc;
   cc.DoModal();
   ok=1;
}
我的意思是想让它打开一个对话框就行了,但是事与愿违,执行时它不断打开对话框,以至于关都关不掉!请教怎样才能达到使用条件打开一个对话框,同时只打开一个?

解决方案 »

  1.   

    先关闭定时器,然后再打开,大概可以如下:
    if(ok)
    {
       KillTimer(...);   CExam cc;
       cc.DoModal();
       ok=1;   SetTimer(...);
    }
      

  2.   

    if(ok && openflag)
    {
       CExam cc;
       openflag  =  false;
       cc.DoModal();
       openflag  =  true;
       ok=1;
    }
      

  3.   

    to  SoLike(是我) 
    先谢了!用你的方法我试过了,但有一个问题,当打开一个对话框后,快速的将其关掉可行,但是打开后如果过一会儿再打开就有可能要关两次或三次,这是怎么回事?怎样才能解决?
      

  4.   

    我用SoLike(是我)的语句
    if(ok)
    {
       KillTimer(...);   CExam cc;
       cc.DoModal();
       ok=1;   SetTimer(...);
    }
    打开了一个对话框,
    但是这个对话框第一次打开时要关两到三次才能关掉,  以后只要关一下就关掉了(就是点击对话框中的确定按钮)。这是不是线程不统一的缘故?怎么样才能解决?
      

  5.   

    static bool show=false;
    if(!show)
    {
       CExam cc;
       show=true;
       cc.DoModal();
       show=false;
    }