CListCtrl und GetSelectionMark()



  • Hallo.

    Wenn ich in meinem Listcontrol eine Zeile auswähle erhalte ich wenn ich die Funktion GetSelectionMark()aufrufe den Index der ausgeählten Zeile. Wenn ich keine ausgweählt habe -1. Die -1 erhalte ich aber nur anfangs. Nachdem ich eine Zeile ausgewählt habe und wieder in die frei Fläche klicke erhalte ich bei GetSelectionMark() den index der zuletzt ausgewählten Zeile. Ich möchte aber wenn ich nichts mehr markiert habe der index wieder -1 ist. Wie geht das?

    Mfg MFC Man



  • Mal so auf die schnelle ohne es wirklich getestet zu haben 😉

    Im OnKillFocus des ListControl mit SetSelectionMark wieder den Wert -1 setzen.
    Weiß nur nicht genau ob das OnKillFocus beim Klicken in einen Freien bereich oder nur beim Klicken auf ein anderes Element ausgelöstet wird.

    Gruß
    Marcus



  • Wird nicht aufgerufen bei einem klick ins freie Feld.



  • Was mir ja noch lieber wäre. Nur wenn man eine Auswahl in der Liste getroffen hat wird der Button nebendran aktiviert. Momentan frage ich erst beim klick auf den Button ab ob etwas markiert ist und bringe dann einen Fehler. Besser wäre erst gar nicht zuzulassen dass man auf OK klickt wenn nichts ausgewählt ist.



  • Ok dann kannst Du in der OnSelChange oder so den Button Enablen (WindowEnable) und beim Klicken auf den Button das LstCtrl. wieder auf -1 und Button disablen..

    Wenn ich das richtig verstanden habe..



  • Du solltest GetSelectedCount verwenden. GetSelectionMark/SetSelectionMark hat etwas mit der Auswahlerweiterung per Tastatur zu tun und nichts mit der Anzahl der gewählten Elemente.



  • Ich suche ja nicht die Anzahl der gewählten Elemente ich muss ja wissen welches Element ich selektiert habe.



  • Na klar. Habe die Lösung der Tipp mit GetSelectedCount war doch richtig danke.


Anmelden zum Antworten