我新建了一个基于对话框的工程,
按回车就会关闭窗口。解决办法我也知道是重载onok函数~~
但是我把系统给的两按钮 确定 取消 delete掉了
然后我按回车仍然会关闭窗口~~~
怎么解决~~~
求教求教~~~

解决方案 »

  1.   

    我特意去实验了下,没有问题啊 ,不会关闭窗口
    OnOk中CDialog::OnOK()这句话要注释掉
      

  2.   

    1 最简单的办法:添加一个不可见的按钮,设为对话框的默认按钮即可
    2 重载对话框的PreTranslateMessage消息处理BOOL CSIMDlg::PreTranslateMessage(MSG* pMsg) 
    {
     // TODO: Add your specialized code here and/or call the base class
     if( pMsg->message ==WM_KEYDOWN)
     {
      if(pMsg->wParam == VK_ESCAPE||pMsg->wParam == VK_RETURN)
       return TRUE;
     }
     return CDialog::PreTranslateMessage(pMsg);
      

  3.   

    我使用的方法 是 在.h中加
    afx_msg LRESULT  OnGetDefID(WPARAM wp, LPARAM lp);在.cpp文件中
    BEGIN_MESSAGE_MAP(CXXDlg, CDialog)
    //{{AFX_MSG_MAP(CXXDlg)

    ON_MESSAGE(DM_GETDEFID, OnGetDefID) //<-这个位置加它。 //}}AFX_MSG_MAP
    END_MESSAGE_MAP()然后在下边添加处理LRESULT CXXDlg::OnGetDefID(WPARAM wp, LPARAM lp)
    {
    return MAKELONG(0,DC_HASDEFID);
    }
      

  4.   

    方法一:把这两个按钮隐藏;
    方法二:把这两个按钮的Tab Order 顺号设为最大;
    方法三:映射它的函数OnOK()和OnCancel(),并注释掉其中的CDialog::OnOK()和CDialog::OnCancel()
      

  5.   

    BOOL CSIMDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if( pMsg->message ==WM_KEYDOWN)
    {
    if(pMsg->wParam == VK_ESCAPE||pMsg->wParam == VK_RETURN)
    return TRUE;
    }
    return CDialog::PreTranslateMessage(pMsg);