禁用最大化按钮c ++控制台应用程序

时间:2017-09-10 20:25:09

标签: c++ visual-studio winapi windows-7

我正在维护旧的C ++应用程序运行控制台。我禁用了“关闭”按钮。我也需要禁用最大化按钮。以下代码禁用关闭按钮

DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND);
DrawMenuBar(GetConsoleWindow());

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

DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND);
DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_MAXIMIZE, MF_BYCOMMAND);
DrawMenuBar(GetConsoleWindow());

它可以正常工作,按钮被禁用但它没有显示为灰色。 (关闭按钮显示为灰色) 我错过了什么? 谢谢。

1 个答案:

答案 0 :(得分:3)

使用SetWindowLong更改窗口样式,然后调用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);