在Win32中禁用最小化,最大化,关闭按钮

时间:2016-03-20 12:26:25

标签: c++ winapi button

我做过研究,但我找不到解决问题的方法。 有没有什么好办法,在Win32中禁用最小化,最大化和关闭按钮?我希望它们仍然存在并且动画但不敏感。我还希望能够通过拖动框架来调整窗口大小。

2 个答案:

答案 0 :(得分:1)

只需捕获相关事件(WM_SYSCOMMAND和WM_CLOSE),并告诉Windows通过返回0来忽略它们。请注意,对于WM_SYSCOMMAND,您应该只对您真正想要阻止的事件执行此操作,即事件代码SC_MINIMIZE, SC_MAXIMIZE等等。所有其他人都应该被允许正常通过。有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/ms646360%28v=vs.85%29.aspx

但是,请注意,如果您提供按钮,用户将希望它们能够正常工作。隐藏它们可能是更好的选择。您可以通过调用SetWindowLong(https://msdn.microsoft.com/en-us/library/ms633591%28v=vs.85%29.aspx)来执行此操作,并更改GWL_STYLE属性,使其不再包含WS_MINIMIZEBOX,WS_MAXIMIZEBOX等标志。

答案 1 :(得分:0)

SetWindowLong(hwnd, GWL_STYLE,
               GetWindowLong(hwnd, GWL_STYLE) & ~WS_MINIMIZEBOX); 

您可以将该代码放在窗口初始化的位置。查看https://devblogs.microsoft.com/oldnewthing/20100604-00/?p=13803