初始化主窗口win32时,何时是显示模态对话框的最佳时间?

时间:2010-06-19 10:37:38

标签: dialog modal-dialog postmessage oncreate

我试图在Win32中完成此任务,但我确信在WinForms世界中也适用相同的规则。

问:我创建了我的主窗口,然后,当它显示时,我想显示一个模态对话框。问题是;如何知道主窗口何时完全初始化并可见?也就是说,何时是显示对话框的最佳时间?

思路:
1)处理WM_CREATE并作为最后一步PostMessage(WM_USER_MESSAGE)。处理WM_USER_MESSAGE并显示模态对话框!
2)处理WM_CREATE并将定时器设置为~300 ms。处理WM_TIMER,杀死计时器并显示模态对话框!
3)如果首次激活WM_ACTIVATE,请处理PostMessage(WM_USER_MESSAGE)。处理WM_USER_MESSAGE并显示模态对话框!
4)处理WM_SHOWWINDOW,如果是第一次显示show modal对话框!

上述方法有效,但结果并不总是那么好。有更好的方法吗?也许以某种方式处理WM_ENTERIDLEWM_KICKIDLE消息?

1 个答案:

答案 0 :(得分:0)

是。确切地显示对话框的最佳时间是:

您可以使用以下函数处理WM_CREATE并检查窗口句柄是否有效:

:: GetSafeHwnd( m_hwnd)

我们当时可以显示模态对话框。