Freigeben über


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

CFileDialog::CFileDialog

Erstellt ein CFileDialog-Objekt.

Öffentliche Methoden

Name

Description

CFileDialog::AddCheckButton

Fügt eine Überprüfungsschaltfläche im Dialogfeld hinzugefügt.

CFileDialog::AddComboBox

Fügt ein Kombinationsfeld im Dialogfeld hinzugefügt.

CFileDialog::AddControlItem

Fügt ein Element einem Containersteuerelement im Dialogfeld hinzu.

CFileDialog::AddEditBox

Fügt ein Eingabefeld im Dialogfeld hinzugefügt.

CFileDialog::AddMenu

Fügt ein Menü im Dialogfeld hinzugefügt.

CFileDialog::AddPlace

Überladen. Fügt einen Ordner der Liste der Stellen hinzu, damit der Benutzer die Elemente verfügbar sind, öffnet oder gespeichert wird.

CFileDialog::AddPushButton

Fügt eine Schaltfläche im Dialogfeld hinzugefügt.

CFileDialog::AddRadioButtonList

Fügt eine Gruppe des Optionsfelds (auch als Optionsfeld) im Dialogfeld hinzugefügt.

CFileDialog::AddSeparator

Fügt ein Trennzeichen im Dialogfeld hinzugefügt.

CFileDialog::AddText

Fügt Textinhalt im Dialogfeld hinzugefügt.

CFileDialog::ApplyOFNToShellDialog

Aktualisiert den Zustand CFileDialog, um die Parameter und die Flags entsprechen, die in der m_ofn-Membervariable gespeichert werden.

CFileDialog::DoModal

Zeigt das Dialogfeld an und ermöglicht es dem Benutzer, um die Auswahl zu machen.

CFileDialog::EnableOpenDropDown

Aktiviert eine Dropdownliste der Öffnen oder Schaltfläche Speichern im Dialogfeld.

CFileDialog::EndVisualGroup

Beendet die Einführung von Elementen zu einer visuellen Gruppe im Dialogfeld.

CFileDialog::GetCheckButtonState

Ruft den aktuellen Zustand einer Überprüfungsschaltfläche (Kontrollkästchen) im Dialogfeld.

CFileDialog::GetControlItemState

Ruft den aktuellen Zustand eines Elements in einem Containersteuerelement ab, das im Dialogfeld gefunden wird.

CFileDialog::GetControlState

Ruft die aktuelle Sichtbarkeit und die aktivierten Zustände eines angegebenen Steuerelements ab.

CFileDialog::GetEditBoxText

Ruft den aktuellen Text in einem Eingabefeldsteuerelement ab.

CFileDialog::GetFileExt

Gibt die Erweiterung der ausgewählten Datei zurück.

CFileDialog::GetFileName

Gibt den Dateinamen der ausgewählten Datei zurück.

CFileDialog::GetFileTitle

Gibt den Titel der ausgewählten Datei zurück.

CFileDialog::GetFolderPath

Ruft den Pfad des aktuell geöffneten Ordners oder des Verzeichnisses für ein sowie Öffnen oder Speichern unter Standarddialogfelder ab.

CFileDialog::GetIFileDialogCustomize

Ruft das interne COM-Objekt für ein benutzerdefiniertes CFileDialog-Objekt ab.

CFileDialog::GetIFileOpenDialog

Ruft das interne COM-Objekt für CFileDialog ab, das als Öffnen Dateidialogfeld verwendet wird.

CFileDialog::GetIFileSaveDialog

Ruft das interne COM-Objekt für CFileDialog ab, das als Speichern Dateidialogfeld verwendet wird.

CFileDialog::GetNextPathName

Gibt den vollständigen Pfad der nächste ausgewählten Datei zurück.

CFileDialog::GetOFN

Ruft die OPENFILENAME-Struktur des CFileDialog-Objekts ab.

CFileDialog::GetPathName

Gibt den vollständigen Pfad der ausgewählten Datei zurück.

CFileDialog::GetReadOnlyPref

Gibt den schreibgeschützten Status der ausgewählten Datei zurück.

CFileDialog::GetResult

Ruft die von ab, die der Benutzer im Dialogfeld hat.

CFileDialog::GetResults

Ruft die Auswahl des Benutzers in einem Dialogfeld ab, das Mehrfachauswahl unterstützt.

CFileDialog::GetSelectedControlItem

Ruft ein bestimmtes Element von den angegebenen Containersteuerelementen im Dialogfeld.

CFileDialog::GetStartPosition

