MFC非模態對話方塊中遮蔽ESC鍵

2022-01-26 01:13:58 字數 430 閱讀 6834

個人的程式設計經驗認為:對於非模態對話方塊,按下esc鍵和點選紅叉都會響應oncancel()函式,而不會去響應onclose()函式。

我們都知道,如果想遮蔽enter鍵,只須重寫onok()函式即可(重寫成空函式即可)。但是遮蔽esc鍵卻不能這樣做,原因很

明確:這樣也會遮蔽紅叉的。下面提供一種遮蔽esc鍵的方法,個人認為比較有用:

即重寫pretranslatemessage()函式:

bool ctooldlg::pretranslatemessage(msg* pmsg)

// todo: 在此新增專用**和/或呼叫基類  

if(pmsg->message == wm_keydown)  

switch(pmsg->wparam)

return cdialogex::pretranslatemessage(pmsg);

非模態對話方塊 MFC

cvolsetdlg m pvoldlg null m pvoldlg newcvolsetdlg m pvoldlg create idd dlg vol m pvoldlg showwindow sw show 過載oncancel函式 void cxx oncancel todo add yo...

MFC 非模態對話方塊

非模態對話方塊 用mfc可以建立非模態的對話方塊,只是建立方式不同,模態對話方塊用 dlg.domodel 呼叫,而非模態對話方塊要用create函式建立呼叫。假設idd test dlg為已經定義的對話方塊資源的id號 ctestdlg dlg new ctestdlg dlg create id...

MFC中模態與非模態對話方塊

vc 中非模態對話方塊生成與模態有相似之處,主要不同在於模態採用domodal函式生成,而非模態採用create函式 而且非模態對話方塊生存週期較長,一般和父視窗的生存週期相同。到新增類一步,非模態與模態都是相同的.但由於要使用create函式,因為要在生成非模態對話方塊的父視窗中新增對話方塊類的指...