WM_INITDIALOG und TreeView
-
Hallo Leute,
mmmhh, schon wieder ein TreeView-Problem von mir...
Ich habe in meinem Dialog ein TreeView. Zum Initialisieren fange ich die WM_INITDIALOG Nachricht ab. Dann werden schonmal ein paar TreeView-Items eingefügt. Das funktioniert auch. Allerdings wollte ich mit folgendem Code aus der MSDN einige TreeView-Items mit einem gesetzten Häkchen versehen:
( Diesmal übergeb' ich auch das richtige Handle..., Siehe meine Frage gestern
)BOOL TreeView_SetCheckState( HWND hwndTreeView, HTREEITEM hItem, BOOL fCheck ) { TVITEM tvItem; tvItem.mask = TVIF_HANDLE | TVIF_STATE; tvItem.hItem = hItem; tvItem.stateMask = TVIS_STATEIMAGEMASK; // Since state images are one-based, 1 in this macro turns the check off, // and 2 turns it on. tvItem.state = INDEXTOSTATEIMAGEMASK( ( fCheck ? 2 : 1 ) ); return TreeView_SetItem( hwndTreeView, &tvItem ); }Die Methode gibt zwar TRUE zurück, aber ein Häkchen seh ich nicht.
Nun hab ich mit TreeView_GetImageList mir die State-ImageList des TreeViews geholt und die enthaltenen Bilder gezählt über ImageList_GetImageCount. Dabei kam 0 heraus, was mich zu der Schlussfolgerung bringt, dass das TreeView noch nicht richtig initialisiert ist, wenn ich die Häkchen setzen will.
Meine Frage: Wo soll ich die Häkchen dann setzen? Oder liegt es doch an etwas anderem?
-
hast du den style TVS_CHECKBOXES beim erzeugen des treeviews gesetzt?
-
Hallo esskar,
ich hab den zugehörigen Dialog im Ressourceneditor erstellt. Und bei den TreeView Eigenschaften hab ich unter Eigenschaften das Häkchen bei "Kontrollkästchen" gemacht. Also geh ich davon aus, dass der Style gesetzt ist.
-
schau mal in der commctrl.h ist schon eine Funktion
UINT TreeView_SetCheckState( HWND hwndTV, HTREEITEM hItem, BOOL fCheck );deklariert. Vielleicht gehts mit der.
Aber eigentlich sollte es funzen.
Ruf mal deine Funktion zunächst mit TreeView_GetRoot als HTREEITEM auf;
vielleicht übergibst du doch das falsche Handle oder vielleicht sogar das flasche HWND
-
Hallo,
Also ich hab dem TreeView jetzt eine normale ImageList hinzugefügt und seitdem gehts auch mit den Häkchen setzen. Hab nichts weiter verändert! Ist trotzdem komisch. State-ImageList und normale ImageList haben doch eigentlich nichts miteinander zu tun.
Bis dann
Cosmixx