Re: ESC Taste = Programmende ?

From: Dirk Noack (d{dot}noack{at}ibs-automation{dot}de)
Date: 02/12/04


Date: Thu, 12 Feb 2004 05:19:05 +0100

Holger Hinzberg wrote:
>>Durch Escape wird CDialog::OnCancel aufgerufen.
>>
>>
>>>Und was kann ich dagegen tun ?
>>
>>OnCancel überschreiben.
>
>
> Aber womit ?
> Wenn ich Funktion leer lasse kann ich mein Programm gar nicht mehr
> beenden. Durch einen Klick auf das Schliessen Symbol soll es aber noch
> zu beenden sein, aber auch hier wird dann erstmal OnCancel ausgeführt.
>
> Was ist zu tun ??
>
>

Hallo Holger,

ich gehe bei diesem "Feature" immer folgendermaßen vor (ist ein Weg,
kein muss!)

1.) OnCancel überschreiben und CDialog::OnCancel() auskommentieren

Bsp.:

void CMainDlg::OnCancel()
{
    //CDialog::OnCancel();
}

2.) den Click auf das Kreuz explizit im OnSysCommand abfangen und den
Dialog dort schließen

Bsp.:

void CMainDlg::OnSysCommand(UINT nID, LPARAM lParam)
{

    ...

    if( nID == SC_CLOSE )
    {
       CDialog::OnCancel();
    }

    ...
}

PS: Mit der Enter-Taste gibt's den gleichen Effekt, d.h. auch das
MFC-Dialogfenster wird dadurch geschlossen (zur Behebung auch OnOK()
überschreiben und CDialog::OnOK() auskommentieren.

-- 
MfG
Dirk Noack
" ... Wenn man's richtig macht, geht's gleich ... "   :-)
em@il:  d {dot} n o a ck @ i b s - a u t o m a t i o n {dot} d e
http:   w w w {dot} i b s - a u t o m a t i o n {dot} d e