INFO: Erstellen einer nicht modale Dialogfeld mit MFC-Bibliotheken

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 103788 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel veranschaulicht das Erstellen Sie ein nicht modales Dialogfeld eine Dialogfeld-Vorlage-Ressource unter Verwendung von MFC verwenden.

Um das Dialogfeld CModeless zu erstellen, sollten die folgenden Schritte werden durchgeführt:

  1. Erstellen einer von CDialog abgeleiteten Dialogfeldklasse und überschreiben Sie die Create()-Memberfunktion der CDialog. Angenommen, haben Sie Code, der folgenden ähnelt:
          class CModeless: public CDialog
               {
                 .
                 .
                 .
                 public:
                     CModeless(){ }
                     BOOL Create(UINT nID, CWnd * pWnd)
                          { return CDialog::Create(nID,pWnd);}
                 .
                 .
                 .
               };
    				
    Hinweis: Sie konnte Klassenassistenten die Dialogfeldklasse generieren und dann einfach die Create()-Funktion hinzufügen können.
  2. Schreiben Sie Code, erstellen ein Objekt der Dialogklasse und erstellen das Dialogfeldfenster. Beispielsweise, wenn Sie ein Menüelement, die das Dialogfeld anzeigen soll verfügen, kann es Code, der folgenden ähnelt:
          void CMainFrame::OnModeless()
            {
                pdlg = new CModeless;
                pdlg->Create(IDD_DIALOG1,this);
            }
    				
    , CMainFrame::pdlg als definiert ist:
    CModeless * Pdlg;
    Hinweis: Es ist wichtig, das Objekt im Stapel, sondern im Heap reservieren, wenn Sie möchten verhindern, dass das nicht modale Dialogfeld zerstört wird, wenn die Funktion beendet wird.
  3. In OnCancel oder wenn das nicht modale Dialogfeld zerstört werden muss, müssen Sie CWnd::DestroyWindow() aufrufen.
          void CModeless::OnCancel()
          {
              DestroyWindow();
          }
    				
  4. Überschreiben von CWnd::PostNcDestroy() in der Dialogfeldklasse, um das Dialogfeld Feld Objekt zu löschen:
       virtual void CModeless::PostNcDestroy() {delete this;}
    				
    PostNcDestroy() ist eine virtuelle Memberfunktion der CWnd-Klasse, von der Funktion OnNcDestroy() aufgerufen wird.
Eine Klasse nicht modales Dialogfeld i. d. r. die OnOK() überschreiben und OnCancel() Member Funktionen zum Aufrufen von DestroyWindow() und sollten nicht die Funktionen Basisklasse CDialog::OnOK() und CDialog::OnCancel() aufrufen. Die CDialog::OnOK() und CDialog::OnCancel()-Funktionen aufrufen EndDialog(). EndDialog() sollte nur bei Verwendung modale Dialogfelder aufgerufen werden.

Wenn Sie DDX (Dialog Data Exchange) und DDV (Dialog Data Validation) verwenden, Sie OnOK() Handler sind, für die Dialogfeldklasse folgendermaßen aussehen könnte:
   void CModeless::OnOK()
   {
           if (!UpdateData(TRUE))
             {
               TRACE0("UpdateData failed during dialog termination\n");
               // The UpdateData routine will set focus to correct item
               return;
             }
           DestroyWindow();
   }
		
Alles erweitern | Alles schließen

Eigenschaften

Artikel-ID: 103788 - Geändert am: Dienstag, 21. November 2006 - Version: 3.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Foundation Class Library 4.2, wenn verwendet mit:
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.5 Professional Edition
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 2.0 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 4.0 Standard Edition
Keywords: 
kbmt kbdlg kbinfo kbuidesign KB103788 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 103788
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com