TreeView rechte Mausclick
-
- [ gelöst ]
-
Torni -
1. November 2012 um 13:35 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
Ohne Bsp. Code wird dir da niemand helfen können. Oder glaubst du, dass jemand sich erstmal hinsetzt, dein Problem anhand der recht vagen Infos nachskriptet und dir dann eine Lösung präsentiert?
-
Da reicht der Code von nem normalen TreeView:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include<GUIConstantsEx.au3>
#include<GuiTreeView.au3>
#include<TreeViewConstants.au3>
#include<WindowsConstants.au3>Global $hGui = GUICreate('TreeView', 200, 200)
[/autoit] [autoit][/autoit] [autoit]
Global $hTreeView = GUICtrlCreateTreeView(5, 5, 190, 190, BitOR($GUI_SS_DEFAULT_TREEVIEW, $TVS_CHECKBOXES), $WS_EX_CLIENTEDGE)
Global $hRoot = GUICtrlCreateTreeViewItem('Test', $hTreeView)
_GUICtrlTreeView_BeginUpdate($hTreeView)
For $x = 1 To 3
$hItem1 = _GUICtrlTreeView_AddChild($hTreeView, GUICtrlGetHandle($hRoot), StringFormat('d', $x))
Next
_GUICtrlTreeView_EndUpdate($hTreeView)
_GUICtrlTreeView_Expand($hTreeView)
GUISetState()While True
[/autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEndDas Verhalten ist da automatisch drin. Sobald man mit rechts was anderes anklickt und loslässt ist er wieder beim vorher Selektierten.
Mein Versuch war ein Codeschnipsel den ich irgendwo gefunden habe, per WM_Notify die rechte Maus abzufangen:
[autoit]
[/autoit]
Case $NM_RCLICK
$tPoint = _WinAPI_GetMousePos(1, $hTreeView)
$tTVHTI = _GUICtrlTreeView_HitTestEx($hTreeView, DllStructGetData($tPoint, 1), DllStructGetData($tPoint, 2))
$hItem = DllStructGetData($tTVHTI, 'Item')
If BitAND(DllStructGetData($tTVHTI, 'Flags'), $TVHT_ONITEM) Then
MsgBox(0,"", ".,.");;;;;;;;;;;;;;;;;;;;;;;;; hier kommt er nicht mal hin..
_GUICtrlTreeView_SelectItem($hTreeView, $hItem)
EndIfWie gesagt, gefundener Code-Schnipsel..

-
ok, nach langem probieren und suchen gelöst:
[autoit]
[/autoit][autoit][/autoit][autoit]
...$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
[/autoit][autoit][/autoit][autoit]
$hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")....
[/autoit][autoit][/autoit][autoit]Case $NM_RCLICK
[/autoit]
Local $tPoint = _WinAPI_GetMousePos(True, $hWndFrom), $tHitTest
$tHitTest = _GUICtrlTreeView_HitTestEx($hWndFrom, DllStructGetData($tPoint, 1), DllStructGetData($tPoint, 2))
If BitAND(DllStructGetData($tHitTest, "Flags"), $TVHT_ONITEM) Then
_GUICtrlTreeView_SelectItem($hWndFrom, DllStructGetData($tHitTest, 'Item'))
Local $sPfads = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, _GUICtrlTreeView_GetSelection($hTreeview)), $Delim1, $Delim)
EndIf
GUICtrlSetData($Input1, $sPfads)