Gibt die Position des ersten Elements der Namensliste zurück.

CFileDialog::HideControl

Blendet das angegebene Steuerelement in einem sowie Öffnen oder in Speichern unter Standarddialogfelder aus.

CFileDialog::IsPickFoldersMode

Bestimmt wenn das aktuelle im Dialogfeld Ordner-Auswahlmodus.

CFileDialog::MakeProminent

Setzt ein Steuerelement im Dialogfeld, sodass es auf anderen hinzugefügten Steuerelemente verglichen wird.

CFileDialog::RemoveControlItem

Entfernt ein Element aus einem Containersteuerelement im Dialogfeld.

CFileDialog::SetCheckButtonState

Legt den aktuellen Zustand einer Überprüfungsschaltfläche (Kontrollkästchen) im Dialogfeld fest.

CFileDialog::SetControlItemState

Legt den aktuellen Zustand eines Elements in einem Containersteuerelement fest, das im Dialogfeld gefunden wird.

CFileDialog::SetControlItemText

Legt den Text eines Steuerelements. Zum Beispiel der Text, der ein Optionsfeld oder ein Element in einem Menü begleitet.

CFileDialog::SetControlLabel

Legt den Text fest, der mit einem - Steuerelement, wie Schaltflächentext oder einer Eingabefeldbezeichnung zugeordnet ist.

CFileDialog::SetControlState

Legt die aktuelle Sichtbarkeit und die aktivierten Zustände eines angegebenen Steuerelements fest.

CFileDialog::SetControlText

Legt den Text für das angegebene Steuerelement in einem sowie Öffnen oder in Speichern unter Standarddialogfelder fest.

CFileDialog::SetDefExt

Legt die Standard-Dateinamenerweiterung für ein sowie Öffnen oder Speichern unter Standarddialogfelder fest.

CFileDialog::SetEditBoxText

Legt den aktuellen Text in einem Eingabefeldsteuerelement fest.

CFileDialog::SetProperties

Stellt einen Eigenschaftspeicher bereit, der die für definiert das Element verwendet werden, Standardwerte, die gespeichert wird.

CFileDialog::SetSelectedControlItem

Legt den Auswahlzustand eines bestimmten Elements in einer Optionsfeldgruppe fest, oder Kombinationsfeld starten im Dialogfeld.

CFileDialog::SetTemplate

Legt die Dialogfeldvorlage für das CFileDialog-Objekt fest.

CFileDialog::StartVisualGroup

Deklariert eine visuelle Gruppe im Dialogfeld. Nachfolgende Aufrufe von allen "fügen" Methode hinzufügen diese Elemente dieser Gruppe hinzu.

CFileDialog::UpdateOFNFromShellDialog

Aktualisiert die Daten, die in der m_ofn-Membervariable gespeichert werden, um den aktuellen Zustand des Dateidialogfelds übereinstimmt.

Geschützte Methoden

Name

Description

CFileDialog::OnButtonClicked

Aufgerufen, wenn auf die Schaltfläche geklickt wird.

CFileDialog::OnCheckButtonToggled

Aufgerufen, wenn das Kontrollkästchen deaktiviert/überprüft wird.

CFileDialog::OnControlActivating

Aufgerufen, wenn das Steuerelement aktiv ist.

CFileDialog::OnFileNameChange

Bearbeitet die WM_NOTIFY CDN_SELCHANGE Meldung.

CFileDialog::OnFileNameOK

Überprüft den Dateinamen, der im Dialogfeld eingegeben wird.

CFileDialog::OnFolderChange

Bearbeitet die WM_NOTIFY CDN_FOLDERCHANGE Meldung.

CFileDialog::OnInitDone

Bearbeitet die WM_NOTIFY CDN_INITDONE Meldung.

CFileDialog::OnItemSelected

Aufgerufen, wenn das Containerelement ausgewählt ist.

CFileDialog::OnLBSelChangedNotify

Ermöglicht es Ihnen, benutzerdefinierte Aktionen auszuführen, wenn die Datei-Auswahl ändert.

CFileDialog::OnShareViolation

Handlefreigabenverletzungen.

CFileDialog::OnTypeChange

Bearbeitet die WM_NOTIFY CDN_TYPECHANGE Meldung.

Öffentliche Datenmember

Name

Description

CFileDialog::m_ofn

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 Standarddialogfeld-Klassen.

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CDialog-Klasse

CCommonDialog

CFileDialog

Anforderungen

Header: afxdlgs.h

Siehe auch

Referenz

CCommonDialog-Klasse

Hierarchiediagramm