Windows C ++, как запуск приложения максимально развернут? - PullRequest
1 голос
/ 03 декабря 2011

Я создаю приложение для Windows на C ++. Я использую SDL (http://www.libsdl.org/) - однако этот вопрос относится ко многим другим типам приложений Windows, написанным на C ++, поскольку у меня была такая же проблема раньше в MFC много лет назад, и я никогда не решал эту проблему.

Теперь я хочу, чтобы мое приложение запускалось максимально. Многие другие приложения запускаются по умолчанию в развернутом состоянии, например, когда я запускаю Firefox, он автоматически запускается в развернутом виде.

Теперь я прочитал, что я могу использовать ShowWindow http://msdn.microsoft.com/en-us/library/ms633548

Позвонив по номеру:

ShowWindow(info1.window, SW_MAXIMIZE);

Окно затем разворачивается, когда оно вызывается, как если бы пользователь нажал на кнопку развернутого. Однако проблема заключается в том, что, когда мое приложение запускается, сначала оно запускается с определенным размером (например, 700 на 500), затем, когда вызывается ShowWindow, затем оно максимизируется. Это большая разница между тем, как Firefox запускается, Firefox запускается и просто выглядит развернутым, не появляясь сначала в небольшом размере.

Итак, мой вопрос: как запустить максимизированный без этого промежуточного размера окна (который не максимизируется) перед вызовом ShowWindow? Пользователь раздражает, когда видит окно меньшего размера, которое затем неожиданно увеличивается при запуске.


Если вы можете сказать мне, как это сделать в MFC или DOT NET, я, наверное, смогу решить, как это сделать в SDL.

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Возможно, вы можете использовать переменную среды SDL_VIDEO_WINDOW_POS (см. http://sdl.beuc.net/sdl.wiki/SDL_envvars), чтобы расположить окно в верхнем левом углу экрана. Используйте SystemParametersInfo с SM_CXSCREEN и SM_CYSCREEN из вышеприведенного поста, чтобы определить размер окна ( для вызова SDL_SetVideoMode). Таким образом, окно развернуто на весь экран.

Альтернативой является создание окна самостоятельно (используя CreateWindow со стилем окна WS_MAXIMIZE) и передача его в SDL через переменную среды SDL_WINDOWID.

2 голосов
/ 03 декабря 2011

Вызовите функцию API-интерфейса Windows SystemParametersInfo с помощью SPI_GETWORKAREA, чтобы получить ширину и высоту экрана без панели задач, и установите размер окна при вызове CreateWindow с этими значениями.(Вы также можете вызвать GetSystemMetrics с SM_CXSCREEN и SM_CYSCREEN, чтобы получить ширину и полную высоту экрана, но в этом случае нижний край вашего окна будет скрыт панелью задач.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...