我想根据条件在对话框打开时自动关闭它,并使它的返回值是IDOK,但是我在OnShowWindow事件中调用OnOK() 会出错,这是怎么回事,应该如何实现好呢?

解决方案 »

  1.   

    在该对话框中在OnInitDialog中加入SetTimer(1,5000,NULL);在OnTimer事件中加入
    OnOK();
    即可。
    重载DestroyWindow, 在里面再多加一句KillTimer(1);他就在打开后5秒自动关闭。
      

  2.   

    多问一句,在OnShowWindow事件中调用OnOK() 会出错,这是怎么回事?
      

  3.   

    大约是窗口还没有创建好, ASSERT(ISWINDOW())出错.
      

  4.   

    ::SendMessage(hwndDlg,WM_COMMAND,IDCANCEL,0) //hwndDlg 为对话框的句柄
      

  5.   

    ASSERT(ContinueModal());wincore.cpp中4556行执行onOk时,dialog的消息循环仍在运行,所以会断言。
      

  6.   

    具体为什么要设断言你感兴趣的话可以追到mfc源代码中自己分析