(gelöst) ListView32 Messages/Notifications Probleme



  • Hallo Leute.
    Ich sitze schon seit sage und schreibe 4 Tagen an folgendem Problem:
    Ich habe mit der WinAPI und C++ eine Software geschrieben, die ein Tunierspiel leiten soll.

    Nun habe ich im Hauptfenster folgende Unterfenster eingebracht:

    http://www.gstf-clan.de/images/Erklaerung.png

    (Ich hab das Bild einfach auf meinen Webserver geladen, der hat mit dem Thema nix zu tun..)

    Nun habe ich das ganze Eventhandling nicht spezifiziert abgefangen, sondern einfach "schlampig" bei jeder Nachricht an das Fenster runterbeten lassen.
    Das kann ich aber nicht verantworten 🙂

    Nun habe ich die Software umgeschrieben doch es gibt ein Problem..
    Wenn ich bei WM_NOTIFY: Meine Nachrichten verarbeite verursache ich neue und es gibt Fehler/Überschneidungen

    Was ich euch bitten wollte:
    Könnt ihr mir sagen welche Events bei folgenden Ereignissen aufgerufen werden?
    (Ich habe nicht viel Ahnung von klassischem Messagehandling, und den Unterschied zwischen NOTIFY und MESSAGE will ich noch nicht wirklich verstehen)

    Also was wird aufgerufen wenn ich eine Neue Mannschaft links auswähle? (-> schaut auf das Bild)
    Und was wird aufgerufen wenn ich einen Haken in der rechten ListView32 setze?

    Bitte bedenkt dass man die linke ListView32 auch mit den Pfeiltasten (standart) verändern kann und markierte Einträge in der rechte ListView32 (checkboxen) mit Leertaste verändern kann..

    Vielen Dank für jegliche Hilfe!
    Johannes Schneider. 🙂


  • Mod

    eingelich immer LVN_ITEMCHANGED.

    WM_COMMAND WM_NOTIFY sind nachrichten von Controls an das Parent un geben über Ihren Status Auskunft.

    Andere Messages WM_... dienen entweder dazu, dass das OS Dir etwas sagt (Button down, Du solst Dich Zeichnen, Du hast oder verlierst den Focus). Andere Nachrichten kanst Du selber senden um dem Control etwas mitzuteilen...



  • LVN_ITEMCHANGED funktioniert leider nicht.
    Ich hab rausgefunden dass LVN_ITEMCHANGING funktioniert.

    Doch hier hab ich leider ein Problem: Erst nach zwei klicks auf ein Item der ListView32 Liste "ändert" sich das "ausgewählte Item", das die Liste zurückgibt.

    Wenn ich also einmal auf die Liste links klicke, dann sehe ich im Debugfenster, dass die ListView32 mit sagt es wäre ein völlig anderes Item ausgewählt als eigentlich ist ?!

    Wie kann man das verhindern?

    * GELÖST:
    Ich verwende nun:
    SendMessage(Vorrundenkontrolle,LVM_GETSELECTIONMARK,(WPARAM)0,(LPARAM)0)

    anstelle von GETNEXTITEM, (blöder Fehler von mir.)


  • Mod

    Unfug. LVN_ITEMCHANING wird vor der Ändeung gesendet und man kann diese ablehnen. LVN_ITEMCHANGED wird gesendet wenn die Änderung vollzogen ist.

    Also es "funktioniert" beides. die rage ist was DU brauchst.
    Außerdem bekommst Du genau gesagt was sich ändert. LVM_GETSELECTIONMARK ist oft genug gar nicht nötig. Ansonsten musst Du evtl. trotzdem direkt kontrollieren welche Items selektiert sind.



  • Ah nun hab ichs.

    Vielen Dank!


Anmelden zum Antworten