VB6:在第 3 方控件中获取子控件的 hWnd
Posted
技术标签:
【中文标题】VB6:在第 3 方控件中获取子控件的 hWnd【英文标题】:VB6: Get hWnd of a child control inside a 3rd Party control 【发布时间】:2011-08-01 14:28:09 【问题描述】:我有一个 vb6 第三方 UpDown 控件(让它成为 ControlX),使用 UISpy 我可以看到 ControlX 内部有 2 个控件,一个是“ThunderRT6TextBox”,另一个是“UpDown20WndClass”。
我在 ControlX 周围画了一个边框。我正在使用 ControlX hWnd,我像这样绘制边框:
hdc = BeginPaint(hwnd, tPS)
GetClientRect hwnd, controlXRect
DrawEdge hdc, controlXRect, BDR_SUNKENOUTER, BF_RECT
问题是边框是围绕着 ThunderRT6TextBox 而不是 UpDown20WndClass 绘制的(可能 ControlX hWnd 返回它的内部 ThunderRT6TextBox 控件 hwnd)。
我想获取 ControlX 的内部 UpDown20WndClass 控件 hWnd,在它周围画一个边框。
我该怎么做?
提前致谢。
【问题讨论】:
希望具有 UpDown20WndClass 的包装控件不是 Microsoft Forms 2.0 库的一部分。该库对其在 VB6 程序中的使用提出了警告,并且不能合法地重新分发,这实际上使其对大多数程序无用。 【参考方案1】:如果 updown 控件已成为文本框的子控件,您应该可以使用 EnumChildWindows 找到它。您可以使用 WinSpy 来查看是否有一个包含文本框和 updown 的整体父 hwnd,然后为它枚举。
【讨论】:
您好,感谢您的建议,但不幸的是没有全父。【参考方案2】:我在获取 ControlX hwnd 时返回“ThunderRT6TextBox”的 hwnd。要获得“UpDown20WndClass”hwnd,我需要它的父 hwnd(ControlX hwnd)。我将 GetParent 与“ThunderRT6TextBox”hwnd 一起使用,得到了公共父 hwnd,然后使用 FindWindowEx 我得到了“UpDown20WndClass”。
【讨论】:
以上是关于VB6:在第 3 方控件中获取子控件的 hWnd的主要内容,如果未能解决你的问题,请参考以下文章
在VB6中,设置FARPOINT SPREAD控件的哪个属性,以锁定显示的内容,不能修改显示的数据
delphi中的treeview控件如何取到选择节点的索引号?