Когда инициализируется главное окно win32, когда лучше всего показывать модальное диалоговое окно? - PullRequest
2 голосов
/ 19 июня 2010

Я пытаюсь сделать это в Win32, но я уверен, что те же правила применяются в мире WinForms.

Q: Я создаю главное окно, а затемКогда он показывается, я хочу показать модальный диалог.Проблема в;как я могу узнать, когда главное окно полностью инициализировано и видно?То есть, когда именно лучше всего показывать диалоговое окно?

Идеи:
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 сообщений каким-либо образом?

1 Ответ

0 голосов
/ 26 декабря 2010

Да. Точно лучшее время для показа диалога:

Вы можете обрабатывать WM_CREATE и проверять правильность дескриптора окна, используя функцию:

:: GetSafeHwnd( m_hwnd)

И мы можем показать модальное диалоговое окно в то время.

...