我做了一个modeless的对话框
这个对话框点击cancel的时候并没有释放掉,
下次打开实际上是让它再show出来
如下:
    if(m_pMyDlg == (MyDlg*)NULL) {
        m_pMyDlg = new MyDlg((CWnd*)this, this);
        if(! m_pMyDlg->Create(IDD_MYDLG NULL)) {
            AfxMessageBox("Dialog Creation failure");
            m_pMyDlg = (MyDlg*)NULL;
            return;
        }
        m_pMyDlg->ShowWindow(SW_SHOWNORMAL);
    }
    else {
        //
        //    The dialog is already up
        //
        m_pMyDlg->ShowWindow(SW_SHOWNORMAL);
    }现在的问题是我打开dlg第一次按回车不会关掉dlg,而是调用
某个按钮的动作,
但是当我按cancel关掉后,下次打开dlg,再按回车就会自动关掉dlg,
并且这时没有调用OnCancel
为什么呢,如何能按回车不关掉dlg呢

解决方案 »

  1.   

    对话框的默认按键消息是:
    按 ENTER 键就是确定,即相当于按了 IDOK 按钮
    按 ESC 键就是取消,即相当于按了 IDCANCEL 按钮即使你在资源里把 IDOK 按钮删除也没用。
    MFC 我不太熟悉,不过在 SDK 中,只要我不响应 IDOK 消息就没事了:)
      

  2.   

    1. OnOK 里面不要调用CDialog::OnOK,直接返回
    2. PretranslateMessage,过滤掉回车按键事件
      

  3.   

    to  AlbortEinstein() 
    有个性,
    我不是这么小气的,
    因为以前给的分数多,但是答案却让我没法把分数给某一个人
    下面这个帖子我就给了100分,但是没有好的答案
    http://community.csdn.net/Expert/topic/4255/4255867.xml?temp=.1030084
    感谢楼上几位的方法
    我会try的