Dialog - OnChange kommt nicht an (Message Reflection)



  • in MyEdit:
    ON_CONTROL_REFLECT ==> ON_CONTROL_REFLECT_EX

    BOOL CMyEdit::OnChange()
    {
      // ... your code ..
       return FALSE; // nö, hab gar nix gemacht! :=)
    }
    

    Der MFC Reflection-Mechanismus erlaubt normalerweise, über den Rückgabewert anzugeben, ob die nitification weiter geroutet werden soll (TRUE: notify "schlucken")
    Problem: der normale ON_CONTROL_REFLEC-Handler erlaubt keinen Rückgabewert, dafür gibt es ON_CONTROL_REFLEXT_EX und ON_NOTIFY_REFLECT_EX. Das ist alles in msdn: TN062 versteckt.



  • Peterchen, die OnChange ist bei mir eine void. 😕
    Aber ich guck mal, ob ich das TN062 verstehe.

    Paul, hast du auch mit einer eigenen Editklasse ausprobiert? Weil normale Edits würden vermutlich funktionieren, aber ich brauche einige Extrafunktionen.



  • In MyEdit.h mußt du ON_CONTROL_REFLECT durch ON_CONTROL_REFLECT_EX ersetzen (und natürlich OnChange als BOOL deklarieren).



  • @estartu: ne, sorry, das habe ich vergessen. Werde es aber noch mit einer eigenen Klasse Versuchen. 😉
    EDIT: Solange ich in einer selbstabgeleiteten Klasse keine OnChange() - Behandlung hinzufüge funktioniert es. Füge ich aber hinzu, dann tritt der von dir beschriebene Fall ein, dass die Anwendung die Nachricht nicht empfängt.
    Empfängt die Anwendung vielleicht etwas anderes?



  • peterchen schrieb:

    In MyEdit.h mußt du ON_CONTROL_REFLECT durch ON_CONTROL_REFLECT_EX ersetzen (und natürlich OnChange als BOOL deklarieren).

    Ich kann ON_CONTROL_REFLECT da nicht finden. 😮
    Und nur den Rückgabewert ändern geht vermutlich schief. 🙄



  • also, wenn ich mir mit Spy++ die Nachrichten anschaue, dann erhält meine Anwendung direkt nach Eingabe eines Buchstaben eine "unknown" Nachricht.
    Aber vielleicht kenne ich mich mit Spy++ noch nicht so gut aus. 😉



  • Ups, MyEdit.cpp, in der Message Map 🙂
    da müßte sowas wie

    ON_CONTROL_REFLECT(EN_CHANGE, OnChange)
    

    drinstehen - sonst halt mal mit dem Debugger ranhängen, wer das OnChange denn aufruft.

    (normalerweise OnChildNotify ==> ... ==> _AfxDispatchCmdmessage ==> OnChange)



  • Juchuuu, es geht. 👍
    Dankeschön peterchen, ich glaube, das hätte ich nie gefunden. Wie sucht man sowas? Oder war das "gewusst wo"?



  • Gut zu wissen. Wie wäre es mal mit "ab in die FAQ"?
    Mir kam das mit dem Reflect irgendwie bekannt vor, jetzt weiß ich auch woher:
    estartu, schau mal in deinem Thread zur Suche in der MSDN. Da habe ich einen Link zu den Technical Notes geschrieben. Zufälligerweise ist das die TN zu Reflection!
    🤡
    Zufälle gibt's, die gibt's nicht.



  • Okay, ab in die FAQ - ich überleg schon die ganze Zeit. 😃
    Das mit dem Link ist ja spaßig... und wir denken BEIDE nicht dran. 🤡


Anmelden zum Antworten