Что нового

в контекстном меню не заменяется текст пунктов

Pahuchiy

Новичок
Сообщения
37
Репутация
0
Основная задача - динамически менять меню в зависимости от того над какой ячейкой находится курсор. В скрипте в данный момент меню вообще не работает. Когда делал упрощёный пример, не смог воспроизвести работоспособность. В основном скрипте меню появляется. Но $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
 
Верх