获取子窗口的句柄C \ C ++

时间:2011-03-24 18:16:16

标签: c++ c winapi parent-child handle

我尝试在这里和谷歌搜索,我最终得到了“GetDlgItem”方法,但它不起作用。

这是我的代码:

HWND hwnd_Parent;
HWND hwnd_Child;

hwnd_Parent = FindWindow(NULL,"MyTitle");
hwnd_Child = GetDlgItem(hwnd, 0x00030756);

hwnd_Parent是可以的(我甚至做过一些帖子消息测试),但是hwnd_Child为null。 因此,您看到的十六进制数是通过WinSpy ++找到的。

我的系统是Windows 7 64位,我的IDE是代码块。

提前致谢。

3 个答案:

答案 0 :(得分:4)

您需要知道要使用GetDlgItem()的窗口的ID。我怀疑你传递的是你从Spy ++获得的HWND。

看起来你在另一个应用程序中徘徊,因为如果它是你自己的应用程序,那么你就不需要调用FindWindow,你就知道控件ID了。

找到此窗口的最简单方法是,一旦您从FindWindow获得顶级窗口,就可以调用EnumChildWindows()

答案 1 :(得分:2)

GetDlgItem获取控件的ID。 0x00030756已经看起来像一个句柄,你究竟想要获得什么?

hwnd_Child = (HWND)0x00030756;

(当然,这只是一个例子。无论如何硬编码处理值都无济于事。)

答案 2 :(得分:0)

首先使用HWND调用GetDlgCtrlID以获取控件ID

int GetDlgCtrlID(HWND controlHandle);

然后使用CWnd函数GetDlgItem

CWnd* GetDlgItem(int controlID);