Проводник, кажется, всегда начинает мою заявку с SW_MAXIMIZE
(STARTF_USESHOWWINDOW
установлен в STARTUPINFO.dwFlags
). Я знаю, что ShowWindow
будет использовать это значение the first time вам/Windows необходимо отобразить окно, но оно имеет неудачное следствие максимизации окна, которое никогда не должно быть максимизировано.Как остановить приложение Explorer, начинающее мое приложение, максимально?
Мое окно создано CreateDialogIndirectParam
и имеет следующие стили: WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_CLIPCHILDREN|DS_MODALFRAME|DS_CENTER|WS_VISIBLE
. Почему ShowWindow
не проверяет, установлен ли WS_MAXIMIZEBOX
до разрешения STARTF_USESHOWWINDOW
, чтобы заставить SW_MAXIMIZE
? Это ошибка в Windows?
Это происходит на HP Stream 7 с Windows 8.1. Я не уверен, что Explorer делает это, потому что он имеет сенсорный интерфейс или из-за небольшого экрана.
Является ли поведение этого проводника документированным в любом месте и есть способ отключить его? Каков наилучший способ остановить использование Explorer (или любого другого родительского процесса) в моем первоначальном режиме окна? (Я не хочу, чтобы блокировать людей, начиная с меня SW_*MINIMIZE*
)
winver.exe в system32 имеет ту же проблему:
Вы действительно уверены, что используете данный файл непосредственно в файле .exe, а не на ярлыке с настройкой ** «Run: maximumized» **, применяемой к нему? –
@RemyLebeau Да, я дважды щелкаю непосредственно на .exe. Даже если это был ярлык, мой основной вопрос все равно будет применяться, как я могу предотвратить первый вызов ShowWindow из максимизации окна, в котором нет WS_MAXIMIZEBOX? – Anders
'cmd.exe/c start/MAX c: \ myapp.exe' также имеет такую же проблему ... – Anders