CTreeCtrl Doppelklick
-
Hi zusammen,
habe ein kleines Problem mit dem CTreeCtrl in Visual C++ 6.0. Hab schon wie ein Wilder gesucht, aber leider nix gefunden.
Folgendes möchte ich gerne lösen:
Ich habe ein CTree erstellt mit einem Knoten und mehreren Kindern. Wenn der User nun sich einen Eintrag auswählt, möchte ich, daß der ausgewählte Punkt in eine Tabelle eingetragen wird.
Ich habe nun folgendes Problem:
Der Eintrag soll nur ausgewählt werden, wenn der User einen Doppelklick gemacht hat und der ausgewählte Eintrag ein "Kind" ist.
Weiss jemand von Euch vielleicht ein gutes Tutorial, in dem sowas erklärt wird. Oder kann mir jemand von Euch die Lösung posten.
Vielen Dank im Voraus
-
Du könntest eine eigene Klasse erstellen und diese von CTreeCtrl ableiten. In deiner eigenen Klasse fängst du dann WM_LBUTTONDBLCLK ab. Zudem erstellst du dir z.b. eine Möglichkeit deinem eigenem CTreeCtrl ein CListBox-Zeiger (oder was auch immer) zu übergeben. Auf diesen wird dann beim Doppelklick zugegriffen und über diesen den Eintrag gemacht.
Das überprüfen ob es ein Kind ist, kann ja mit den normale Funktionen von CTreeCtrl machen, welche du ja in deiner eigenen Klasse dann auch zur Verfügung hast, da sie ja abgeleitet ist.Schliesslich ersetzt du einfach das CTreeCtrl durch deine eigene Klasse (z.b. CEigenesTreeCtrl). Schon wird sowas möglich.
Grüssli
-
Hier der Link zu einem kleinen Tutorial:
http://members.tripod.com/digitaldawn/section19/section19.htmlDu könntest auf die Nachricht NM_DBLCLK http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/treeview/notifications/nm_dblclk_treeview.asp
reagieren.
Ebenfalls könntest du auch auf WM_LBUTTONDBLCLK reagieren und anhand der HitTest (CTreeCtrl) Funktion das ausgewählte Item ermitteln.
Mit GetParentItem könntest du dann nachschauen ob der ausgewählte Item ein Rootitem ist.
http://msdn.microsoft.com/library/en-us/vclib/html/_mfc_CTreeCtrl.3a3a.GetParentItem.asp?frame=true