EnumChildWindows函数得到的子窗口是有WS_CHILD风格的,但是用CreateWindowEx建立一个窗口时,可以指定它的所有者,即使没有加WS_CHILD风格。区别就是使用了WS_CHILD风格在指定窗口坐标时使用的是相对父窗口的相对坐标。
不使用WS_CHILD风格、但指定所有者窗口句柄的窗口,假如它叫窗口A,当所有者窗口收到一个WM_DESTROY消息时,窗口A连同所有者窗口被销毁。
上面我的理解应该没有错吧?
这个所有者窗口能叫父窗口么?
问题在于用GetParent可以获得A窗口所有者的句柄,用EnumChildWindows函数却无法得到A窗口的句柄,同样GetWindow函数也找不到。上网看了些资料,有的地方有提,A窗口叫继承窗口
现在假如A窗口的所有者是B窗口。有没有一个API函数,或者一种方法,可以得到B窗口的继承窗口?

解决方案 »

  1.   

    遍历顶级窗口可以得到 A, B 两个窗口的句柄遍历过程中:   if getwindow(枚举到的句柄,gw_owner) = B.句柄 then ... 找到A了枚举可以用 enumwindows
      

  2.   

    3L看懂了我的意思,不过我是想做一个列举所有窗口层级的程序,这样做有没可能?
    当然太复杂的方法是要摒弃的,关键在于有没有一个API函数可以比较方便的实现这个功能
      

  3.   

    我弄过一个烂尾的东西..
    看看是不是这样.
      源码...
    http://files.cnblogs.com/pctgl/%e7%aa%97%e5%8f%a3%e8%bf%9b%e7%a8%8b%e6%a0%91.rar