Как лучше всего определить, представляет ли 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() возвращает родителя или владельца текущего окна.

Ваш метод возможен (но я думаю, что вам лучше проверить, если это тоже перекрывающееся / всплывающее окно). Возможно, есть другой способ - это перечислить все окна верхнего уровня и проверить, включены ли ваши окна в результат.

Другие вопросы по тегам