禁用最大化按钮c++;控制台应用程序 我正在维护老C++应用程序运行控制台。我已禁用“关闭”Button。我需要禁用最大化按钮以及。以下代码禁用关闭按钮 DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND); DrawMenuBar(GetConsoleWindow());

禁用最大化按钮c++;控制台应用程序 我正在维护老C++应用程序运行控制台。我已禁用“关闭”Button。我需要禁用最大化按钮以及。以下代码禁用关闭按钮 DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND); DrawMenuBar(GetConsoleWindow());,c++,visual-studio,winapi,windows-7,C++,Visual Studio,Winapi,Windows 7,我添加了一行以禁用最大化按钮: DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND); DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_MAXIMIZE, MF_BYCOMMAND); DrawMenuBar(GetConsoleWindow()); 它可以工作,按钮被禁用,但没有变灰。(关闭按钮变灰) 我错过了什么? 谢谢。使用更

我添加了一行以禁用最大化按钮:

DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND);
DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_MAXIMIZE, MF_BYCOMMAND);
DrawMenuBar(GetConsoleWindow());
它可以工作,按钮被禁用,但没有变灰。(关闭按钮变灰) 我错过了什么? 谢谢。

使用更改窗口样式,然后调用
SetWindowPos
。例如:

HWND hwnd = GetConsoleWindow();
DWORD style = GetWindowLong(hwnd, GWL_STYLE);
style &= ~WS_MAXIMIZEBOX;
SetWindowLong(hwnd, GWL_STYLE, style);
SetWindowPos(hwnd, NULL, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_FRAMECHANGED);

控制台窗口的chrome并不是你应该和IMHO一起玩的东西。人们仍然可以用Ctrl+Break终止您的程序。非常感谢这两个答案。这个方法奏效了。你完全正确-Ctrl-Break仍然会终止程序。禁用按钮只是为了防止意外操作。