[英]CPropertyPage derived dialog doesn't close on Esc when showing as a standalone dialog
我有一個對話框,需要同時顯示在CPropertySheet內部和作為獨立對話框。 我選擇不使用2個單獨的類來避免代碼冗余(我在那些對話框中進行了大量更改,而必須不斷同步2個類將是地獄),而是當我想將其顯示為獨立對話框時,我只是調用CPropertyPage :: DoModal。 這會導致一些問題,但是我已經修復了大多數問題。
但是,仍然存在一些問題,即enter和esc不起作用。 同時按Tab鍵也不會改變焦點。 這使我認為CPropertyPage吞噬了所有鍵盤輸入,或者它試圖將它們傳遞給其父級。
有什么想法可以在獨立模式下覆蓋該行為嗎?
我相信這對您有用。 我沒有可以用來測試的對話框,因此我可以從內存中進行所有操作,但是我相信您可以添加在調用DoModal
時設置的布爾值,或將其公開為在調用DoModal
之前設置的屬性。表示它正在作為獨立對話框運行,然后像這樣重寫PreTranslateMessage
:
CMyPropertyPage::PreTranslateMessage(MSG* pMsg)
{
if (m_runningAsStandalone && pMsg->message == WM_KEYDOWN)
{
UINT key = pMsg->wParam;
switch(pMsg->wParam)
{
case VK_RETURN:
OnOK();
return TRUE;
case VK_ESCAPE:
OnClose();
return TRUE;
}
}
return CPropertyPage::PreTranslateMessage(pMsg);
}
您可能還會發現此鏈接有用http://support.microsoft.com/kb/125645
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.