Здравствуйте!
Есть скрипт, создающий форму и ListView с флагом $LVS_EDITLABELS и с контекстным меню для переименования ячеек.
При переименовании происходит вывод введенного текста в консоль, а затем возвращается True для подтверждения переименования.
Дело в том, что вывод получается неполный. В случае с английскими буквами выводит в консоль только первую букву, с русскими - полный, но кракозябрами. Что делать? Может есть альтернативный вариант словить введенный текст до вывода его в ListView?
Есть скрипт, создающий форму и ListView с флагом $LVS_EDITLABELS и с контекстным меню для переименования ячеек.
При переименовании происходит вывод введенного текста в консоль, а затем возвращается True для подтверждения переименования.
Дело в том, что вывод получается неполный. В случае с английскими буквами выводит в консоль только первую букву, с русскими - полный, но кракозябрами. Что делать? Может есть альтернативный вариант словить введенный текст до вывода его в ListView?
Код:
#include <GUIConstantsEx.au3>
#include <GUIListView.au3>
#include <WindowsConstants.au3>
Opt('GUIOnEventMode', 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 505, 281, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, 'quit')
$List1 = GUICtrlCreateListView("test|test", 8, 8, 489, 266, $LVS_EDITLABELS)
GUICtrlCreateListViewItem('1|2', $List1)
GUICtrlCreateListViewItem('3|4', $List1)
$ContextMenu = GUICtrlCreateContextMenu($List1)
$Rename = GUICtrlCreateMenuItem("Rename", $ContextMenu)
GUICtrlSetOnEvent($Rename, 'Rename')
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(10)
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $WParam, $LParam)
#forceref $hWnd, $iMsg, $WParam
Local $tNMHDR = DllStructCreate($tagNMLISTVIEW, $LParam)
Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
Local $iCode = DllStructGetData($tNMHDR, "Code")
Switch $iCode
Case $LVN_ENDLABELEDITA, $LVN_ENDLABELEDITW
Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $lParam)
Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))
ConsoleWrite('Text: ' & DllStructGetData($tBuffer, "Text") & @CRLF)
Return True
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
Func Rename()
$ListHandle = GUICtrlGetHandle($List1)
$ListIdentificator = _GUICtrlListView_GetSelectedIndices($ListHandle, True)
IF $ListIdentificator[0] = 0 Then Return
_GUICtrlListView_EditLabel($ListHandle, $ListIdentificator[1])
EndFunc
Func quit()
Exit
EndFunc