NassauSky,
Good fun getting that to work:
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <GuiMenu.au3>
#Include "GUIListViewEx.au3"
Opt("GUIOnEventMode", 1)
Global Enum $iThis = 1000, $iThat
Global $fRightClick = False, $aHit, $fUDF = False
; Create GUI
$hGUI = GUICreate("ContextMenu NATIVE vs UDF", 640, 510)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
;--------------------------------------------------LEFT NATIVE SETUP--------------------------------------------------------------------------
$cListView_Left = GUICtrlCreateListView("", 30, 40, 200, 300, BitOR($LVS_DEFAULT, $WS_BORDER))
_GUICtrlListView_AddColumn($cListView_Left, "Column 1", 83)
_GUICtrlListView_AddColumn($cListView_Left, "Column 2", 83)
$iLV_Left_Index = _GUIListViewEx_Init($cListView_Left, "", 0, 0, True)
$ContextMenu = GUICtrlCreateContextMenu($cListView_Left)
GUICtrlCreateMenuItem("Run This", $ContextMenu, 1)
GUICtrlSetOnEvent(-1, "_myRoutine1")
GUICtrlCreateMenuItem("Run That", $ContextMenu, 2)
GUICtrlSetOnEvent(-1, "_myRoutine2")
;-------------------------------------------------RIGHT UDF SETUP------------------------------------------------------------------------------
$hListView_Right = _GUICtrlListView_Create($hGUI, "", 330, 40, 200, 300, BitOR($LVS_DEFAULT, $WS_BORDER)) ;UDF version
_GUICtrlListView_AddColumn($hListView_Right, "Column 1", 83)
_GUICtrlListView_AddColumn($hListView_Right, "Column 2", 83)
$iLV_Right_Index = _GUIListViewEx_Init($hListView_Right, "", 0, 0, True)
_GUIListViewEx_MsgRegister(False)
GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")
GUISetState()
;-------------------------------------------------COMMON ITEM INSERTION-------------------------------------------------------------------------
_GUIListViewEx_InsertSpec($iLV_Left_Index, 0, "Row 1a Manual Wait| Test 1b")
_GUIListViewEx_InsertSpec($iLV_Left_Index, 1, "Row 2a Manual Wait| Test 2b")
_GUIListViewEx_InsertSpec($iLV_Right_Index, 0, "Row 1a Manual Wait| Test 1b")
_GUIListViewEx_InsertSpec($iLV_Right_Index, 1, "Row 2a Manual Wait| Test 2b")
While 1
Sleep(10)
WEnd
Func _Exit()
Exit
EndFunc
Func _myRoutine1()
If $fUDF Then
MsgBox($MB_SYSTEMMODAL, "RClick", "Running This" & @CRLF & $aHit[0] & "-" & $aHit[1])
$fUDF = False
Else
$aContext =_GUIListViewEx_ContextPos()
MsgBox($MB_SYSTEMMODAL, "RClick", "Running This" & @CRLF & $aContext[1] & "-" & $aContext[2])
EndIf
EndFunc
Func _myRoutine2()
If $fUDF Then
MsgBox($MB_SYSTEMMODAL, "RClick", "Running That" & @CRLF & $aHit[0] & "-" & $aHit[1])
$fUDF = False
Else
$aContext =_GUIListViewEx_ContextPos()
MsgBox($MB_SYSTEMMODAL, "RClick", "Running That" & @CRLF & $aContext[1] & "-" & $aContext[2])
EndIf
EndFunc
Func _LV_Right_RClick() ; Called inside _WM_NOTIFY
$aHit = _GUICtrlListView_SubItemHitTest($hListView_Right)
If $aHit[0] <> -1 Then
$fUDF = True ; Click on UDF ListView
$hMenu = _GUICtrlMenu_CreatePopup()
_GUICtrlMenu_AddMenuItem($hMenu, "Run This", $iThis)
_GUICtrlMenu_AddMenuItem($hMenu, "Run That", $iThat)
Switch _GUICtrlMenu_TrackPopupMenu($hMenu, $hListView_Right, -1, -1, 1, 1, 2)
Case $iThis
_myRoutine1()
Case $iThat
_myRoutine2()
EndSwitch
_GUICtrlMenu_DestroyMenu($hMenu)
EndIf
EndFunc
Func _WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hListView_Right
Switch $iCode
Case $NM_RCLICK
_LV_Right_RClick()
Return 0
EndSwitch
EndSwitch
_GUIListViewEx_WM_NOTIFY_Handler($hWnd, $iMsg, $wParam, $lParam)
EndFunc ;==>WM_NOTIFY
All good now?
M23