Zwei Formularfelder mit einem Ereignishändler?



  • Hi,

    ich brauche ein wenig Nachhilfe.

    Wie kann ich zwei Formularfelder mit ein und demselben Ereignishändler (ON_EN_CHANGE) belegen?

    Danke für Eure Hilfe!

    Gruß Elayas



  • Ja



  • Ja



  • Hi,

    damit habt ihr das "Ob" beantwortet, aber nicht das "wie".

    Ich bekomme nämlich immer die Meldung, dass die Funktion überladen ist.

    Gruß Marc



  • Du jast ja auch nur nach dem "ob" gefragt 😉

    Dioe Funktion darf natürlich nur einmal deklariert + implementiert werden, du brauchst aber zwei Message-Map-Einträge, die jeweils auf die gleiche Funktion verweisen:

    class CFormFoo
    {
      // ...
      DECLARE_MESSAGE_MAP();
      void OnChangeEdit();
    };
    
    BEGIN_MESSAGE_MAP(CFormFoo, CForm)
        ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit)
        ON_EN_CHANGE(IDC_EDIT2, OnChangeEdit)
    END_MESSAGE_MAP()
    
    void CFormFoo::OnChangeEdit()
    {
        ::MessageBeep(IDOK);
    }
    

    Wenn's mehr als zwei Controls sind, können die ON_COMMAND_RANGE und ON_CONTROL_RANGE macros hilfreich sein.



  • peterchen schrieb:

    Du jast ja auch nur nach dem "ob" gefragt 😉

    Quark! (s. u.)
    Oder antwortest du auf 'wie alt bist du?' auch mit 'ja'?

    Elayas schrieb:

    Wie kann ich zwei Formularfelder mit ein und demselben Ereignishändler (ON_EN_CHANGE) belegen?

    Du kannst aber auch wenn du mit dem Assistenten arbeitest jedesmal einfach die gleiche Methode angeben.


Anmelden zum Antworten