我试图在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_ENTERIDLE
或WM_KICKIDLE
消息?
答案 0 :(得分:0)
是。确切地显示对话框的最佳时间是:
您可以使用以下函数处理WM_CREATE并检查窗口句柄是否有效:
:: GetSafeHwnd( m_hwnd)
我们当时可以显示模态对话框。