Основная задача - динамически менять меню в зависимости от того над какой ячейкой находится курсор. В скрипте в данный момент меню вообще не работает. Когда делал упрощёный пример, не смог воспроизвести работоспособность. В основном скрипте меню появляется. Но $iHotSubItem не изменяется. Тоесть, первое значение $iHotSubItem так и остаётся, не смотря на то что при движении курсора над ListView $iHotSubItem принимает новые значения. В основном скрипте я это проверял. Вобщем, прошу всё починить)
Код:
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiListView.au3>
#include <GuiMenu.au3>
$hGui = GUICreate("Test", 250, 250)
$hListView = GUICtrlCreateListView("Column 1|Column 2|Column 3", 10, 10, 230, 160)
For $i = 1 To 16
GUICtrlCreateListViewItem("Item " & $i & "1|Item " & $i & "2|Item " & $i & "3", $hListView)
Next
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hListView
Switch $iCode
Case $LVN_HOTTRACK
$tInfo2 = DllStructCreate($tagNMLISTVIEW, $lParam)
$iHotItem = DllStructGetData($tInfo2, 'Item')
$iHotSubItem = DllStructGetData($tInfo2, 'SubItem')
;if $iHotSubItem>0 then
global $LVmenu =GUICtrlCreateContextMenu($hListView)
$menuFix=GUICtrlCreateMenu("fix",$LVmenu)
GUICtrlCreateMenuItem("$iHotSubItem "&$iHotSubItem,$menuFix)
;endif
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc