CFileDialog-Klasse
Kapselt das Standarddialogfelder, das für die geöffnete Datei oder die Dateispeichervorgänge verwendet wird.
class CFileDialog : public CCommonDialog
Mitglieder
Öffentliche Konstruktoren
Name |
Description |
---|---|
Erstellt ein CFileDialog-Objekt. |
Öffentliche Methoden
Name |
Description |
---|---|
Fügt eine Überprüfungsschaltfläche im Dialogfeld hinzugefügt. |
|
Fügt ein Kombinationsfeld im Dialogfeld hinzugefügt. |
|
Fügt ein Element einem Containersteuerelement im Dialogfeld hinzu. |
|
Fügt ein Eingabefeld im Dialogfeld hinzugefügt. |
|
Fügt ein Menü im Dialogfeld hinzugefügt. |
|
Überladen.Fügt einen Ordner der Liste der Stellen hinzu, damit der Benutzer die Elemente verfügbar sind, öffnet oder gespeichert wird. |
|
Fügt eine Schaltfläche im Dialogfeld hinzugefügt. |
|
Fügt eine Gruppe des Optionsfelds (auch als Optionsfeld) im Dialogfeld hinzugefügt. |
|
Fügt ein Trennzeichen im Dialogfeld hinzugefügt. |
|
Fügt Textinhalt im Dialogfeld hinzugefügt. |
|
Aktualisiert den Zustand CFileDialog, um die Parameter und die Flags entsprechen, die in der m_ofn-Membervariable gespeichert werden. |
|
Zeigt das Dialogfeld an und ermöglicht es dem Benutzer, um die Auswahl zu machen. |
|
Aktiviert eine Dropdownliste der Öffnen oder Schaltfläche Speichern im Dialogfeld. |
|
Beendet die Einführung von Elementen zu einer visuellen Gruppe im Dialogfeld. |
|
Ruft den aktuellen Zustand einer Überprüfungsschaltfläche (Kontrollkästchen) im Dialogfeld. |
|
Ruft den aktuellen Zustand eines Elements in einem Containersteuerelement ab, das im Dialogfeld gefunden wird. |
|
Ruft die aktuelle Sichtbarkeit und die aktivierten Zustände eines angegebenen Steuerelements ab. |
|
Ruft den aktuellen Text in einem Eingabefeldsteuerelement ab. |
|
Gibt die Erweiterung der ausgewählten Datei zurück. |
|
Gibt den Dateinamen der ausgewählten Datei zurück. |
|
Gibt den Titel der ausgewählten Datei zurück. |
|
Ruft den Pfad des aktuell geöffneten Ordners oder des Verzeichnisses für ein sowie Öffnen oder Speichern unter Standarddialogfelder ab. |
|
Ruft das interne COM-Objekt für ein benutzerdefiniertes CFileDialog-Objekt ab. |
|
Ruft das interne COM-Objekt für CFileDialog ab, das als Öffnen Dateidialogfeld verwendet wird. |
|
Ruft das interne COM-Objekt für CFileDialog ab, das als Speichern Dateidialogfeld verwendet wird. |
|
Gibt den vollständigen Pfad der nächste ausgewählten Datei zurück. |
|
Ruft die OPENFILENAME-Struktur des CFileDialog-Objekts ab. |
|
Gibt den vollständigen Pfad der ausgewählten Datei zurück. |
|
Gibt den schreibgeschützten Status der ausgewählten Datei zurück. |
|
Ruft die von ab, die der Benutzer im Dialogfeld hat. |
|
Ruft die Auswahl des Benutzers in einem Dialogfeld ab, das Mehrfachauswahl unterstützt. |
|
Ruft ein bestimmtes Element von den angegebenen Containersteuerelementen im Dialogfeld. |
|
Gibt die Position des ersten Elements der Namensliste zurück. |
|
Blendet das angegebene Steuerelement in einem sowie Öffnen oder in Speichern unter Standarddialogfelder aus. |
|
Bestimmt wenn das aktuelle im Dialogfeld Ordner-Auswahlmodus. |
|
Setzt ein Steuerelement im Dialogfeld, sodass es auf anderen hinzugefügten Steuerelemente verglichen wird. |
|
Entfernt ein Element aus einem Containersteuerelement im Dialogfeld. |
|
Legt den aktuellen Zustand einer Überprüfungsschaltfläche (Kontrollkästchen) im Dialogfeld fest. |
|
Legt den aktuellen Zustand eines Elements in einem Containersteuerelement fest, das im Dialogfeld gefunden wird. |
|
Legt den Text eines Steuerelements.Zum Beispiel der Text, der ein Optionsfeld oder ein Element in einem Menü begleitet. |
|
Legt den Text fest, der mit einem - Steuerelement, wie Schaltflächentext oder einer Eingabefeldbezeichnung zugeordnet ist. |
|
Legt die aktuelle Sichtbarkeit und die aktivierten Zustände eines angegebenen Steuerelements fest. |
|
Legt den Text für das angegebene Steuerelement in einem sowie Öffnen oder in Speichern unter Standarddialogfelder fest. |
|
Legt die Standard-Dateinamenerweiterung für ein sowie Öffnen oder Speichern unter Standarddialogfelder fest. |
|
Legt den aktuellen Text in einem Eingabefeldsteuerelement fest. |
|
Stellt einen Eigenschaftspeicher bereit, der die für definiert das Element verwendet werden, Standardwerte, die gespeichert wird. |
|
Legt den Auswahlzustand eines bestimmten Elements in einer Optionsfeldgruppe fest, oder Kombinationsfeld starten im Dialogfeld. |
|
Legt die Dialogfeldvorlage für das CFileDialog-Objekt fest. |
|
Deklariert eine visuelle Gruppe im Dialogfeld.Nachfolgende Aufrufe von allen "fügen" Methode hinzufügen diese Elemente dieser Gruppe hinzu. |
|
Aktualisiert die Daten, die in der m_ofn-Membervariable gespeichert werden, um den aktuellen Zustand des Dateidialogfelds übereinstimmt. |
Geschützte Methoden
Name |
Description |
---|---|
Aufgerufen, wenn auf die Schaltfläche geklickt wird. |
|
Aufgerufen, wenn das Kontrollkästchen deaktiviert/überprüft wird. |
|
Aufgerufen, wenn das Steuerelement aktiv ist. |
|
Bearbeitet die WM_NOTIFY CDN_SELCHANGE Meldung. |
|
Überprüft den Dateinamen, der im Dialogfeld eingegeben wird. |
|
Bearbeitet die WM_NOTIFY CDN_FOLDERCHANGE Meldung. |
|
Bearbeitet die WM_NOTIFY CDN_INITDONE Meldung. |
|
Aufgerufen, wenn das Containerelement ausgewählt ist. |
|
Ermöglicht es Ihnen, benutzerdefinierte Aktionen auszuführen, wenn die Datei-Auswahl ändert. |
|
Handlefreigabenverletzungen. |
|
Bearbeitet die WM_NOTIFY CDN_TYPECHANGE Meldung. |
Öffentliche Datenmember
Name |
Description |
---|---|
Die Struktur Windows OPENFILENAME.Bietet Zugriff auf den grundlegenden Dateidialogfeldparametern. |
Hinweise
Allgemeine Dateidialogfelder lassen Sie DateiAuswahldialogfelder beispielsweise Datei öffnen und Speichern unter, in ähnlicher Weise implementieren, das mit Windows-Standards konsistent ist.
Sie können CFileDialog verwenden, wie mit dem bereitgestellten Konstruktor ist, oder eine eigene Dialogfeldklasse von CFileDialog ableiten und einen Konstruktor schreiben, um Ihre Anforderungen anpassen.In beiden Fällen verhalten sich diese Dialogfelder wie Standard-MFC-Dialogfelder, da sie von CCommonDialog-Klasse abgeleitet werden.CFileDialog beruht auf der COMMDLG.DLL-Datei, die in Windows enthalten ist.
unterscheiden sich die Darstellung und Funktionalität CFileDialog mit Windows Vista aus früheren Versionen von Windows.Der Standardwert CFileDialog verwendet automatisch das neue Windows Vista Format ohne Codeänderungen, wenn ein Programm und Ausführung unter Windows Vista kompiliert wird.Verwenden Sie den bVistaStyle-Parameter im Konstruktor, um dieses automatische Updates manuell zu überschreiben.Die Ausnahme zum automatischen Update kann benutzerdefinierte Dialogfelder.Sie werden nicht in das neue Format konvertiert.Weitere Informationen über den Konstruktor, finden Sie unter CFileDialog::CFileDialog.
Hinweis |
---|
Das Steuerelement-ID-System unterscheidet sich in Windows Vista aus früheren Versionen von Windows, wenn Sie CFileDialog verwenden.Sie müssen alle Verweise auf CFileDialog-Steuerelemente im Code aktualisieren, bevor Sie das Projekt von einer früheren Version von Windows portieren können. |
Einige CFileDialog-Methoden werden nicht unter Windows Vista unterstützt.Überprüfen Sie das einzelne Methodenthema zu Informationen dazu, ob die - Methode unterstützt wird.Außerdem sind die folgenden geerbten Funktionen nicht unter Windows Vista unterstützt:
Die Fenstermeldungen für die CFileDialog-Klasse hängen davon ab, welches Betriebssystem Sie verwenden.Beispielsweise unterstützen Windows XP nicht CDialog::OnCancel und CDialog::OnOK für die CFileDialog-Klasse.unterstützt jedoch Windows Vista sie.Weitere Informationen über die verschiedenen Meldungen, die und die Reihenfolge generiert werden, in der sie empfangen werden, finden Sie unter CFileDialog-Beispiel: Protokollierungsereignisreihenfolge.
Um ein CFileDialog-Objekt zu verwenden, erstellen Sie zuerst das - Objekt mit dem CFileDialog-Konstruktor verwenden.Nachdem das Dialogfeld erstellt wurde, können Sie alle Werte in der CFileDialog::m_ofn-Struktur festlegen oder ändern, um die Werte oder die Bedingungen der Dialogfeld-Steuerelemente zu initialisieren.Die m_ofn-Struktur ist vom Typ OPENFILENAME.Weitere Informationen finden Sie unter OPENFILENAME die Struktur in Windows SDK.
Nachdem Sie die Dialogfeld-Steuerelemente initialisieren, rufen Sie die CFileDialog::DoModal-Methode auf, um das Dialogfeld anzuzeigen, sodass der Benutzer den Pfad und den Dateinamen eingeben kann.DoModal gibt zurück, ob der Benutzer das OK (IDOK) oder auf die Schaltfläche des Löschvorgangs (IDCANCEL) geklickt hat.Wenn DoModal IDOK zurückgibt, können Sie eine der Funktionen CFileDialog öffentlichen Members verwenden, um die Informationen abzurufen, die vom Benutzer abgelegt werden.
Hinweis |
---|
Die Windows Vista verursacht Aufrufe von IFileDialog::SetFileTypes einen Fehler.Der zweite Aufruf von SetFileTypes für jede Instanz von CFileDialog gibt E_UNEXPECTED in Windows Vista zurück.Einige CFileDialog-Methodenfunktionen rufen SetFileTypes auf.Beispielsweise generiert zwei Aufrufe von CFileDialog::DoModal für die gleiche Instanz von CFileDialogASSERT. |
CFileDialog enthält mehrere geschützte Member ein, die Sie benutzerdefinierte Behandlung Freigabenverletzungen, Dateinamenvalidierung und Listenfeldänderungsbenachrichtigung ausführen können.Diese geschützten Member sind Rückruffunktionen, dass die meisten Anwendungen nicht verwenden müssen, da Standard Behandlung automatisch ausgeführt wird.Meldungszuordnungseinträge für diese Funktionen sind nicht erforderlich, da sie virtuelle StandardFunktionen sind.
Sie können die Funktion Windows CommDlgExtendedError verwenden, um mehr über den Fehler zu ermitteln, ob ein Fehler aufgetreten ist während der Initialisierung des Dialogfelds und zu erfahren.
Die CFileDialog Zerstörung von Objekten wird automatisch behandelt.Sie müssen CDialog::EndDialog nicht aufrufen.
Um die ausgewählten mehrere Dateien des Benutzers zu lassen, legen Sie das - Flag fest OFN_ALLOWMULTISELECT bevor Sie DoModal aufrufen.Sie müssen einen eigenen Dateinamenpuffer angeben, um die zurückgegebene Liste mehrerer Dateinamen angepasst.Führen Sie dies, indem Sie m_ofn.lpstrFile mit einem Zeiger auf einen Puffer ersetzen, den Sie zugeordnet haben, nachdem Sie CFileDialog erstellen, aber bevor Sie DoModal aufrufen.
Außerdem müssen Sie m_ofn.nMaxFile festlegen, indem Sie die Anzahl von Zeichen im Puffer verwenden, der auf durch m_ofn.lpstrFile gezeigt wird.Beim Festlegen der maximalen Anzahl der zu n ausgewählt werden, Dateien, die erforderliche Puffergröße n * (_MAX_PATH + 1) + 1 sind.Der erste Punkt, der im Puffer zurückgegeben wird, ist der Pfad zum Ordner, in dem die Dateien ausgewählt wurden.Für eine Dialogfelder Windows Vista sind die Verzeichnis- und Dateinamenzeichenfolgen, mit einem zusätzlichen NULL-Zeichen nach dem letzten Dateinamen auf NULL endende.Dieses Format aktiviert die Explorer-Formatdialogfelder, um lange Dateinamen zurückzugeben, die Leerzeichen enthalten.Für alte Dialogfelder werden die Verzeichnis- und Dateinamenzeichenfolgen durch Leerzeichen getrennt und die Funktion verwendet kurze Dateinamen für Dateinamen mit Leerzeichen.
Das folgende Beispiel zeigt, wie ein Puffer verwendet, um mehrere Dateinamen abzurufen und anzuzeigen.
#define MAX_CFileDialog_FILE_COUNT 99
#define FILE_LIST_BUFFER_SIZE ((MAX_CFileDialog_FILE_COUNT * (MAX_PATH + 1)) + 1)
CString fileName;
wchar_t* p = fileName.GetBuffer( FILE_LIST_BUFFER_SIZE );
CFileDialog dlgFile(TRUE);
OPENFILENAME& ofn = dlgFile.GetOFN( );
ofn.Flags |= OFN_ALLOWMULTISELECT;
ofn.lpstrFile = p;
ofn.nMaxFile = FILE_LIST_BUFFER_SIZE;
dlgFile.DoModal();
fileName.ReleaseBuffer();
wchar_t* pBufEnd = p + FILE_LIST_BUFFER_SIZE - 2;
wchar_t* start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
{
_tprintf(_T("Path to folder where files were selected: %s\r\n\r\n"), start );
p++;
int fileCount = 1;
while( ( p < pBufEnd ) && ( *p ) )
{
start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
_tprintf(_T("%2d. %s\r\n"), fileCount, start );
p++;
fileCount++;
}
}
Um die Puffergröße auf den Benutzer zu ändern, der mehrere Dateinamen auswählt, müssen Sie eine neue Klasse von ableiten und die CFileDialogCFileDialog::OnFileNameChange-Methode überschreiben.
Wenn Sie eine neue Klasse von CFileDialog ableiten, können Sie eine Meldungszuordnung verwenden, um alle Nachrichten zu bearbeiten.Um die standardmäßige Meldungsbehandlung zu erweitern, leiten Sie eine Klasse von CFileDialog, fügen Sie eine Meldungszuordnung der neuen Klasse hinzu, und stellen Sie Memberfunktionen für die neuen Meldungen bereit.Sie müssen eine Hookfunktion nicht bereitstellen, um das Dialogfeld anzupassen.
Um das Dialogfeld anzupassen, leiten Sie eine Klasse von CFileDialog, erstellen Sie eine benutzerdefinierte Dialogfeldvorlage, und fügen Sie eine Meldungszuordnung hinzu um die Benachrichtigungsmeldungen aus den erweiterten - Steuerelementen verarbeiten.Führen Sie alle nicht verarbeiteten Meldungen an die Basisklasse weiter.Sie müssen die Hookfunktion nicht anpassen.
Wenn Sie das Windows Vista Format CFileDialog verwenden, können Sie Meldungszuordnungen und Dialogfeldvorlagen nicht verwenden.Stattdessen müssen Sie die COM-Schnittstellen für ähnliche Funktionen verwenden.
Weitere Informationen zum Verwenden von CFileDialog finden Sie unter Allgemeine Dialogfeldklassen.
Vererbungshierarchie
CFileDialog
Anforderungen
Header: afxdlgs.h