2

我试图在 Win32 中实现这一点,但我确信同样的规则也适用于 WinForms 的世界。

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

思路:
1) 处理WM_CREATE和作为最后一步PostMessage(WM_USER_MESSAGE)。处理WM_USER_MESSAGE并显示模态对话框!
2) 处理WM_CREATE并设置一个约 300 毫秒的计时器。处理WM_TIMER,杀死计时器并显示模态对话框!
3) 处理WM_ACTIVATE,如果是第一次激活PostMessage(WM_USER_MESSAGE)。处理WM_USER_MESSAGE并显示模态对话框!
4) 处理WM_SHOWWINDOW,如果第一次显示显示模态对话框!

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

4

1 回答 1

0

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

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

:: GetSafeHwnd( m_hwnd)

我们可以在那个时候显示模态对话框。

于 2010-12-26T16:54:05.540 回答