Приветствую! Возникла необходимость создавать динамически элементы управления через 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