#vb6 #user32 #hwnd
#vb6 #пользователь32 #hwnd
Вопрос:
У меня есть сторонний элемент управления обновлением vb6 (пусть это будет 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).
Я хотел бы получить внутренний элемент управления HWND ControlX UpDown20WndClass, чтобы нарисовать границу вокруг него.
Как я могу это сделать?
Заранее спасибо.
Комментарии:
1. Надеемся, что обернутый элемент управления, имеющий UpDown20WndClass, не является частью библиотеки Microsoft Forms 2.0. Эта библиотека содержит предостережения против ее использования в программах VB6 и не может быть легально распространена, что фактически делает ее бесполезной для большинства программ.
Ответ №1:
Если элемент управления updown был сделан дочерним для текстового поля, вы должны иметь возможность использовать EnumChildWindows, чтобы найти его. Вы могли бы использовать WinSpy, чтобы посмотреть, существует ли общий родительский hwnd, содержащий как текстовое поле, так и updown, а затем перечислить его.
Комментарии:
1. Привет, спасибо за предложение, но, к сожалению, общего родительского элемента нет.
Ответ №2:
Я, когда получаю ControlX hwnd, он возвращает hwnd «ThunderRT6TextBox». Чтобы получить hwnd «UpDown20WndClass», мне нужен его родительский hwnd (ControlX hwnd). Я использовал getParent с помощью hwnd «ThunderRT6TextBox» и получил общий родительский hwnd, а затем с помощью FindWindowEx я получил «UpDown20WndClass».