簡體   English   中英

當顯示為獨立對話框時,CPropertyPage派生對話框未在Esc上關閉

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM