我有一个窗口样式为WS_CHILDWINDOW的特定窗口。这是我已经掌握了窗口的窗口的子窗口。这个窗口是倒数第二个窗口。我怎么得到它?
顺便说一下,这是C ++。
答案 0 :(得分:3)
作为上面发布的EnumChildWindows
的替代方法,您可以使用以下内容:
HWND first_child = GetWindow(parent_hwnd, GW_CHILD);
HWND last_child = GetWindow(first_child, GW_HWNDLAST);
HWND prev_to_last_child = GetWindow(last_child, GW_HWNDPREV);
这种方法的缺点是如果在步骤2和3之间在Z顺序的末尾添加新的子窗口,则可能出现竞争。虽然在实践中它应该不是问题。 :)
答案 1 :(得分:1)
嗯,有一个特定的Windows API函数用于枚举子窗口:EnumChildWindows()。传递父窗口句柄和回调。关于您想要找到的子窗口必须有一些“特殊”。在回调中计算它们就足够了。 “前到后”也很可能,只需要两个变量。