Получить все стили конкретного окна WinApi

Подскажите пожалуйста, как получить информацию о стилях применённых к окну ? Если, я правильно понимаю, то это цели служит функция GetWindowLongPtr, она как раз может извлекать и возвращать стили/расширенные стили окна.

То есть возвращаемое значение это будет число типа LONG - это число и будет является комбинацией всех стилей приименных к окну. Но, я не могу понять, как мне из этого числа вычленить значениях именно всех этих стилей ? Подскажите пожалуйста.


Ответы (1 шт):

Автор решения: KoVadim

Вначале получаете этот стиль

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
}
→ Ссылка