一个比较怪异的问题,做的一个窗口测试的程序,有个button是用于退出结束这个程序窗口的,IDOK以前的对应的代码是:
void CVpServerDlg::OnBnClickedOk()
{
}
点击按钮可以正常退出。可是后来做了一些改变dialog背景色的动作,再进行测试的时候不知道什么原因,点击这个的时候就无法退出了,将程序改为原来的,重新测试也是一样的结果。
后来在里面加了代码,改为:
void CVpServerDlg::OnBnClickedOk()
{
if(   MessageBox("确认退出",   "Exit",   MB_YESNO   |   MB_ICONQUESTION  ) == IDYES)
{
this->PostMessage(   WM_CLOSE   );
return;
}
}
重新测试,还是没反应,无法退出。刚接触MFC,还请大侠们指点下

解决方案 »

  1.   

    this->PostMessage(   WM_CLOSE   );把这句换成:CDialog::OnOK()或CDialog::OnCancel()试试!应该不会出现你说的那种情况!
      

  2.   

    To cdpc0202() ( ) 是界面没有退出,还在正常运行。
    goxigo(星) ( ) :你的方法确实可以。我搞不懂的是为什么以前什么都没有加的时候可以正常退出,改了什么颜色后加了 WM_CLOSE  也不行?
      

  3.   

    如果用:SendMessage( WM_CLOSE);说不定还可以! 由PostMessage发出的消息并没有被急时处理!
      

  4.   

    SendMessage( WM_CLOSE);
    这个也不行,就是搞不懂这个到底是为什么为什么用 CDialog::OnOK()就可以了呢?
      

  5.   

    发送了WM_CLOSE消息,还得调用DestroyWindow();WM_CLOSE并没有消毁窗口
      

  6.   

    是的,对这个不了解,因为才接触MFC几天的时间。以前没有搞过这个。哪位帮忙推荐书看一下?