从使用glfw创建的窗口中删除最大化按钮

Removing the maximize button from a window created using glfw

本文关键字:删除 最大化 按钮 窗口 glfw 创建      更新时间:2023-10-16

如何从使用glfwopenWindow函数调用创建的窗口中删除最大化按钮?

目前,我正在做的是:

windowHandle = GetForegroundWindow();
long Style = GetWindowLong(windowHandle, GWL_STYLE);
Style ^= WS_MAXIMIZEBOX;
SetWindowLong(windowHandle, GWL_STYLE, WS_MAXIMIZEBOX);

在这里,我得到窗口句柄,然后切换最大化位。然后我重新应用窗口样式。但这不起作用,它使窗口完全空白,没有任何按钮或标题栏。有没有办法移除最大化按钮。我不想改变窗口的大小每当调整函数被调用

你的代码是错误的,因为你没有传递回旧的风格,从而清除所有的风格标志,除了WS_MAXIMIZEBOX,它应该是:

windowHandle = GetForegroundWindow();
long Style = GetWindowLong(windowHandle, GWL_STYLE);
Style &= ~WS_MAXIMIZEBOX; //this makes it still work when WS_MAXIMIZEBOX is actually already toggled off
SetWindowLong(windowHandle, GWL_STYLE, Style);

同样,如果您计划将来的x64兼容性,您应该真正使用基于GetWindowlongPtr的函数