0
我有一箇舊的MFC應用程序,它具有跨越200行的OnCreate函數。CMainFrame中的消息框OnCreate
CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
PostMessage(LOAD_IMAGES,0,0);
...
ValidatePermissions();
...
}
的LOAD_IMAGES
是用戶的消息,其處理程序嘗試加載其已從上次會議未保存的圖片。基本上這嘗試創建一個新的CDocument ...
的ValidatePermissions
功能彈出一個模式消息框,如果它發現任何權限丟失..
我注意到,如果我有模式消息框彈出,然後我得到一個崩潰時LOAD_IMAGES處理程序觸發(因爲它不能創建一個CDocument,我認爲這是因爲CMainFrame尚未創建)。
我該如何處理這種情況。是否有任何文檔暗示OnCreate中沒有模態消息框?
所以基本上我應該移動任何可能導致模式消息框從PostMessage調用運行的任何東西? – manimatters
消息框泵信息,它引入了重新進入你的wndproc的可能性(例如,當你還在另一個消息處理程序中時調用MFC消息處理程序。)PostMessage不是問題的原因:許多消息可能導致在消息期間重新進入框。 –
好的,所以基本上如果有信息抽取,就有風險。 從postmessage調用調用消息框將允許OnCreate消息處理程序在消息箱泵啓動之前完成。 – manimatters