Всем привет!
Необходимо отследить правые клики на заголовке ListView при этом зная какую колонку кликнули. С левым кликом проблем нет (пример ниже), а вот с правым никак не получается.
Нашел вот такие рекомендации по решению данной задачи: http://support.microsoft.com/kb/125694/en-us?fr=1
но, к сожалению, не смог разобраться, как это реализовать на AutoIt.
Подскажите, пожалуйста, как нужно поправить приведенный скрипт, чтобы отслеживался именно правый клик?
Необходимо отследить правые клики на заголовке ListView при этом зная какую колонку кликнули. С левым кликом проблем нет (пример ниже), а вот с правым никак не получается.
Нашел вот такие рекомендации по решению данной задачи: http://support.microsoft.com/kb/125694/en-us?fr=1
но, к сожалению, не смог разобраться, как это реализовать на AutoIt.
Подскажите, пожалуйста, как нужно поправить приведенный скрипт, чтобы отслеживался именно правый клик?
Код:
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
Opt('MustDeclareVars', 1)
Local $hWnd, $hListView, $hLV
$hWnd = GUICreate('Test ListView RClick', 300, 300)
$hListView = GUICtrlCreateListView('Col_1|Col_2|Col_3', 0, 28, 300, 300)
GUICtrlCreateListViewItem('0, 0|0, 1|0, 2', $hListView)
GUICtrlCreateListViewItem('1, 0|1, 1|1, 2', $hListView)
GUICtrlCreateListViewItem('2, 0|2, 1|2, 2', $hListView)
$hLV = GUICtrlGetHandle($hListView)
GUISetState(@SW_SHOW, $hWnd)
GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Func _WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
#forceref $hWnd, $Msg, $wParam
Local $tNMHDR, $hwndFrom, $code, $dwFlags
Local $tNMLISTVIEW, $Item, $SubItem
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hwndFrom = DllStructGetData($tNMHDR, 'hWndFrom')
$code = DllStructGetData($tNMHDR, 'Code')
Switch $hwndFrom
Case $hLV
Switch $code
Case $NM_RCLICK
$tNMLISTVIEW = DllStructCreate('hwnd hWndFrom;uint_ptr IDFrom;uint_ptr Code;int Item;int SubItem;uint NewState;uint OldState;uint Changed;int X;int Y;lparam Param', $lParam)
$Item = DllStructGetData($tNMLISTVIEW, 'Item')
$SubItem = DllStructGetData($tNMLISTVIEW, 'SubItem')
If $Item <> -1 Then ConsoleWrite('Listview RClick: Item = ' & $Item & ', Subitem = ' & $SubItem & @CRLF)
Return 0
Case $LVN_COLUMNCLICK
$tNMLISTVIEW = DllStructCreate('hwnd hWndFrom;uint_ptr IDFrom;uint_ptr Code;int Item;int SubItem;uint NewState;uint OldState;uint Changed;int X;int Y;lparam Param', $lParam)
$SubItem = DllStructGetData($tNMLISTVIEW, 'SubItem')
ConsoleWrite('Listview Header Click: Subitem = ' & $SubItem & @CRLF)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_NOTIFY