#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);
, но вы можете захотеть проверить последовательности виртуальных терминалов консоли (SetConsoleModeENABLE_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 — Внутренняя ошибка сервера .