Ist gar nicht so schwer:
In der Callbackschleife muss man auf #WM_Notify reagieren und da auf #nm_dbclick. Wenn man mit Procedurereturn ungleich 0 antwortet, wird die Nachricht verschluckt.
in *msg\hwndFrom kann man feststellen welches Treegadget betroffen ist (ich hab mal ein primitives global für TreeGadget0 benutzt).
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
Mehr Infos über das TreeView Control:
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
Viel Spaß.
Achja: Ich hab jetzt nicht getestet, ob du dann überhaupt noch eine Meldung bekommst, ob ein Doppelklick auf das TreeGadget erfolgt ist. Möglich, das die Meldung komplett geschluckt wird und du mit PostEvent(Event [, Window, Object [, Type [, Data]]]) was bauen musst. Eventuell mit #PB_Event_FirstCustomValue als event und das in deinen Routinen auf das Gadget zurück biegst.
Code: Alles auswählen
EnableExplicit
Global TreeGadget
Procedure WinCallback(hWnd, uMsg, WParam, LParam)
; Windows fills the parameter automatically, which we will use in the callback...
;Debug "xx"+TreeGadget+" "+hwnd +" "+Hex(umsg)
If umsg=#WM_NOTIFY
Protected *msg.nmhdr ; Solange nicht gesichert ist, welche Nachricht es ist, darf man nur auf \code zugreifen!
*msg=LParam
If *msg\code=#NM_DBLCLK
Debug "doubleclick on "+ *msg\hwndFrom +" (tree0:"+TreeGadget+")"
ProcedureReturn 1; verschlucken
EndIf
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Define id,a
If OpenWindow(0, 0, 0, 355, 180, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TreeGadget(0, 10, 10, 160, 160) ; TreeGadget standard
TreeGadget(1, 180, 10, 160, 160, #PB_Tree_CheckBoxes | #PB_Tree_NoLines); TreeGadget with Checkboxes + NoLines
TreeGadget=GadgetID(0)
SetWindowCallback(@WinCallback())
For ID = 0 To 1
For a = 0 To 10
AddGadgetItem (ID, -1, "Normal Item "+Str(a), 0, 0) ; if you want to add an image, use
AddGadgetItem (ID, -1, "Node "+Str(a), 0, 0) ; ImageID(x) as 4th parameter
AddGadgetItem(ID, -1, "Sub-Item 1", 0, 1) ; These are on the 1st sublevel
AddGadgetItem(ID, -1, "Sub-Item 2", 0, 1)
AddGadgetItem(ID, -1, "Sub-Item 3", 0, 1)
AddGadgetItem(ID, -1, "Sub-Item 4", 0, 1)
AddGadgetItem (ID, -1, "File "+Str(a), 0, 0) ; sublevel 0 again
Next
Next
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf