是否可以阻止程序的用户调整控制台窗口的大小?(在C中)



所以我一直在搜索(很多(,但没有找到任何关于如何防止用户调整程序控制台窗口大小的信息。我找到了语言C++C#的信息,但没有找到C的信息。我已经设法设置了控制台的大小,但是如果用户之后更改了它,则对我的程序的外观不利。我能做些什么来完美地调整控制台的大小并保持这种状态?

好的,所以我设法通过组合代码来神奇。首先,您需要一个

#define _WIN32_WINNT 0x0500

之后(顺序很重要(

#include <windows.h>

所有这些之后,您需要在main中编写以下代码:

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

通过使用 SetWinEventHook 设置事件挂钩来捕获EVENT_CONSOLE_LAYOUT事件,并在 WinEventProc 回调中调用 SetConsoleWindowInfo 以立即恢复所需的大小。

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

最新更新