Ряд непростых (для меня) вопросов по SysTreeView32 - VB
Формулировка задачи:
Итак.
Имеется форма 'чужого' приложения. На ней - 'дерево', т.е. элемент SysTreeView32. Мне нужно сделать с ним следующие ужасные вещи:
1. Нарисовать в нём линию - прям поверх всего, что в нём есть(? как ?).
2. Вывести в него (заданным цветом и шрифтом) текст - тоже поверх всего (? через API DrawText ?).
3. Развернуть (expand) все его узлы, находящиеся НИЖЕ текущего (выбранного) узла (? как достучаться до коллекции узлов ?).
4. Нарисовать/убрать вокруг него 'рамку' заданной толщины и цвета. Но, в отличие от пунктов 1 и 2, рисовать надо 'в воздухе', не 'портя' при этом дерево.
Я не силён в графических API, поэтому прошу помощи.
И ещё один вопрос:
Нет ли у кого VB-кода для 'склейки' двух BMP-файлов в один? (предполагается, что они одинакового размера, и склеиваются 'по вертикали' - так, что один оказывается ПОД другим)
У меня есть исходный код на какой-то старой версии Паскаля, но он - для склейки ТОЛЬКО 24-битных битмапов. С битмапами других цветностей он отказывается работать. Посему, в идеале, мне бы найти универсальный код. Времени детально разбираться со структурой BMP-файлов (чтобы переделать паскалевский код) просто нет.
Спасибо.
Решение задачи: «Ряд непростых (для меня) вопросов по SysTreeView32»
textual
Листинг программы
Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Declare Function CreateFont Lib 'gdi32' Alias 'CreateFontA' (ByVal nHeight As Long, ByVal nWidth As Long, ByVal nEscapement As Long, ByVal nOrientation As Long, ByVal fnWeight As Long, ByVal fdwItalic As Boolean, ByVal fdwUnderline As Boolean, ByVal fdwStrikeOut As Boolean, ByVal fdwCharSet As Long, ByVal fdwOutputPrecision As Long, ByVal fdwClipPrecision As Long, ByVal fdwQuality As Long, ByVal fdwPitchAndFamily As Long, ByVal lpszFace As String) As Long Private Declare Function SelectObject Lib 'gdi32' (ByVal hdc As Long, ByVal hObject As Long) As Long Private Declare Function DeleteObject Lib 'gdi32' (ByVal hObject As Long) As Long Private Declare Function DrawText Lib 'user32' Alias 'DrawTextA' (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long Private Declare Function GetDeviceCaps Lib 'gdi32' (ByVal hdc As Long, ByVal nIndex As Long) As Long Private Declare Function GetDC Lib 'user32' (ByVal hWnd As Long) As Long Const FW_NORMAL = 400 Const FW_BOLD = 700 Const LOGPIXELSY = 90 Const DT_CENTER = &H1 Private Sub Form_Paint() Dim hFont As Long, hOldFont As Long, rc As RECT, lSize As Long Me.Cls lSize = 14 ' Font size lSize = lSize * GetDeviceCaps(GetDC(0), LOGPIXELSY) 72 hFont = CreateFont(-lSize, 0, 0, 0, FW_NORMAL, False, False, False, 204, 0, 0, 0, 0, 'Comic Sans MS') hOldFont = SelectObject(Me.hdc, hFont) rc.Left = 0: rc.Top = 0 rc.Right = Me.ScaleWidth Screen.TwipsPerPixelX: rc.Bottom = Me.ScaleHeight Screen.TwipsPerPixelY DrawText Me.hdc, 'Hello world!', -1, rc, DT_CENTER SelectObject Me.hdc, hOldFont DeleteObject hFont End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д