Share via


MODELESS-Beispiel: Verwendet ein CDialog-Objekt als nicht modale Dialogfeld

Das MODELESS-Beispiel veranschaulicht die Verwendung eines Objekts CDialog MFC als nicht modales Dialogfeld. UNGEBUNDEN ist eine einfache dialogfeldbasierte Anwendung, die verwaltet ein Listenfeld seine im Hauptdialogfeld und gleichzeitig ein nicht modales Dialogfeld, das Sie dem Listenfeld im Hauptfenster von Zeichenfolgen hinzufügen kann.

SicherheitshinweisSicherheitshinweis

Dieser Beispielcode soll ein Konzept veranschaulichen, und es wird nur den Code, der für dieses Konzept relevant sind. Möglicherweise erfüllt dieser nicht die Sicherheitsanforderungen für eine bestimmte Umgebung, und er sollte nicht genau wie dargestellt verwendet werden. Wir empfehlen, Sicherheits- und Fehlerbehandlungscode hinzuzufügen, um Ihre Projekte sicherer und stabiler zu machen. Microsoft stellt diesen Beispielcode "Wie besehen"keine Garantien.

So erhalten Sie Beispiele und Anweisungen für deren Installation:

Um Beispiele von Visual Studio zuzugreifen

  • im Menü Hilfe Menü klicken Beispiele.

    Standardmäßig sind die Beispiele in installiert. Laufwerk: \Programme\Microsoft visual Studio 10.0\Samples\.

  • Die neueste Version dieses Beispiels und eine Liste der anderen Beispiele finden Sie unter Visual Studio Samples auf der MSDN-Website.

Erstellen und Ausführen des Beispiels

So erstellen Sie und führen das MODELESS-Beispiel

  1. Öffnen Sie die Projektmappe modeless.sln.

  2. erstellen Sie Menü, klicken Sie auf erstellen.

  3. Debuggen Sie auf Menü, klicken Sie auf Starten ohne Debuggen.

Wenn das Beispiel gestartet wird, wird ein leeres Listenfeld. Sie können das nicht modale Dialogfeld öffnen, indem Sie hinzufügen. Selbst, während das Dialogfeld Modeless Adder mit geöffnet ist, können Sie den Fokus wieder zum Hauptmenü Dialogfeld schalten. Die hinzufügen Schaltfläche im Hauptdialogfeld ist nicht verfügbar, wenn das nicht modale Dialogfeld geöffnet ist, so dass der Benutzer mehrere Instanzen des Felds nicht modale erstellen kann nicht.

Das Hauptdialogfeld CMainDlg Klasse verwaltet einen Zeiger auf das nicht modale Dialogfeld. Wird nur für Benutzerfreundlichkeit;Sobald erstellt, ist das nicht modale Dialogfeld keine weitere Verwaltung erforderlich. In der Anwendung Sie möglicherweise auswählen, nicht modale Feld Informationen bieten – dieser Zeiger würden bieten Zugriff auf die C++-Objekt Verwaltung das Dialogfeld und daher wäre ein hervorragender Ausgangspunkt.

Der Code für die Schaltfläche für Add im Hauptdialogfeld wird vom nicht modalen Dialogfeld unter Verwendung der Funktion Create anstelle eines Aufrufs von DoModal erstellt. Dies ist, was das Feld nicht modale; machtNachrichten für das Feld wird von Windows anders behandelt. Zerstören des Dialogfelds wird EndDialog nicht; verwendetStattdessen wird DestroyWindow aufgerufen. Da die normalen OnOk und Memberfunktionen eines Objekts OnCancelCDialogEndDialogaufrufen würden, müssen Sie sicherstellen, dass des nicht modalen Dialogfelds nicht diese Funktionen nicht aufgerufen und stattdessen überschreibt diese DestroyWindow aufrufen.

In der Regel beim Erstellen eines modalen Dialogfelds zerstört manuell nachdem DoModal zurückgegeben werden. Da Sie Create um zurückzugeben, die beim Anzeigen des nicht modalen Dialogfelds nicht warten können, müssen Sie eine andere Methode anwenden, um mit dem Fenster verknüpfte C++-Objekt zu zerstören. In diesem Beispiel werden einen sehr einfachen Mechanismus verwendet: Es führt delete this PostNcDestroy – eine Funktion, die nach-Clientbereich des Feldes zerstört wurde aufgerufen wird.

Beachten Sie, dass das nicht modale Dialogfeld mit seiner übergeordneten Dialogfeld auf zwei unterschiedliche Arten kommuniziert. Zuerst, wenn der Benutzer OK drückt, wird die Zeichenfolge im Bearbeitungssteuerelement im nicht modalen Dialogfeld den Inhalt des im Listenfeld in das modale Dialogfeld hinzugefügt. Wenn der Benutzer das Fenster durch beliebige Mittel zerstört, ruft das nicht modale Feld Zweitens die Funktion BoxDone in dem modalen Fenster. Diese Funktion einfach setzt den Zeiger auf das modale Dialogfeld zurück und reaktiviert die Schaltfläche hinzufügen.

Schlüsselwörter

Dieses Beispiel demonstriert die Verwendung der folgenden Schlüsselwörter:

AfxGetApp; CDC::DrawIcon; CDC::GetSafeHdc; CDialog::Create; CDialog::DoModal; CDialog::OnCancel; CDialog::OnOK; CListBox::AddString; CMenu::AppendMenu; CMenu::ModifyMenu; CRect::Height; CRect::Width; CString::IsEmpty; CString::LoadString; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWnd::DestroyWindow; CWnd::DoDataExchange; CWnd::EnableWindow; CWnd::GetClientRect; CWnd::GetDlgItem; CWnd::GetWindowText; CWnd::IsIconic; CWnd::OnPaint; CWnd::OnQueryDragIcon; CWnd::OnSysCommand; CWnd::PostNcDestroy; CWnd::SendMessage; CWnd::SetActiveWindow; GetSystemMenu; GetSystemMetrics; LoadIcon

Hinweis

Einige Beispiele, z. B. eine, wurden nicht geändert, um Änderungen in der Visual C++-Assistenten, Bibliotheken und Compiler, demonstrieren aber dennoch wie Sie die gewünschte Aufgabe durchführen.

Siehe auch

Weitere Ressourcen

MFC-Beispiele