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

时间:2011-11-07 08:09:21

标签: c++ winapi win32-process glfw

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

目前,我正在做的是:

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

在哪里,我得到窗口句柄,然后切换最大化位。然后我重新应用窗口样式。但这不起作用,它使窗口完全空白,没有任何按钮或标题栏。无论如何要删除最大化按钮。我不想在调用resize函数时改变窗口大小

1 个答案:

答案 0 :(得分:5)

您的代码存在错误,因为您没有传回旧样式,因此清除除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的函数