我在CPropertySheet中 AddPage(&m_CProperpag)//m_CProperpag是CPropertyPage类
后,运行程序挺好的,可是只要一不小心碰了回车程序就退出,如何要求用户选择"关闭"后再退出?BOOL bResult = CPropertySheet::OnInitDialog();
{
// TODO: Add your specialized code here CWnd* myCtl;
myCtl = CWnd::GetDlgItem(IDOK);
myCtl->ShowWindow(false);
myCtl = CWnd::GetDlgItem(IDHELP);
myCtl->ShowWindow(false);

         CWnd::SetDlgItemText(IDCANCEL,"关闭");         CWnd::Default();
}

解决方案 »

  1.   

    重载PreTranslateMessage(MSG* pMsg) :
    if((pMsg->message == WM_KEYDOWN)&&(pMsg->wParam==VK_RETURN))return TRUE;
      

  2.   

    同意akiko(弥弥)在消息解释之前先截获这个消息,然后直接返回true就可以了!
      

  3.   

    BOOL CCXXX::PreTranslateMessage(MSG* pMsg) 
    {
        if(pMsg->message == WM_KEYDOWN)
        {
            switch(pMsg->wParam)
            {
            case VK_RETURN://屏蔽回车
                return TRUE;
            case VK_ESCAPE://屏蔽Esc
                return TRUE;
            }
        }
        return CDialog::PreTranslateMessage(pMsg);

      

  4.   

    重载OnOk()和OnCancel(),
    将其中的OnOk();和OnCancel();注释掉
      

  5.   

    FROM daylight1980(红星照我去战斗) ( ) 信誉:100 1、重载OnOk()和OnClose(),OnCancel().
    在OnClose()中DestroyWindow()
    2、重载对话框的PreTranslateMessage()函数,在函数中进行如下处理
    BOOL CMyDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if(pMsg->message==WM_KEYDOWN)
    {
    switch(pMsg->wParam){
    case 0x0d://回车键
    return false;
    case VK_ESCAPE://esc键
    return false;
    }
    }

    return CDialog::PreTranslateMessage(pMsg);
    }