Удаление кнопки максимизации из окна, созданного с помощью glfw - PullRequest
2 голосов
/ 07 ноября 2011

Как удалить кнопку максимизации из окна, созданного с помощью функционального вызова glfwopenWindow?

В настоящее время я делаю следующее:

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

Где, я получаю дескриптор окна, а затем переключаю бит максимизации. Затем я повторно применяю стиль окна. Но это не работает и делает окно полностью пустым без каких-либо кнопок или строки заголовка. есть ли в любом случае удалить кнопку максимизации. Я не хочу менять размер окна всякий раз, когда вызывается функция изменения размера

1 Ответ

5 голосов
/ 07 ноября 2011

ваш код содержит ошибки, так как вы не возвращаете старый стиль, поэтому при очистке всех флагов стиля, кроме 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);

также, вы действительно должны использовать функции GetWindowlongPtr, если планируете совместимость с x64 в будущем

...