Страницы: 1
RSS
Создание элементов управления в VBA с помощью WinAPI
 
Приветствую! :)
Возникла необходимость создавать динамически элементы управления через WinAPI. Стал разбираться в этой теме. Удалось создать ListBox и добавить в него некоторые строки. Проблема в том, что созданный ListBox никак ни на что не реагирует: полосы прокрутки не работают, выделение не работает. Как будто он в режиме Disabled или Locked. Есть у кого-либо какие идеи, как заставить ListBox отвечать на действия? :)

Что имеем:
1. WinAPI функции:
Код
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long

Declare Function CreateWindow Lib "user32.dll" Alias "CreateWindowExA" ( _
     ByVal dwExStyle As WindowStylesEx, _
     ByVal lpClassName As String, _
     ByVal lpWindowName As String, _
     ByVal dwStyle As Long, _
     ByVal x As Long, _
     ByVal y As Long, _
     ByVal nWidth As Long, _
     ByVal nHeight As Long, _
     ByVal hWndParent As Long, _
     ByVal hMenu As Long, _
     ByVal hInstance As Long, _
     ByVal lpParam As Long) As Long

Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _
    ByVal hwnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Any) As Long
2. В UserForm'e создаём ListBox и добавляем значения:
Код
hlist = CreateWindow( _
    dwExStyle:=WS_EX_CLIENTEDGE, _
    lpClassName:="LISTBOX", _
    lpWindowName:="MYLISTBOX", _
    dwStyle:=WS_CHILD Or WS_VISIBLE Or LBS_NOTIFY Or WS_VSCROLL Or WS_BORDER Or LBS_HASSTRINGS, _
    x:=10, _
    y:=10, _
    nWidth:=100, _
    nHeight:=100, _
    hWndParent:=FindWindow("ThunderDFrame", Me.Caption), _
    hMenu:=0, _
    hInstance:=Application.hInstance, _
    lpParam:=0 _
)
' Добавляем значения
For x = 1 To 10
    Call SendMessage(hlist, LB_ADDSTRING, 0, CStr(x))
Next

Скриншот:
Изменено: SuperCat - 08.02.2018 12:55:23
There is no knowledge that is not power
Страницы: 1
Наверх