【问题标题】:Disable Maximize Button c++ console application禁用最大化按钮 c++ 控制台应用程序
【发布时间】:2018-02-19 01:53:33
【问题描述】:

我正在维护旧的 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());

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

【问题讨论】:

  • 控制台窗口的chrome并不是你应该用恕我直言的东西。人们仍然可以使用 Ctrl+Break 杀死您的程序。

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


【解决方案1】:

使用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);

【讨论】:

  • 非常感谢您的两个回答。禁用工作。你是绝对正确的 - Ctrl-Break 仍然会杀死程序。禁用按钮只是防止意外发生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 2011-01-19
  • 2012-10-11
相关资源
最近更新 更多