Получить все стили конкретного окна WinApi
Подскажите пожалуйста, как получить информацию о стилях применённых к окну ? Если, я правильно понимаю, то это цели служит функция GetWindowLongPtr, она как раз может извлекать и возвращать стили/расширенные стили окна.
То есть возвращаемое значение это будет число типа LONG - это число и будет является комбинацией всех стилей приименных к окну. Но, я не могу понять, как мне из этого числа вычленить значениях именно всех этих стилей ? Подскажите пожалуйста.
Ответы (1 шт):
Вначале получаете этот стиль
DWORD styles = GetWindowLongPtr(hwnd,GWL_STYLE);
а потом последовательно проверяете все варианты. Где то так
if (styles & WS_CAPTION) {
puts("WS_CAPTION was set");
} else {
puts("Style wasn't set");
}
Список стилей можно найти здесь https://docs.microsoft.com/en-us/windows/win32/winmsg/window-styles
Некоторые стили там комбинированные, например WS_POPUPWINDOW = (WS_POPUP | WS_BORDER | WS_SYSMENU). С ними нужно быть аккуратным. Тут все зависит от того, что именно Вы хотите показать. Возможно тут где то так
if (styles & WS_POPUPWINDOW ) {
puts("WS_POPUPWINDOW");
} else {
// проверяем по отдельности WS_POPUP, WS_BORDER, WS_SYSMENU
}