CVier Control Mausklick abfangen



  • Hallo,

    wie fange ich die Mausklicks, etc ab für Controls die in einem CView eingebettet sind.
    Irgendwie werden meine manuell angelegten Einträge in der MessageMap der CView ignoriert....

    Kann mir jemand von Euchen einen Tipp geben?

    Gruss
    Achim


  • Mod

    Maus Events gehen immer an das Fenster selber.
    Wenn Du also ein CFormView hast oder ein Control in ein Fenster legst. Dann bekommt dieses Control auch seine Mausevents. Das Parent bekommt davon nichts mit.

    Du kannst subclassing verwenden, oder PreTranslateMessage (für einige Nachrichten).

    Was hast Du vor?



  • hmm ja was habe ich vor... In meiner Anwendung soll ein Fenster, ich habe jetzt ein CView verwendet und kein CFormview (was aber auch denkbar, und vielleicht logischer wäre), mehrere Listen darstellen, über aktuelle Bestände, etc.
    Im Vordergrund wird dann hauptsächlich mit Dialogen gearbeitet, während im Hintergrund das besagte Fenster stehen bleibt und sich auch automatisch aktualisiert.
    In dem eines der Listenelemente per Doppelklick ausgewählt wird, soll der Eintrag anschließend im Vordergrund mit einem Dialog abgearbeitet werden.
    Soweit klar?
    Ich habe die Darstellung der Listen im View fertig und habe im View auch die MessageMap eingebunden (Was wohl falsch ist...) und da werden die Events nicht abgefangen.
    Ich habe hier allerdings nur die Standardcontrols verwendet und diese nicht separat abgeleitet.
    Im CView habe ich auch gedacht mit PreTranslateMessage diese Events abzufangen, allerdings bekomme ich dann irgendwelche Laufzeitfehler, und habe schließlich von dem Vorhaben abgesehen, da ich nicht sicher war, ob der Weg richtig wäre.
    Wie würdest du das subclassing hier angehen?
    Oder soll ich die Controls lieber ableiten... und in deren Klasse die Events abfangen... hmm 😕


  • Mod

    Wenn dies normale Controls sind, dann senden die doch an das Parent WM_COMMAND oder WM_NOTIFY Nachrichten.
    Auch/oder gerade dann wenn eine Klick erfolgt.

    Gerade für diesen CView mit den Controls würde ich in jedem Fall ein CFormVioew verwqenden und niemalsein normales View. Alleine schon wegen der Behandlung von Rollbalken, Tastatur etc.



  • Hallo Danke,

    Ich habe PreTranslateMessage verwendet. Habe den Fehler gesucht und behoben 😉

    Gruss
    Achim


Anmelden zum Antworten