确定HWND是否代表顶级窗口的最佳方法是什么?

时间:2013-06-06 23:40:51

标签: c++ c windows winapi

是否要检查WS_CHILD位:

    LONG style = GetWindowLong(hwnd, GWL_STYLE);
    int isTopLevel = !(style & WS_CHILD);

或者有更好的方法吗?

假设:直接C只调用现有的Windows API代码。

3 个答案:

答案 0 :(得分:9)

  • 方式#1:测试hWnd==GetAncestor(hWnd,GA_ROOT)

  • 方式#2:使用IsTopLevelWindow(user32 Win7,未记录)

答案 1 :(得分:1)

GetParent() API返回当前窗口的父级或所有者。

答案 2 :(得分:0)

您的方法是可行的(但我认为最好还是检查它是否是重叠/弹出窗口)。可能还有另一种方法 - 即枚举所有顶级窗口并检查您的窗口是否包含在结果中。