【发布时间】:2016-03-20 12:26:24
【问题描述】:
我进行了研究,但没有找到解决问题的方法。 有什么好的方法可以禁用 Win32 中的最小化、最大化和关闭按钮吗?我希望它们仍然存在并具有动画效果,但不敏感。我还希望能够通过拖动框架来调整窗口大小。
【问题讨论】:
我进行了研究,但没有找到解决问题的方法。 有什么好的方法可以禁用 Win32 中的最小化、最大化和关闭按钮吗?我希望它们仍然存在并具有动画效果,但不敏感。我还希望能够通过拖动框架来调整窗口大小。
【问题讨论】:
只需捕获相关事件(WM_SYSCOMMAND 和 WM_CLOSE),并通过返回 0 告诉 Windows 忽略它们。请注意,在 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 等标志。
【讨论】:
SetWindowLong(hwnd, GWL_STYLE,
GetWindowLong(hwnd, GWL_STYLE) & ~WS_MINIMIZEBOX);
您可以将该代码放在窗口初始化的位置。查看https://devblogs.microsoft.com/oldnewthing/20100604-00/?p=13803
【讨论】: