不知道下面这两个代码大家用过没有
http://www.codeproject.com/docking/pinnabledock.asp?df=100&forumid=29732&select=1807908&msg=1807908

http://www.vckbase.com/document/viewdoc/?id=1074
在这两个程序里按escape和enter会出现莫名奇妙的对话框消失的问题,有解决的办法么?

解决方案 »

  1.   

    是对话框吧,接管OnOK和OnCancel了么?
      

  2.   

    重载OnOk,OnCANCEL事件,直接return TRUE
      

  3.   

    重载OnOk,OnCANCEL事件,直接return TRUE
      

  4.   

    按下ESC和ENTER键时禁止关闭对话框
       
        方法一:     (1) 重载OnCancel和OnOk,屏蔽其中的CDialog::OnCancel()和CDialog::OnOk();
         (2) 添加以下代码 
         void CTest6Dlg::OnSysCommand(UINT nID, LPARAM lParam)
         {
             if ((nID & 0xFFF0) == IDM_ABOUTBOX)
              {
                 CAboutDlg dlgAbout;   //if you have an about dialog
                  dlgAbout.DoModal();
              }
              else if ((nID & 0xFFF0) == SC_CLOSE)
              {
                  //用户点击右上角"X"
                  EndDialog(IDOK);  
           
              }
              else
              {
                  CDialog::OnSysCommand(nID, lParam);
              }
         }    方法二:     BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg)
         {
              if ( pMsg->message == WM_KEYDOWN )
              {
                   switch(pMsg->wParam)
                   {
                   case VK_ESCAPE:
                    return TRUE; //直接返回TRUE
                    break;
                   case VK_RETURN:
                    return TRUE;
                    break;
                   }
              }
              return CDialog::PreTranslateMessage(pMsg);
         }