【问题标题】:VB6: Get hWnd of a child control inside a 3rd Party controlVB6:在第 3 方控件中获取子控件的 hWnd
【发布时间】: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 程序中的使用提出了警告,并且不能合法地重新分发,这实际上使其对大多数程序无用。

标签: vb6 user32 hwnd


【解决方案1】:

如果 updown 控件已成为文本框的子控件,您应该可以使用 EnumChildWindows 找到它。您可以使用 WinSpy 来查看是否有一个包含文本框和 updown 的整体父 hwnd,然后为它枚举。

【讨论】:

  • 您好,感谢您的建议,但不幸的是没有全父。
【解决方案2】:

我在获取 ControlX hwnd 时返回“ThunderRT6TextBox”的 hwnd。要获得“UpDown20WndClass”hwnd,我需要它的父 hwnd(ControlX hwnd)。我将 GetParent 与“ThunderRT6TextBox”hwnd 一起使用,得到了公共父 hwnd,然后使用 FindWindowEx 我得到了“UpDown20WndClass”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    相关资源
    最近更新 更多