如何找到具有特定窗口样式的窗口? (WS_CHILDWINDOW)

时间:2010-07-03 21:09:16

标签: c++ windows

我有一个窗口样式为WS_CHILDWINDOW的特定窗口。这是我已经掌握了窗口的窗口的子窗口。这个窗口是倒数第二个窗口。我怎么得到它?

顺便说一下,这是C ++。

2 个答案:

答案 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()。传递父窗口句柄和回调。关于您想要找到的子窗口必须有一些“特殊”。在回调中计算它们就足够了。 “前到后”也很可能,只需要两个变量。