gcue Posted June 18, 2012 Share Posted June 18, 2012 Hello. I am trying to single out double click events for different listviews and am not sure if using WinExists is the best method. expandcollapse popupFunc WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam) #forceref $hWndGUI, $MsgID, $wParam Local $tNMHDR, $hwndFrom, $code, $i_idNew, $idFrom, $i_idOld Local $tNMTBHOTITEM, $hMenu, $aRet, $iMenuID = -1 Local $hWndListView, $iWndListView, $jWndListView Local $tInfo, $uInfo, $vInfo ;~ MsgBox(0, "" ;~ $hWndListView = $nListView ;~ If Not IsHWnd($nListView) Then $hWndListView = GUICtrlGetHandle($nListView) If WinExists("PC Notes") Then $hWndListView = GUICtrlGetHandle($nListView) ;~ $iWndListView = $printers_listview ;~ If Not IsHWnd($printers_listview) Then $iWndListView = GUICtrlGetHandle($printers_listview) If WinExists("Multi-Printer Test") Then $iWndListView = GUICtrlGetHandle($printers_listview) ;~ $jWndListView = $network_mappings_listview ;~ If Not IsHWnd($network_mappings_listview) Then $jWndListView = GUICtrlGetHandle($network_mappings_listview) If WinExists("Network Drive Mappings") Then $jWndListView = GUICtrlGetHandle($network_mappings_listview) $tNMHDR = DllStructCreate($tagNMHDR, $lParam) $hwndFrom = DllStructGetData($tNMHDR, "hWndFrom") $idFrom = DllStructGetData($tNMHDR, "IDFrom") $code = DllStructGetData($tNMHDR, "Code") Switch $hwndFrom Case $hWndListView Switch $code Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam) Local $iIndex = DllStructGetData($tInfo, "Index") Local $sItemText = _GUICtrlListView_GetItemText($nListView, $iIndex) If $sItemText <> "" Then PCNotes_OpenItem() EndIf EndSwitch Case $iWndListView Switch $code Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button $uInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam) Local $iIndex = DllStructGetData($uInfo, "Index") Local $tItemText = _GUICtrlListView_GetItemText($printers_listview, $iIndex) If $tItemText <> "" Then Printers_WebConsole($tItemText) EndIf EndSwitch Case $jWndListView Switch $code Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button $vInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam) Local $iIndex = DllStructGetData($vInfo, "Index") Local $uItemText = _GUICtrlListView_GetItemText($network_mappings_listview, $iIndex) If $uItemText <> "" Then NetworkMappings_Initials_Edit() EndIf EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY If I simply use the following, I get conflicts (sometimes wrong function executes): $hWndListView = GUICtrlGetHandle($nListView) $iWndListView = GUICtrlGetHandle($printers_listview) $jWndListView = GUICtrlGetHandle($network_mappings_listview) thanks in advance! Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted June 18, 2012 Moderators Share Posted June 18, 2012 gcue, Way too complicated! You have the ControlID in the struct - so use it: expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIListView.au3> $hGUI = GUICreate("Test", 500, 500) $nListView = GUICtrlCreateListView("ListView", 10, 10, 400, 100) $printers_listview = GUICtrlCreateListView("Printers", 10, 120, 400, 100) $network_mappings_listview = GUICtrlCreateListView("Network", 10, 230, 400, 100) For $i = 1 To 3 GUICtrlCreateListViewItem("Item " & $i, $nListView) GUICtrlCreateListViewItem("Printer " & $i, $printers_listview) GUICtrlCreateListViewItem("Network " & $i, $network_mappings_listview) Next GUISetState() GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam) $tNMHDR = DllStructCreate($tagNMHDR, $lParam) $idFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $iCode Case $NM_DBLCLK $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam) Local $iIndex = DllStructGetData($tInfo, "Index") Switch $idFrom Case $nListView Local $sItemText = _GUICtrlListView_GetItemText($nListView, $iIndex) If $sItemText <> "" Then ;PCNotes_OpenItem() ConsoleWrite("PCNotes_OpenItem" & @CRLF) EndIf Case $printers_listview Local $tItemText = _GUICtrlListView_GetItemText($printers_listview, $iIndex) If $tItemText <> "" Then ;Printers_WebConsole($tItemText) ConsoleWrite("Printers" & @CRLF) EndIf Case $network_mappings_listview Local $uItemText = _GUICtrlListView_GetItemText($network_mappings_listview, $iIndex) If $uItemText <> "" Then ;NetworkMappings_Initials_Edit() ConsoleWrite("Network" & @CRLF) EndIf EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY All clear? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
gcue Posted June 18, 2012 Author Share Posted June 18, 2012 much cleaner! many thanks Melba =) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now