На мой взгляд, одно из применений сообщения WM_CREATE оконной процедуры состоит в том, чтобы освободить вызывающую сторону от бремени выполнения статического кода при инициализации окна. Мое окно должно выполнить некоторый код в сообщении WM_CREATE, включая функцию ShowWindow. Я также хочу, чтобы ShowWindow работал правильно в соответствии с параметром nCmdShow в WinMain. Итак, вот псевдокод, чтобы показать, как у меня все настроено:
int g_nCmdShow;
WinMain(..., int nCmdShow)
{
g_nCmdShow = nCmdShow;
...
CreateWindow(..., WM_OVERLAPPEDWINDOW, ...)
...
}
WndProc()
{
...
WM_CREATE:
...
ShowWindow(hWnd, g_nCmdShow);
...
...
}
Итак, я настроил программу для запуска Minimized (с помощью Windows XP я создал ярлык для .exe и соответствующим образом настроил его свойства), и он отображается на панели задач свернутым, но не восстанавливается при нажатии в теме. Аналогичным образом, если я запускаю его в развернутом виде, он не будет работать правильно, когда я нажимаю кнопку развернуть (чтобы развернуть его).
Как правильно использовать совместимое с nCmdShow ShowWindow в сообщении WM_CREATE?