CListCtrl -> OnInitDialog -> 1. Zeile selektieren (markieren)
-
Hallo Zusammen,
beim Aufruf meines Dialogs soll die erste Zeile einer CListCtrl selektiert und markiert werden - vor allem soll sie als selektiert markiert werden.

Meine nicht Extended Style (den verwend' ich schon...), sondern die eigentliche Selektion.
Weiß zufällig jemand wie das geht? Wäre dankbar für einen Tip!
Beste Grüße
Rainer
-
Methode:
CListCtrl::SetItemState verwenden.
Parameter:
(0,LVIS_FOCUSED|LVIS_SELECTED,LVIS_FOCUSED|LVIS_SELECTED)
-
Danke für den Tip - leider bewirkt der Befehl nichts!!

-
1. Wie hast Du es gemacht?
2. Sind überhaupt Items im List Ctrl?
-
ja, es sind zwei Items vorhanden.
und so sieht's genau aus:
m_CertList.SetItemState(0,LVIS_FOCUSED|LVIS_SELECTED,LVIS_FOCUSED|LVIS_SELECTED);
-
Und genau so ist der Code richtig. Was returniert die Funktion?
-
habe eine integer als return-wert ermittelt und das ergebnis ist
1
-
Ich kann mich natuerlich taeuschen, aber ich glaube das die funktion "OnInitDialog" selber false returnieren soll wenn ein anderes element den fokus bekommen soll
ich vermute mal, es ist schon richtig selektiert, aber zb nicht sichtbar da dieses "AlwaysShowSelection" nicht aktiv ist und durch den falschen return wert der funktion Init, die liste nicht den focus bekommt
-
habe mal "FALSE" von IintDialog retunieren lassen - auch nichts...
wie war das noch:Mr Evil schrieb:
... aber zb nicht sichtbar da dieses "AlwaysShowSelection" nicht aktiv ist ...
Kann man die "AlwaysShowSelection"-Eigenschaft irgendwie aktivieren?
-
Aber sicher. Im Resource Editor, in dem Du die entsprechende Eigenschaft anzeigst oder wenn Du das Control per Create erzeugst mit TVS_SHOWSELALWAYS!
-
endlich ein Fortschritt!

mit der ShowAlways-Einstellung wird das selektierte Item auch unterlegt - allerdings nicht schwarz, wie bei einer manuellen Selektion, sondern grau!?! Aber ist schon deutlich besser als ganz ohne! Vielen Dank mal für die Tips!
-
dieses grau ist das grau wenn du etwas selektierst und dann einen anderen element den focus gibst
mach mal in der init direkt vor dem "return false;" ein "::SetFocus(m_liste);"
-
SUPER!
Das war der Durchbruch - so geht's!!Nochmals Vielen Dank!

-
Weitaus einfacher als return FALSE und SetFocus ist es natürlich die Reihenfolge der Controls so zu ändern, dass dieses List Control das erste in der Folge ist...