我們知道,在對話框中,屏蔽ESC鍵自己主動退出能夠選擇重載OnCancel為啞函數的方法:
void CXXXXDlg::OnCancel()
{
// TODO: Add your specialized code here and/or call the base class//CDialog::OnCancel(); //disable OnCancel
}
可是,這樣一來,右上角的關閉button也不起作用了,是由于點擊關閉button時會自己主動調用CXXXXDlg::OnCancel()l從而完畢對話框的關閉,由于CXXXXDlg::OnCancel()中什么也沒有做,因此對話框就無法關閉。改動這個bug須要重載OnClose消息函數:
void CXXXXDlg::OnClose()
{
// TODO: Add your message handler code here and/or call defaultCDialog::OnCancel(); //add OnCancel here
CDialog::OnClose();
}
因為OnCancle實際上是調用Enddialog(IDCANCEL),所以也能夠依照例如以下改動:
void CXXXXDlg::OnClose()
{
// TODO: Add your message handler code here and/or call defaultEndDialog(IDCANCEL);
CDialog::OnClose();
}
我們知道OnClose函數是WM_CLOSE消息的響應函數,可是為什么發送WM_CLOSE消息后會自己主動調用CXXXXDlg::OnCancel()?自己跟了一下代碼,大致梳理了一下流程:
WM_CLOSE
-> 進入void CXXXXDlg::OnClose()
-> CDialog::OnClose()
-> void CXXXXDlg::OnClose()返回
-> void CXXXXDlg::OnCancel()
比較奇妙的是 CDialog::OnClose() 函數:
這個函數中不知道以何種方式告知系統在 CXXXXDlg::OnClose() 返回 后去調用 CXXXXDlg::OnCancel(),在調試中假設把這個函數凝視掉,則不會轉入CXXXXDlg::OnCancel()函數中。并且,對于CXXXXDlg::OnCancel()函數的調用是在CXXXXDlg::OnClose() 返回 后,假設採用消息,我認為是否應該不會在返回后調用,而應該在消息發送后立即處理。
網上找了非常久也沒有得到答案,臨時記錄在此,或許哪天自己明確了,或是被牛人發現了給出解答。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
要流暢的看VR電腦配置,越高越好。目前VR主要針對要求高的顯卡(與成像相關)。目前很多VR廠商都為自己的VR軟件推薦了電腦配置,但是官網查??偟膩碚f只有幾個大項:四代以上,I5處理器8G,內存4G,顯卡,光學主機一般價格在5000以上??梢粤鲿呈褂肰R。根據目前VR的硬件形式,VR頭戴設備主要分為三種:1.移動終端顯示器(俗稱手機VR)移動終端顯示器(手機VR)——所謂的VR眼鏡盒,只要放在手機里...
北京到麗江有高鐵嗎?目前北京沒有直達麗江的高鐵。不僅沒有直達云南麗江的高鐵,也沒有直達列車。如果一定要坐高鐵從北京到麗江,只能坐高鐵從北京到云南昆明。到達昆明后,換乘D字頭雙層旅游列車,從昆明可以直達麗江。北京到麗江自駕游最佳路線攻略?走京石高速岳各莊大橋、京昆高速、石太高速、太舊高速、太元高速、大云高速、運城、Xi安高速、侯鈺高速、西玉高速、潼關高速、戶縣高速、西漢高速、赫爾高速。走108國道到...
17號線站點明細北京?北京地鐵17號線車站信息:未來科技城北站、未來科技城南站、天通苑東站、清和營站、永世營站、望京西站(換乘)、太陽宮站(換乘)、西壩河站(換乘)、香河園站、工人體育場站(換乘)、東大橋站(換乘)、李永安站(換乘)、廣渠門外站(換乘)車站21座,均為地下車站;a型列車由8列列車組成。17號線站點明細北京?北京地鐵17號線車站詳情:未來科技城北區——亦莊站南區,共21座車站,全線長...