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

标签 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());

它有效,按钮被禁用但没有变灰。 (关闭按钮是灰色的) 我错过了什么? 谢谢。

最佳答案

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

关于c++ - 禁用最大化按钮 C++ 控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46145256/

相关文章:

c++ - QListWidget 项目一致定位问题

c# - Visual Studio 2015 中的项目是否包含编译为一个或多个可执行文件的代码?

c++ - C 将参数作为空指针列表传递给从 LoadLibrary() 导入的函数

c++ - 如何获取给定字体的可用字体样式

c++ - 关于点数的断言失败,在 OpenCV 的 solvePNP 上

c++ - 对象构造语法

.net - Visual Studio 不加载项目引用

visual-studio - Visual Studio 2010 代码片段

c++ - 如何确保无法重入访问我的主 STA COM 服务器 (C++)?

c++ - 如何将 winhttp api 与 "transfer-encoding: chunked"一起使用