Eventmethode nicht betretten



  • Guten Morgen!

    Es ist eigentlich fast eine Anfängerfrage aber ich stehe irgendwie auf dem Schlauch und finde auch im Internet nicht die passende Antwort.

    Ich habe eine vom "CListCtrl" abgleitete Klasse "CMyListCtrl" in der ich den NM_CUSTOMDRAW behandele:

    ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
    

    In einem Dialog "CMyDialog" setze ich die "CMyListCtrl" Klasse ein und habe dort ebenfalls den NM_CUSTOMDRAW abgefangen für mein CMyListCtrl Objekt:

    ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST, OnCustomDrawList)
    

    In diesem besonderem Fall möchte ich NUR den "CMyDialog" NM_CUSTOMDRAW nutzen. Der "CMyListCtrl" NM_CUSTOMDRAW soll nicht genutzt/betretten werden.

    Momentan ist es aber so, dass NUR der "CMyListCtrl" NM_CUSTOMDRAW durchlaufen wird.

    Danke im Voraus!


  • Mod

    Das geht nicht. Wenn Du einen (reflect) Handler im Control setzt, dann bekommt dieser immer die Nachricht.

    Du musst Dich entscheiden. Es gibt hier keine Weiterleitung.

    Warum baust Du nicht CMyListCtrl und CMyListCtrlWithCustomDraw. Und nur die erste Klasse verwendest Du im Dialog.



  • Ich hatte gehofft, dass es eine elegantere Lösung gibt, als eine neue Klasse zu erstellen. 😉

    Ich habe jetzt eine "CMyListCtrlWithCustomDraw" Klasse eingerichtet. Das Problem ist damit gelöst.

    Danke für die Hilfe!


  • Mod

    Bei so einem Konstrukt ist alles unelegant.

    Was willst Du denn sonst machen? Ein Flag definieren ud dann per SendMessage eine "andere" Nachricht an das Parent senden, denn sonst greift wieder die Reflektion?

    Da sind unterschieldiche Klassen noch sicher das eleganteste.


Anmelden zum Antworten