Mfc CMainFrame OnCreate中的Messagebox

Mfc CMainFrame OnCreate中的Messagebox,mfc,modal-dialog,oncreate,Mfc,Modal Dialog,Oncreate,我有一个旧的MFC应用程序,它有一个OnCreate函数,跨越200多行 CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { ... PostMessage(LOAD_IMAGES,0,0); ... ValidatePermissions(); ... } LOAD_IMAGES是一条用户消息,其处理程序尝试加载上次会话中未保存的图像。。基本上,它试图创建一个新的CDocument ValidatePermissions函数如果发现缺少

我有一个旧的MFC应用程序,它有一个OnCreate函数,跨越200多行

CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
PostMessage(LOAD_IMAGES,0,0);
...
ValidatePermissions();
...
}
LOAD_IMAGES
是一条用户消息,其处理程序尝试加载上次会话中未保存的图像。。基本上,它试图创建一个新的CDocument

ValidatePermissions
函数如果发现缺少任何权限,将弹出一个模式消息框

我注意到,如果弹出模式消息框,则当LOAD_IMAGES处理程序启动时会发生崩溃(因为它无法创建CDocument,我认为这是因为CMainFrame尚未创建)


我应该如何处理这样的案件。是否有任何文档建议不要在OnCreate中使用模态MessageBox?

尝试将ValidatePermissions调用移动到消息处理程序以加载图像。这应该让窗口创建在消息框输出消息之前完成。

因此,基本上我应该移动任何可能导致模式消息框从PostMessage调用运行的内容?消息框输出消息,这引入了重新输入wndproc的可能性(即,当您仍在另一个消息处理程序中时调用MFC消息处理程序。)PostMessage不是问题的原因:许多消息可能会在消息框期间导致重新进入。好的,因此基本上,如果有消息泵送,则存在风险。从PostMessage调用调用messagebox将允许OnCreate消息处理程序在messagebox泵送开始之前完成。