Установка окна на весь экран программно

#windows #winapi

Вопрос:

Я пытаюсь изменить размер окна консоли на полноэкранный в non-.NET Приложение C , работающее под управлением Windows 10.

Я могу избавиться от оконной рамы и изменить размер, используя один из SetWindowPos WinAPI или MoveWindow из него.

Но начало окна (верхний левый угол) не перемещается в верхний левый угол экрана и остается в своем исходном положении, которое является случайным. На X самом деле, Y аргументы этих функций , похоже, просто игнорируются.

Есть какие-нибудь предложения ?

Комментарии:

1. Попробуй SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0); .

2. @500-InternalServerError: эй, это становится лучше и ближе к моим потребностям ! Как ни странно, справа появляется полоса прокрутки, и очистка бита WS_VSCROLL в стиле окна не работает 🙁

3. @500-InternalServerError: теперь готово (мне нужно было уменьшить размер буфера консоли). Если вы хотите, вы можете ввести свое предложение в качестве ответа. В противном случае я это сделаю.

4. Нет, ты иди вперед.

5. То же самое ShowWindow(hWnd, SW_MAXIMIZE); , но вы можете захотеть проверить последовательности виртуальных терминалов консоли (SetConsoleMode ENABLE_VIRTUAL_TERMINAL_PROCESSING включает режим совместимости с VT100, предлагаемое поведение — кросс-платформенная совместимость).

Ответ №1:

Вот и все:

 HWND hWnd = GetConsoleWindow();
DWORD dwStyle = GetWindowLong(hWnd, GWL_STYLE);
SetWindowLong(hWnd, GWL_STYLE, dwStyle amp; ~WS_OVERLAPPEDWINDOW);
SendMessage(hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
 

Отрегулируйте размер буфера и окна консоли, чтобы избежать полос прокрутки.

Кредит 500 — Внутренняя ошибка сервера .