取消MFC對話框ESC和回車鍵關閉對話框功能

一般都兩種方法,一種是回車鍵之類的響應消息;另一種就是重寫OnOK和OnCancel函數,我喜歡用後一種方法,實現如下:

1. 在頭文件聲明

public:
    virtual void OnOK();
    virtual void OnCancel();

2.在原文件實現:

void CXX::OnOK()
{
    CWnd* pWnd = GetFocus();
    if (GetDlgItem(IDOK) == pWnd)
    {
        CDialog::OnOK();
        return;
    }
}
void CXX::OnCancel()
{
    CWnd* pWnd = GetFocus();
    if (GetDlgItem(IDCANCEL) == pWnd)
    {
        CDialog::OnCancel();
        return;
    }
}

3.此時回車鍵還是能關閉,因爲主頁的確定按鈕功能在,刪除或者禁用即可;

4.這時候點對話框上的關閉按鈕都不能關閉對話框了,需要添加一個OnClose消息函數,添加方法如下:

資源視圖 打開對話框界面 右鍵屬性 點擊消息按鈕  給WM_CLOSE添加消息響應函數,OnClose,實現如下:

void CpatientInfoRecordDlg::OnClose()
{
    // TODO: 在此添加消息處理程序代碼和/或調用默認值
    CDialog::OnOK();
    CDialogEx::OnClose();
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章