Что нового

[Элементы GUI] работа с существующим, а не создаваемым ListBox

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,722
Попробуй этой функцией.

Код:
Func __GUICtrlListBox_GetText($hWnd, $iIndex)
	If Not IsHWnd($hWnd) Then
		$hWnd = GUICtrlGetHandle($hWnd)
	EndIf
	Local $tText = DllStructCreate("char Text[" & _GUICtrlListBox_GetTextLen($hWnd, $iIndex) + 1 & "]")
	_SendMessage($hWnd, $LB_GETTEXT, $iIndex, DllStructGetPtr($tText), 0, "wparam", "ptr")
	Return DllStructGetData($tText, "Text")
EndFunc   ;==>__GUICtrlListBox_GetText
 
Автор
N

Neldezheil

B like Bee
Сообщения
27
Репутация
3
Yashied сказал(а):
Попробуй этой функцией.

Код:
Func __GUICtrlListBox_GetText($hWnd, $iIndex)
	If Not IsHWnd($hWnd) Then
		$hWnd = GUICtrlGetHandle($hWnd)
	EndIf
	Local $tText = DllStructCreate("char Text[" & _GUICtrlListBox_GetTextLen($hWnd, $iIndex) + 1 & "]")
	_SendMessage($hWnd, $LB_GETTEXT, $iIndex, DllStructGetPtr($tText), 0, "wparam", "ptr")
	Return DllStructGetData($tText, "Text")
EndFunc   ;==>__GUICtrlListBox_GetText

попробовал, в $HWND указал handle своего ListBox, в $iIndex передал номер элемента списка. Сделал вывод на консоль, получается следующее:
Д°Иёг81†

попробовал вывести тоже самое через MsgBox - результат тот же(((

но самое печальное то, что даже при рефреше страницы меняется handle элемента. его я считываю так:

Код:
$sClass='Internet Explorer_TridentLstBox1'
$hList=ControlGetHandle($hWnd, '', $sClass); Получить Handle ListBox'a


но вот никак не пойму, почему тогда при одном и том же handle списка для одного и того же его элемента возвращаются разные значения :wall_brake:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,722
Ну, осталось разобраться с кодировкой.
 
Верх