В новой версии кол-во UDF увеличилось, что не может не радовать, но увеличилось также кол-во вопросов. :-)
Взять к примеру
Цитата:
Можно ли выполнять редактирование по месту в текстах элементов ListView ?
|
, я и не думал, что это сложная задача, пока сам не столкнулся с ней. Пример из справки (немного отредактированный):
Код:

#include <GuiConstants.au3>
#include <GuiListView.au3>
$Gui = GUICreate("Test", 300, 200)
$hListView = _GUICtrlListView_Create($GUI, "Items|SubItems", 2, 2, 296, 196, BitOR($LVS_EDITLABELS, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
$ListItem1 = _GUICtrlListView_AddItem($hListView, "Item1")
$ListItem2 = _GUICtrlListView_AddItem($hListView, "Item2")
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
$hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case $LVN_BEGINLABELEDIT
Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
Return False
Case $LVN_ENDLABELEDIT
Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))
If StringLen(DllStructGetData($tBuffer, "Text")) Then Return True
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
Я смутно понимал, что для этой задачи нужно применить
GuiRegisterMsg(), но не думал, что это будет довольно таки сложная конструкция, для казалось простой задачи. Вот если бы кто-нибудь разжевал её (
Код:

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
), было- бы вообще здорово. В идеале хотелось бы научиться решать подобные задачи самостоятельно, без справки, но к сожалению уровень моих знаний далёк от этого :-(.