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

0xb*_*7ed 8 c c++ windows winapi

是检查WS_CHILD位:

    LONG style = GetWindowLong(hwnd, GWL_STYLE);
    int isTopLevel = !(style & WS_CHILD);
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?

假设:Straight C只调用现有的Windows API代码.

ker*_*ero 9

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

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