個人的程式設計經驗認為:對於非模態對話方塊,按下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函式,因為要在生成非模態對話方塊的父視窗中新增對話方塊類的指...