我可以阻止我的程序的用户调整控制台大小 window 吗? (在 C 中)

Can I prevent the user of my program to resize the console window? (in C)

所以我进行了(很多)搜索,但没有找到任何关于如何防止用户调整我的程序控制台大小的信息window。我找到了语言 C++C# 的信息,但没有找到 C 的信息。我已经设法设置了控制台的大小,但如果用户之后更改它,这对我的程序的外观不利。我可以做些什么来完美地调整控制台的大小并保持原样吗?

好吧,我设法通过组合代码来施展魔法。 首先你需要一个

#define _WIN32_WINNT 0x0500

之后(顺序很重要

#include <windows.h>

毕竟,您需要在主程序中使用以下代码:

HWND consoleWindow = GetConsoleWindow();
SetWindowLong(consoleWindow, GWL_STYLE, GetWindowLong(consoleWindow, GWL_STYLE) & ~WS_MAXIMIZEBOX & ~WS_SIZEBOX);

捕获 EVENT_CONSOLE_LAYOUT event by setting an event hook with SetWinEventHook, and in the WinEventProc callback call SetConsoleWindowInfo 以立即恢复所需大小。

您还可以使用 SetWindowScreenBufferSize 将 window 缓冲区设置为可见 window 的确切尺寸,因为不可能使可见 window 大于缓冲区大小。但是,这不会阻止 windows 变小。