Basisklassen-Aufrufe ...



  • Bei VC++ 6.0 und VS 2008 MFC, möchte ich lernen, Quelltext ohne
    Benutzung von Assistenten zu schreiben. Bei bestimmten Event-Handlern
    müssen Basisklassen-Aufrufe hinzugefügt werden, Wann ?



  • Also direkt bei Event-Handlern, wo du Einträge in die MessageMap machst, hast du keine Basisklassenmethode. Wenn du virtuelle Methoen aus CWnd usw. überschreibst, empfiehlt es sich eigentlic grundsätztlich immer die Basismethode vorher aufzurufen.


  • Mod

    Grundsätzlichg sollte man auch bei allen ON_WM_... Message Map Einträgen die Basisklasse aufrufen.
    Bei virtuellen Funktionen ist es an sich auch klar.

    Wenn ich jetzt so drüber nachdenke muss man es eigentlich immer machen, nur nicht bei ON_COMMAND / ON_UPDATE_... Handlern



  • Martin Richter schrieb:

    Grundsätzlichg sollte man auch bei allen ON_WM_... Message Map Einträgen die Basisklasse aufrufen.
    Bei virtuellen Funktionen ist es an sich auch klar.

    Wenn ich jetzt so drüber nachdenke muss man es eigentlich immer machen, nur nicht bei ON_COMMAND / ON_UPDATE_... Handlern

    Ausnahmen bestätigen die Regel. 😉

    Wenn man z.B. CMyView::PostNcDestroy überschreibt, weil man ein abgeleitetes CView auf dem Stack und nicht auf dem Heap erzeugt, dann wäre ein Aufruf von CView::PostNcDestroy() eher kontraproduktiv.


  • Mod

    sri schrieb:

    Ausnahmen bestätigen die Regel. 😉

    Jo! Sie machen den eigentlichen Spaß am Programmieren aus... 😃



  • Frage, Nicht nur wann werden Basisklasse-Aufrufe benötigt, sodern was
    bezwecken sie. Wenn man in einer CEditView-Klasse OnKeyDown überschreibt, dann
    ist es klar das ein Basisklassen-Aufruf benötigt wird, es muss ja schliesslich
    Text geschrieben werden. Aber was bringt es, wenn OnLButtonDown ein Basis-
    klassen-Aufruf hat ?


  • Mod

    Na denk doch mal nach:
    Der Mausklick wird behandelt und ein Edit-Control würde damit das Auswählen eines Textes über die Maus behandeln. Oder bei einem List-Ctrl, markieren + Drag&Drop.


Anmelden zum Antworten