TreeView mit Dreieck statt +/-
-
Hallo,
wenn ich mit
HTHEME hTheme = OpenThemeData(NULL, L"TREEVIEW");
und
drawThemeBackground(hTheme, hdc, TVP_GLYPH, GLPS_OPENED, &rect, NULL);
einen Teil meines Trees ausgebe, erscheint immer das alte +/- Symbol.
Ich hätte aber gerne das neuere Dreiecksymbol. Wie bekomme ich Windows dazu dieses auszugeben?Sati32
-
Also, zunächst einmal Grundlegendes: Die Darstellung mit den Dreiecken ist erst ab Windows Vista möglich (bzw. Nachfolger Windows 7).
Diese kleine Modifikation macht aus "+/-"-Buttons nun "Expando"-Schaltflächen (animierte Dreiecke) im TreeView-Control (nur schnell zusammenkopiert):
if ( b_winvistastyle ) { //Fensterstil für Expando-Schaltflächen: dwStyle = WS_CHILD | WS_CLIPSIBLINGS | TVS_HASBUTTONS | TVS_SHOWSELALWAYS | TVS_EDITLABELS | TVS_TRACKSELECT; } else { //Fensterstil für klassische "+/-"-Schaltflächen: dwStyle = WS_CHILD | WS_CLIPSIBLINGS | TVS_HASBUTTONS | TVS_SHOWSELALWAYS | TVS_EDITLABELS | TVS_HASLINES; } //TreeView-Fenster als Child-Fenster generieren: hwnd_tree = CreateWindowEx( WS_EX_CLIENTEDGE, WC_TREEVIEW, TEXT( "Tree View" ), dwStyle, 0, 0, 0, 0, hwnd_frame, (HMENU)IDW_TREEVIEWWINDOW, ghinstance_app, NULL ); if ( b_winvistastyle ) { //Windows Vista visual style aktivieren SetWindowTheme( hwnd_tree, L"Explorer", NULL ); //Windows Vista visual style beim TreeView aktivieren. //Statt "+/-"-Buttons erscheinen nun "Expando"-Schaltflächen (animierte Dreiecke). //Die Selektion der einzelnen Items sind jetzt semi-transparent. SendMessage( hwnd_tree, TVM_SETEXTENDEDSTYLE, TVS_EX_FADEINOUTEXPANDOS | TVS_EX_DOUBLEBUFFER, TVS_EX_FADEINOUTEXPANDOS | TVS_EX_DOUBLEBUFFER ); //-I found out, that the TVS_EX_FADEINOUTEXPANDOS fade-out // effect will work correctly only if TVS_TRACKSELECT is set. //-Treeview will flash when it fade in/out, how can I solve this?? Add TVS_EX_DOUBLEBUFFER is OK. }
Mit b_winvistastyle (0=klassisch +/-, oder 1=Expando-Schaltflächen) legst Du fest, welche Darstellung Du haben möchtest.
HTH,
Martin
-
danke, hat prima geklappt
Sati32