MFC - Dialogfelder
In diesem Kapitel werden wir die Dialogfelder behandeln. Anwendungen für Windows kommunizieren häufig über Dialogfelder mit dem Benutzer.CDialog classbietet eine Schnittstelle zum Verwalten von Dialogfeldern. Der Visual C ++ - Dialogeditor erleichtert das Entwerfen von Dialogfeldern und das Erstellen ihrer Ressourcen für Dialogvorlagen.
Das Erstellen eines Dialogobjekts erfolgt in zwei Phasen.
Konstruieren Sie das Dialogobjekt.
Erstellen Sie das Dialogfenster.
Schauen wir uns ein einfaches Beispiel an, indem wir ein neues Win32-Projekt erstellen.
Step 1 - Öffnen Sie das Visual Studio und klicken Sie auf die Menüoption Datei → Neu → Projekt.
Step 2 - Sie können jetzt das Dialogfeld Neues Projekt sehen.
Step 3 - Wählen Sie im linken Bereich Vorlagen → Visual C ++ → Win32.
Step 4 - Wählen Sie im mittleren Bereich Win32-Projekt aus.
Step 5- Geben Sie den Projektnamen 'MFCDialogDemo' in das Feld Name ein und klicken Sie auf OK, um fortzufahren. Sie sehen den folgenden Dialog.
Step 6 - Klicken Sie auf Weiter.
Step 7 - Wählen Sie die oben angegebenen Optionen aus und klicken Sie auf Fertig stellen.
Step 8 - Ein leeres Projekt wird erstellt.
Step 9 - Um es zu einem MFC-Projekt zu machen, klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Eigenschaften.
Step 10 - Klicken Sie im linken Bereich auf Konfigurationseigenschaften → Allgemein.
Step 11 - Wählen Sie im Abschnitt Projektstandards die Option MFC in gemeinsam genutzter DLL verwenden und klicken Sie auf OK.
Step 12 - Fügen Sie eine neue Quelldatei hinzu.
Step 13 - Klicken Sie mit der rechten Maustaste auf Ihr Projekt und wählen Sie Hinzufügen → Neues Element.
Step 14 - Klicken Sie im Abschnitt Vorlagen auf C ++ - Datei (.cpp).
Step 15 - Legen Sie den Namen als Beispiel fest und klicken Sie auf Hinzufügen.
Step 16 - Um eine Anwendung zu erstellen, müssen wir eine Klasse hinzufügen und sie von der CWinApp des MFC ableiten.
#include <afxwin.h>
class CExample : public CWinApp {
public:
BOOL InitInstance();
};
Dialogfeld erstellen
Step 1 - Um ein Dialogfeld zu erstellen, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Ordner Ressourcendateien und wählen Sie Hinzufügen → Ressource.
Step 2 - Wählen Sie im Dialogfeld Ressource hinzufügen die Option Dialog und klicken Sie auf Neu.
Step 3 - Ein Dialogfeld muss vorbereitet werden, bevor es programmgesteuert erstellt wird.
Step 4 - Ein Dialogfeld kann zunächst manuell als Textdatei (in einer Ressourcendatei) erstellt werden.
Step 5 - Sie können jetzt die Datei MFCDialogDemo.rc sehen, die unter Ressourcendateien erstellt wurde.
Step 6- Die Ressourcendatei ist im Designer geöffnet. Das gleiche kann als Textdatei geöffnet werden. Klicken Sie mit der rechten Maustaste auf die Ressourcendatei und wählen Sie Öffnen mit.
Step 7 - Wählen Sie den Editor für den Quellcode (Text) und klicken Sie auf die Schaltfläche Hinzufügen.
Step 8 - Kehren Sie zum Designer zurück, klicken Sie mit der rechten Maustaste auf das Dialogfeld und wählen Sie Eigenschaften.
Step 9 - Sie müssen aus den vielen Optionen auswählen.
Step 10- Wie bei den meisten anderen Steuerelementen muss ein Dialogfeld identifiziert werden. Die Kennung (ID) eines Dialogfelds beginnt normalerweise mit IDD_. Ändern Sie die ID in IDD_EXAMPLE_DLG.
Dialogposition
Ein Dialogfeld muss sich "physisch" in einer Anwendung befinden. Da ein Dialogfeld normalerweise als übergeordnetes Element für andere Steuerelemente erstellt wird, hängt seine Position von seiner Beziehung zum übergeordneten Fenster oder zum Desktop ab.
Wenn Sie in das Eigenschaftenfenster schauen, sehen Sie zwei Felder, X Pos und Y Pos.
X ist der Abstand vom linken Rand des Monitors zum linken Rand des Dialogfelds.
Y ist der Abstand vom oberen Rand des Monitors zum oberen Rand des Dialogfelds.
Standardmäßig sind diese Felder auf Null gesetzt. Sie können auch wie oben gezeigt ändern.
Wenn Sie diese beiden Dimensionen als 0 angeben, werden der linke und der obere Rand des Dialogfelds so festgelegt, dass das Objekt in der Mitte des Bildschirms angezeigt wird.
Dialogfeldabmessungen
Die Abmessungen eines Dialogfelds beziehen sich auf seine Breite und Höhe. Sie können die Breite und Höhe mit Hilfe der Maus im Designerfenster ändern.
Sie können die Änderungen in Breite und Höhe in der Statusleiste sehen.
Dialogfeldmethoden
Die Basisklasse für die Anzeige von Dialogfeldern auf dem Bildschirm ist die CDialog-Klasse. Um ein Dialogfeld zu erstellen, müssen wir eine Klasse aus CDialog ableiten. Die CDialog-Klasse selbst stellt drei Konstruktoren bereit:
CDialog();
CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
Lassen Sie uns eine weitere Klasse CExampleDlg erstellen und von CDialog ableiten. Wir werden den Standardkonstruktor-Destruktor implementieren, wie im folgenden Code gezeigt.
class CExampleDlg : public CDialog {
public:
enum { IDD = IDD_EXAMPLE_DLG };
CExampleDlg();
~CExampleDlg();
};
CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {
}
CExampleDlg::~CExampleDlg() {
}
Wir müssen diesen Dialog mit der CExample :: InitInstance () -Methode instanziieren, wie im folgenden Code gezeigt.
BOOL CExample::InitInstance() {
CExampleDlg myDlg;
m_pMainWnd = &myDlg;
return TRUE;
}
Modale Dialogfelder
Es gibt zwei Arten von Dialogfeldern: modeless und modal. Modale und modelllose Dialogfelder unterscheiden sich durch den Prozess, mit dem sie erstellt und angezeigt werden.
Modeless Dialogfeld
Für ein modellloses Dialogfeld müssen Sie Ihren eigenen öffentlichen Konstruktor in Ihrer Dialogklasse angeben.
Um ein modellloses Dialogfeld zu erstellen, rufen Sie Ihren öffentlichen Konstruktor auf und rufen Sie dann die Funktion Mitglied erstellen des Dialogobjekts auf, um die Dialogressource zu laden.
Sie können Create entweder während oder nach dem Konstruktoraufruf aufrufen. Wenn die Dialogressource die Eigenschaft WS_VISIBLE hat, wird das Dialogfeld sofort angezeigt.
Wenn nicht, müssen Sie die ShowWindow-Memberfunktion aufrufen.
Modaler Dialog
Rufen Sie zum Erstellen eines modalen Dialogfelds einen der beiden in CDialog deklarierten öffentlichen Konstruktoren auf.
Rufen Sie als Nächstes die Dialogobjekte auf DoModal Mitgliedsfunktion zum Anzeigen des Dialogfelds und Verwalten der Interaktion mit ihm, bis der Benutzer OK oder Abbrechen wählt.
Diese Verwaltung durch DoModal macht das Dialogfeld modal. Bei modalen Dialogfeldern lädt DoModal die Dialogressource.
Step 1 - Um das Dialogfeld als modal anzuzeigen, rufen Sie im Ereignis CExample :: InitInstance () die DoModal () -Methode mit Ihrer Dialogvariablen auf. -
BOOL CExample::InitInstance() {
CExampleDlg myDlg;
m_pMainWnd = &myDlg;
myDlg.DoModal();
return TRUE;
}
Step 2 - Hier ist die vollständige Implementierung der Datei Example.cpp.
#include <afxwin.h>
#include "resource.h"
class CExample : public CWinApp {
public:
BOOL InitInstance();
};
class CExampleDlg : public CDialog {
public:
enum { IDD = IDD_EXAMPLE_DLG };
CExampleDlg();
~CExampleDlg();
};
CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {
}
CExampleDlg::~CExampleDlg() {
}
BOOL CExample::InitInstance() {
CExampleDlg myDlg;
m_pMainWnd = &myDlg;
myDlg.DoModal();
return TRUE;
}
CExample MyApp;
Step 3 - Wenn der obige Code kompiliert und ausgeführt wird, wird das folgende Dialogfeld angezeigt.
Dialogbasierte Anwendungen
Microsoft Visual Studio bietet eine einfachere Möglichkeit, eine Anwendung zu erstellen, die hauptsächlich auf einem Dialogfeld basiert. Im Folgenden finden Sie die Schritte zum Erstellen eines Dialogbasisprojekts mithilfe der in Visual Studio verfügbaren Projektvorlagen:
Step 1- Öffnen Sie das Visual Studio und klicken Sie auf die Menüoption Datei → Neu → Projekt. Sie können das Dialogfeld Neues Projekt sehen.
Step 2 - Wählen Sie im linken Bereich Vorlagen → Visual C ++ → MFC.
Step 3 - Wählen Sie im mittleren Bereich die Option MFC-Anwendung.
Step 4- Geben Sie den Projektnamen 'MFCModalDemo' in das Feld Name ein und klicken Sie auf OK, um fortzufahren. Sie sehen das folgende Dialogfeld.
Step 5 - Klicken Sie auf Weiter.
Step 6 - Wählen Sie die im obigen Dialogfeld angezeigten Optionen aus und klicken Sie auf Weiter.
Step 7 - Aktivieren Sie alle Optionen, die Sie in Ihrem Dialogfeld auswählen, z. B. Felder maximieren und minimieren, und klicken Sie auf Weiter.
Step 8 - Klicken Sie auf Weiter.
Step 9- Es werden diese beiden Klassen generiert. Sie können den Namen der Klassen ändern und auf Fertig stellen klicken.
Step 10 - Sie können jetzt sehen, dass der MFC-Assistent dieses Dialogfeld und die Projektdateien standardmäßig erstellt.
Step 11 - Wenn Sie diese Anwendung ausführen, wird die folgende Ausgabe angezeigt.