2009-07-22 22 views
2

In VC++ 6.0 Dialogfeld basierte MFC-Anwendung: Ich möchte nicht, dass mein Benutzer das Fenster durch Drücken der Schaltfläche [X] in der rechten oberen Ecke des Fensters und auch (Alt + F4). Ich möchte eine messageBox anzeigen ("Möchten Sie die Anwendung wirklich schließen"); Wenn der Benutzer auf die Schaltfläche OK klickt, muss die Anwendung geschlossen werden. Wenn der Benutzer auf die Schaltfläche ABBRECHEN klickt, darf die Anwendung nicht geschlossen werden.Schließen Schaltfläche in der Titelleiste in MFC

Antwort

4

Sie müssen OnClose() implementieren und nur die Basisklasse OnClose() aufrufen, wenn Sie beenden möchten.

2

Behandeln Sie die Nachricht WM_SYSCOMMAND und tun Sie so etwas darin.

void CMyApp::OnSysCommand(UINT nID, LPARAM lParam) 
{ 
    if(nID == SC_CLOSE) 
    { 
     if(MessageBox(_T("Really"), _T("What"), MB_YESNO) == IDYES); 
      //Do What you want here. 
     else 
      //Do something else 
    } 
    else 
    { 
     CDialog::OnSysCommand(nID, lParam); 
    } 
} 

Hier ist, wie WM_SYSCOMMAND Handler, um Ihren Code hinzuzufügen:

Zum Klassenansicht. Klicken Sie mit der rechten Maustaste auf Ihre Dialogklasse, wenn es sich um eine dialogbasierte Anwendung handelt ODER Ihre Mainframe-Klasse, wenn es sich um eine SDI/MDI-Anwendung handelt. Klicken Sie auf Eigenschaften.

Klicken Sie im Eigenschaftenfenster auf die Schaltfläche Nachrichten. Scrollen Sie nach unten zu WM_SYSCOMMAND und doppelklicken Sie in der Drop-Down-Combo, um den Handler hinzuzufügen.

ODER

Sie können es auch manuell tun, indem Sie einen Eintrag in der Meldungszuordnung hinzufügen. Und fügen Deklaration/Definition in .h/.cpp hinzu.

+0

OnSysCommand (UINT nID, LPARAM lParam) wie Sie diese Member Function zu meiner Anwendung hinzufügen. bitte ich bin neu in VC++ –

+0

diese Option ist in .net, aber ich benutze VC++ 6.0, in VC++ 6.0, wenn Sie mit der rechten Maustaste auf Dialogfeld Klasse der Dialog-basierte Anwendung gibt es keine Option wie Eigenschaften. besser werde ich manuell versuchen, aber Sory, Sie zu fragen, ich weiß nicht, wie man manuell hinzufügt, wenn Schritte geben, die es zu mir nützlich ist. –

+0

Wow, es funktioniert gut, danke Aamir final Ich habe das Ergebnis –

Verwandte Themen