OnOK und OnCancel überladen WIE?



  • Hallo Leute

    ich habe einen Dialogfeld basierte Anwendung.
    Nun möchte ich, dass bei Enter oder ESC das Programm nicht beendet wird.
    Dazu muss ich OnOK und OnCancel überladen.
    Nur habe ich keine Ahnung wie ich das machen soll.
    Wenn ich eine Funktion CDialog::OnCancel anlege bekomme ich eine Linker Fehler OnCancel(void)" (?OnCancel@CDialog@@MAEXXZ) ist bereits in SAIA_MYSQL_SERVERDlg.obj definiert.

    Vielen Dank
    Holger



  • Du hast das aber nicht wirklich so notiert, oder?

    void CDialog::OnCancel() {
    

    Du musst natürlich OnCancel für deine Klasse überschreiben (die von CDialog abgeleitet ist), nicht für CDialog.



  • So habe ich das gemacht.

    void CSAIA_MYSQL_SERVERDlg::OnCancel() 
    {
    	AfxMessageBox("Ende");
    }
    

    dann bekomme ich Fehler:
    'OnCancel': Memberfunktion wurde in 'CSAIA_MYSQL_SERVERDlg' nicht deklariert

    was fehlt da noch?

    danke Holger



  • sentinel.dd schrieb:

    So habe ich das gemacht.
    was fehlt da noch?

    danke Holger

    Die Deklaration und der Messagehandler.

    Zieh Dir auf den Dialog zwei Buttons, nenne die Resourcen-IDs IDOK und IDCANCEL und mach nen Doppelklick drauf.

    Gruß
    foo



  • danke geht nun.
    kann man noch unterscheinden, ob ESC oder X Button gedrückt wurde?
    Danke Holger



  • Indem du die Tastennachrichten abfragst.



  • Barny G. schrieb:

    Indem du die Tastennachrichten abfragst.

    Quatsch warum will jeder alles mit der hammermethode machen ESC kommt bei OnCancel raus und das kreuz zum schliessen wird über OnSysCommand als SC_CLOSE gemeldet

    WM_SYSCOMMAND

    sollte ja wohl reichen zum unterscheiden


Log in to reply