在消息中截获hwnd,如何区分该句柄是控件还是窗口?

解决方案 »

  1.   

    首先,控件也是窗口。使用GetParent查找父窗口
    HWND GetParent(HWND hWnd);
    如果窗口的父窗口为NULL(HWND_DESKTOP)的话,那么这个窗口应该就是你认为的窗口了。
    而其父窗口是另一个窗口,呵呵,我只知道它叫做子窗口,是不是控件不知道。使用GetWindowLong查看窗口的Style
    LONG GetWindowLong(HWND hWnd,int nIndex);//nIndex这里为GWL_STYLE
    你的窗口应该不会有BS_PUSHBUTTON、ES_AUTOHSCRLL、CBS_HASSTRINGS等控件风格吧。
    或者你的控件应该不会有WS_CAPTION、WS_MAXIMIZEBOX、WS_MINIMIZE等窗口风格吧。
      

  2.   

    控件也是窗口,只不过是系统预定义的窗口
    你可以用GetClassName来得到窗口的类名,让后再和系统定义的类名比较,如"BUTTON"等,这样就可以区别,系统控件窗口和普通窗口了