MFC中Dialog的Enter鍵、Esc鍵、關閉按鈕的消息處理


工作中沒有小事:點石成金,滴水成河,只有認真對待自己所做的一切事情,才能克服萬難,取得成功。

https://blog.csdn.net/hisinwang/article/details/45751625

https://blog.csdn.net/OneTrianee/article/details/90290486

 

在MFC對話框中,經常會碰到按Enter或Esc鍵,對話框會被關閉的現象。

Enter鍵的處理流程如下:

1.如果對話框有按鈕擁有焦點 ,響應該按鈕的單擊事件 ,如果按鈕ID為IDOK,並且沒有事件響應函數,則執行函數OnOK()

2.否則執行函數OnOK()

Esc鍵的處理流程:

1.執行OnCancel()

關閉按鈕的處理流程:

1.找到消息(WM_CLOSE)的響應函數則執行

2.否則執行OnCancel()

我們查看源碼:CDialog的OnOK和OnCancel的代碼如下,都是關閉對話框

BEGIN_MESSAGE_MAP(CDialog, CWnd)  
  ON_COMMAND(IDOK, &CDialog::OnOK)  
  ON_COMMAND(IDCANCEL, &CDialog::OnCancel)  
END_MESSAGE_MAP()  

void CDialog::OnOK()  
{  
    if (!UpdateData(TRUE))  
    {  
        return;  
    }  

    EndDialog(IDOK);  
}  

void CDialog::OnCancel()  
{  
    EndDialog(IDCANCEL);  
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM