Как лучше всего определить, представляет ли HWND окно верхнего уровня?
Это проверить бит WS_CHILD:
LONG style = GetWindowLong(hwnd, GWL_STYLE);
int isTopLevel = !(style & WS_CHILD);
Или есть лучший способ?
Предположим: Straight C вызывает только существующий код Windows API.
3 ответа
Решение
Способ № 1: Тест
hWnd==GetAncestor(hWnd,GA_ROOT)
Способ № 2: Использование
IsTopLevelWindow
(user32 Win7, без документов)
API GetParent() возвращает родителя или владельца текущего окна.
Ваш метод возможен (но я думаю, что вам лучше проверить, если это тоже перекрывающееся / всплывающее окно). Возможно, есть другой способ - это перечислить все окна верхнего уровня и проверить, включены ли ваши окна в результат.