To maximize the console window you can do:
C++
#include <cstdlib>
#include <string>
#include <iostream>
#include <memory>
#include <type_traits>
#include <windows.h>
std::string get_last_error_msg()
{
auto error_code{ GetLastError() };
if (!error_code)
return {};
LPSTR buffer{};
auto size{ FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
nullptr, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast<LPSTR>(&buffer), 0, nullptr) };
// use a unique_ptr for buffer since the ctor of string could throw
std::unique_ptr<std::remove_pointer_t<decltype(buffer)>, decltype(&LocalFree)> p{ buffer, LocalFree };
std::string message{ p.get(), size };
return message;
}
bool maximize_console()
{
auto console_window{ GetConsoleWindow() };
if (!console_window) {
std::cerr << "GetConsoleWindow() failed :(\n\n";
return false;
}
auto console_out{ GetStdHandle(STD_OUTPUT_HANDLE) };
if (console_out == INVALID_HANDLE_VALUE) {
std::cerr << "GetStdHandle() failed with \"" << get_last_error_msg() << "\" :(\n\n";
return false;
}
auto largest_size{ GetLargestConsoleWindowSize(console_out) };
if (!largest_size.X && !largest_size.Y) {
std::cerr << "GetLargestConsoleWindowSize() failed with \"" << get_last_error_msg() << "\" :(\n\n";
return false;
}
--largest_size.X;
--largest_size.Y;
if (!SetConsoleScreenBufferSize(console_out, largest_size)) {
std::cerr << "SetConsoleScreenBufferSize() failed with \"" << get_last_error_msg() << "\" :(\n\n";
return false;
}
if (!ShowWindow(console_window, SW_MAXIMIZE)) {
std::cerr << "ShowWindow() failed :(\n\n";
return false;
}
return true;
}
int main()
{
if (!maximize_console())
return EXIT_FAILURE;
}
C
#include <stdbool.h>
#include <stdio.h>
#include <windows.h>
LPSTR get_last_error_msg(void)
{
DWORD error_code = GetLastError();
if (!error_code)
return LocalAlloc(LMEM_ZEROINIT, 1);
LPSTR buffer = NULL;
FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&buffer, 0, NULL);
return buffer;
}
bool maximize_console(void)
{
HWND console_window = GetConsoleWindow();
if (!console_window) {
fputs("GetConsoleWindow() failed :(\n", stderr);
return false;
}
HANDLE console_out = GetStdHandle(STD_OUTPUT_HANDLE);
if (console_out == INVALID_HANDLE_VALUE) {
LPSTR buffer = get_last_error_msg();
fprintf(stderr, "GetStdHandle() failed with \"%s\" :(\n\n", buffer);
LocalFree(buffer);
return false;
}
COORD largest_size = GetLargestConsoleWindowSize(console_out);
if (!largest_size.X && !largest_size.Y) {
LPSTR buffer = get_last_error_msg();
fprintf(stderr, "GetLargestConsoleWindowSize() failed with \"%s\" :(\n\n", buffer);
LocalFree(buffer);
return false;
}
--largest_size.X;
--largest_size.Y;
if (!SetConsoleScreenBufferSize(console_out, largest_size)) {
LPSTR buffer = get_last_error_msg();
fprintf(stderr, "SetConsoleScreenBufferSize() failed with \"%s\" :(\n\n", buffer);
LocalFree(buffer);
}
if (!ShowWindow(console_window, SW_MAXIMIZE)) {
fputs("ShowWindow() failed :(\n", stderr);
return false;
}
return true;
}
int main(void)
{
if (!maximize_console())
return EXIT_FAILURE;
}