CFileDialog-Klasse

Kapselt das allgemeine Dialogfeld, das für Dateiöffnungs- oder Dateispeichervorgänge verwendet wird.

Syntax

class CFileDialog : public CCommonDialog

Member

Öffentliche Konstruktoren

Name Beschreibung
CFileDialog::CFileDialog Erstellt ein CFileDialog-Objekt.

Öffentliche Methoden

Name Beschreibung
CFileDialog::AddCheckButton Fügt dem Dialogfeld eine Kontrollkästchenschaltfläche hinzu.
CFileDialog::AddComboBox Fügt dem Dialogfeld ein Kombinationsfeld hinzu.
CFileDialog::AddControlItem Fügt einem Containersteuerelement im Dialogfeld ein Element hinzu.
CFileDialog::AddEditBox Fügt dem Dialogfeld ein Bearbeitungsfeld hinzu.
CFileDialog::AddMenu Fügt dem Dialogfeld ein Menü hinzu.
CFileDialog::AddPlace Überladen. Fügt der Liste der für den Benutzer verfügbaren Orte einen Ordner hinzu, um Elemente zu öffnen oder zu speichern.
CFileDialog::AddPushButton Fügt dem Dialogfeld eine Schaltfläche hinzu.
CFileDialog::AddRadioButtonList Fügt dem Dialogfeld eine Optionsschaltfläche (auch als Optionsfeld bezeichnet) hinzu.
CFileDialog::AddSeparator Fügt dem Dialogfeld ein Trennzeichen hinzu.
CFileDialog::AddText Fügt dem Dialogfeld Textinhalte hinzu.
CFileDialog::ApplyOFNToShellDialog Aktualisiert den Status des CFileDialog Elements, der den Parametern und Flags entspricht, die in der m_ofn Membervariable gespeichert sind.
CFileDialog::D oModal Zeigt das Dialogfeld an und ermöglicht es dem Benutzer, eine Auswahl vorzunehmen.
CFileDialog::EnableOpenDropDown Aktiviert eine Dropdownliste auf der Schaltfläche "Öffnen " oder "Speichern " im Dialogfeld.
CFileDialog::EndVisualGroup Beendet das Hinzufügen von Elementen zu einer visuellen Gruppe im Dialogfeld.
CFileDialog::GetCheckButtonState Ruft den aktuellen Status einer Kontrollkästchenschaltfläche (Kontrollkästchen) im Dialogfeld ab.
CFileDialog::GetControlItemState Ruft den aktuellen Status eines Elements in einem Containersteuerelement im Dialogfeld ab.
CFileDialog::GetControlState Ruft die aktuelle Sichtbarkeit und aktivierte Zustände eines bestimmten Steuerelements ab.
CFileDialog::GetEditBoxText Ruft den aktuellen Text in einem Bearbeitungsfeld-Steuerelement 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 Verzeichnisses für ein Dialogfeld im Explorer-Stil "Öffnen " oder "Speichern unter " ab.
CFileDialog::GetIFileDialogCustomize Ruft das interne COM-Objekt für ein angepasstes CFileDialog Objekt ab.
CFileDialog::GetIFileOpenDialog Ruft das interne COM-Objekt für ein CFileDialog , das als Dialogfeld "Datei öffnen " verwendet wird.
CFileDialog::GetIFileSaveDialog Ruft das interne COM-Objekt für ein CFileDialog , das als Dialogfeld "Datei speichern " verwendet wird.
CFileDialog::GetNextPathName Gibt den vollständigen Pfad der nächsten 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 Auswahl ab, die der Benutzer im Dialogfeld vorgenommen hat.
CFileDialog::GetResults Ruft die Auswahl des Benutzers in einem Dialogfeld ab, das die Mehrfachauswahl zulässt.
CFileDialog::GetSelectedControlItem Ruft ein bestimmtes Element aus angegebenen Containersteuerelementen im Dialogfeld ab.
CFileDialog::GetStartPosition Gibt die Position des ersten Elements der Dateinamenliste zurück.
CFileDialog::HideControl Blendet das angegebene Steuerelement in einem allgemeinen Dialogfeld im Explorer-Format "Öffnen " oder "Speichern unter " aus.
CFileDialog::IsPickFoldersMode Bestimmt, ob das aktuelle Dialogfeld im Ordnerauswahlmodus angezeigt wird.
CFileDialog::MakeProminent Platziert ein Steuerelement im Dialogfeld, sodass es im Vergleich zu anderen hinzugefügten Steuerelementen hervorsticht.
CFileDialog::RemoveControlItem Entfernt ein Element aus einem Containersteuerelement im Dialogfeld.
CFileDialog::SetCheckButtonState Legt den aktuellen Status einer Kontrollkästchenschaltfläche (Kontrollkästchen) im Dialogfeld fest.
CFileDialog::SetControlItemState Legt den aktuellen Status eines Elements in einem Containersteuerelement fest, das im Dialogfeld gefunden wird.
CFileDialog::SetControlItemText Legt den Text eines Steuerelementelements fest. Beispielsweise der Text, der ein Optionsfeld oder ein Element in einem Menü begleitet.
CFileDialog::SetControlLabel Legt den Text fest, der einem Steuerelement zugeordnet ist, z. B. Schaltflächentext oder Beschriftung eines Bearbeitungsfelds.
CFileDialog::SetControlState Legt die aktuelle Sichtbarkeit und die aktivierten Zustände eines bestimmten Steuerelements fest.
CFileDialog::SetControlText Legt den Text für das angegebene Steuerelement in einem Dialogfeld im Explorer-Format "Öffnen " oder "Speichern unter " fest.
CFileDialog::SetDefExt Legt die Standarddateierweiterung für ein Allgemeines Dialogfeld im Explorer-Format "Öffnen " oder "Speichern unter " fest.
CFileDialog::SetEditBoxText Legt den aktuellen Text in einem Bearbeitungsfeld-Steuerelement fest.
CFileDialog::SetProperties Bietet einen Eigenschaftenspeicher, der die Standardwerte definiert, die für das zu speichernde Element verwendet werden sollen.
CFileDialog::SetSelectedControlItem Legt den ausgewählten Zustand eines bestimmten Elements in einer Optionsfeldgruppe oder einem Kombinationsfeld im Dialogfeld fest.
CFileDialog::SetTemplate Legt die Dialogfeldvorlage für das CFileDialog Objekt fest.
CFileDialog::StartVisualGroup Deklariert eine visuelle Gruppe im Dialogfeld. Nachfolgende Aufrufe einer "add"-Methode fügen diese Elemente dieser Gruppe hinzu.
CFileDialog::UpdateOFNFromShellDialog Aktualisiert die in der m_ofn Membervariable gespeicherten Daten so, dass sie dem aktuellen Status des Dateidialogfelds entsprechen.

Geschützte Methoden

Name Beschreibung
CFileDialog::OnButtonClicked Wird aufgerufen, wenn auf die Schaltfläche geklickt wird.
CFileDialog::OnCheckButtonToggled Wird aufgerufen, wenn das Kontrollkästchen aktiviert/deaktiviert ist.
CFileDialog::OnControlActivating Wird aufgerufen, wenn das Steuerelement aktiv ist.
CFileDialog::OnFileNameChange Behandelt die WM_NOTIFY CDN_SELCHANGE Nachricht.
CFileDialog::OnFileNameOK Überprüft den im Dialogfeld eingegebenen Dateinamen.
CFileDialog::OnFolderChange Behandelt die WM_NOTIFY CDN_FOLDERCHANGE Nachricht.
CFileDialog::OnInitDone Behandelt die WM_NOTIFY CDN_INITDONE Nachricht.
CFileDialog::OnItemSelected Wird aufgerufen, wenn das Containerelement ausgewählt wird.
CFileDialog::OnLBSelChangedNotify Ermöglicht Es Ihnen, benutzerdefinierte Aktionen auszuführen, wenn sich die Dateiauswahl ändert.
CFileDialog::OnShareViolation Behandelt Freigabeverletzungen.
CFileDialog::OnTypeChange Behandelt die WM_NOTIFY CDN_TYPECHANGE Nachricht.

Öffentliche Datenmember

Name Beschreibung
CFileDialog::m_ofn Die Windows-Struktur OPENFILENAME . Bietet Zugriff auf grundlegende Dateidialogfeldparameter.

Hinweise

In gängigen Dateidialogfeldern können Sie Dialogfelder für die Dateiauswahl implementieren, z. B. "Datei öffnen" und "Speichern unter" in einer Weise, die mit Windows-Standards konsistent ist.

Sie können wie der bereitgestellte Konstruktor verwenden CFileDialog oder Ihre eigene Dialogfeldklasse ableiten CFileDialog und einen Konstruktor entsprechend Ihren Anforderungen schreiben. In beiden Fällen verhalten sich diese Dialogfelder wie standardmäßige MFC-Dialogfelder, da sie von der CCommonDialog-Klasse abgeleitet werden. CFileDialog basiert auf der DATEI COMMDLG.DLL, die in Windows enthalten ist.

Sowohl das Erscheinungsbild als auch die Funktionalität von CFileDialog Windows Vista oder höher unterscheiden sich von den früheren Versionen von Windows. CFileDialog Standardmäßig wird automatisch die neue Windows Vista- oder höher-Formatvorlage ohne Codeänderungen verwendet, wenn ein Programm kompiliert und unter Windows Vista oder höher ausgeführt wird. Verwenden Sie den bVistaStyle-Parameter im Konstruktor, um diese automatische Aktualisierung manuell außer Kraft zu setzen. Die Ausnahme von der automatischen Aktualisierung ist angepasste Dialogfelder. Sie werden nicht in die neue Formatvorlage konvertiert. Weitere Informationen zum Konstruktor finden Sie unter "CFileDialog::CFileDialog".

Hinweis

Das Steuerelement-ID-System unterscheidet sich in Windows Vista oder höher von früheren Versionen von Windows, wenn Sie ein CFileDialog. Sie müssen alle Verweise auf CFileDialog Steuerelemente im Code aktualisieren, bevor Sie Ihr Projekt aus einer früheren Version von Windows portieren können.

Einige CFileDialog Methoden werden unter Windows Vista oder höher nicht unterstützt. Überprüfen Sie das Thema der einzelnen Methoden, um Informationen darüber zu erhalten, ob die Methode unterstützt wird. Darüber hinaus werden die folgenden geerbten Funktionen unter Windows Vista oder höher nicht unterstützt:

Die Windows-Nachrichten für die CFileDialog Klasse variieren je nach Betriebssystem, das Sie verwenden. Windows XP unterstützt z. B. nicht CDialog::OnCancel und CDialog::OnOK für die CFileDialog Klasse. Windows Vista und spätere Betriebssysteme unterstützen sie jedoch. Weitere Informationen zu den verschiedenen generierten Nachrichten und der Reihenfolge, in der sie empfangen werden, finden Sie unter CFileDialog Sample: Logging Event Order.

Um ein CFileDialog Objekt zu verwenden, erstellen Sie zuerst das Objekt mithilfe des CFileDialog Konstruktors. Nachdem das Dialogfeld erstellt wurde, können Sie beliebige Werte in der Struktur "CFileDialog::m_ofn " festlegen oder ändern, um die Werte oder Zustände der Dialogfeldsteuerelemente zu initialisieren. Die m_ofn Struktur ist vom Typ OPENFILENAME. Weitere Informationen finden Sie in der OPENFILENAME-Struktur im Windows SDK.

Rufen Sie nach der Initialisierung der Dialogfeld-Steuerelemente die CFileDialog::D oModal-Methode auf, um das Dialogfeld anzuzeigen, damit der Benutzer den Pfad und dateinamen eingeben kann. DoModal gibt zurück, ob der Benutzer auf die Schaltfläche "OK" (IDOK) oder auf die Schaltfläche "Abbrechen" (IDCANCEL) geklickt hat. Wenn DoModal IDOK zurückgegeben wird, können Sie eine der CFileDialog öffentlichen Memberfunktionen verwenden, um die vom Benutzer bereitgestellten Informationen abzurufen.

Hinweis

Unter Windows Vista oder höher verursacht mehrere Aufrufe von IFileDialog::SetFileTypes einen Fehler. Der zweite Aufruf SetFileTypes für eine Instanz eines CFileDialog Vorgangs gibt E_UNEXPECTED in Windows Vista oder höher zurück. Einige CFileDialog Methodenfunktionen rufen auf SetFileTypes. Beispielsweise werden zwei Aufrufe CFileDialog::DoModal für dieselbe Instanz einer CFileDialog ASSERT generiert.

CFileDialog enthält mehrere geschützte Member, mit denen Sie die benutzerdefinierte Behandlung von Freigabeverstößen, der Dateinamenüberprüfung und der Änderungsbenachrichtigung für Listenfelds ausführen können. Diese geschützten Member sind Rückruffunktionen, die die meisten Anwendungen nicht verwenden müssen, da die Standardbehandlung automatisch ausgeführt wird. Nachrichtenzuordnungseinträge für diese Funktionen sind nicht erforderlich, da sie standardmäßige virtuelle Funktionen sind.

Sie können die Windows CommDlgExtendedError-Funktion verwenden, um zu ermitteln, ob während der Initialisierung des Dialogfelds ein Fehler aufgetreten ist, und um mehr über den Fehler zu erfahren.

Die Zerstörung von CFileDialog Objekten wird automatisch behandelt. Sie müssen "CDialog::EndDialog" nicht aufrufen.

Um dem Benutzer die Auswahl mehrerer Dateien zu ermöglichen, legen Sie das OFN_ALLOWMULTISELECT Flag vor dem Aufrufen DoModalfest. Sie müssen ihren eigenen Dateinamenpuffer angeben, um die zurückgegebene Liste mehrerer Dateinamen aufzunehmen. Ersetzen Sie dies durch m_ofn.lpstrFile einen Zeiger auf einen von Ihnen zugewiesenen Puffer, nachdem Sie das CFileDialogKonstrukt erstellt haben, aber bevor Sie aufrufen DoModal.

Darüber hinaus müssen Sie mithilfe der Anzahl der Zeichen im Puffer festlegen m_ofn.nMaxFile , auf die m_ofn.lpstrFileverwiesen wird. Wenn Sie die maximale Anzahl von Dateien festlegen, auf ndie ausgewählt werden soll, ist n * (_MAX_PATH + 1) + 1die erforderliche Puffergröße. Das erste im Puffer zurückgegebene Element ist der Pfad zu dem Ordner, in dem die Dateien ausgewählt wurden. Bei Dialogfeldern im Windows Vista- oder späteren Stil werden die Zeichenfolgen für Verzeichnis- und Dateinamen null beendet, wobei nach dem Nachnamen ein zusätzliches NULL-Zeichen vorhanden ist. Dieses Format ermöglicht es den Dialogfeldern im Explorer-Stil, lange Dateinamen zurückzugeben, die Leerzeichen enthalten. Bei Dialogfeldern im alten Stil werden die Zeichenfolgen für Verzeichnis- und Dateinamen durch Leerzeichen getrennt, und die Funktion verwendet kurze Dateinamen für Dateinamen mit Leerzeichen.

Im folgenden Beispiel wird veranschaulicht, wie Ein Puffer zum Abrufen und Auflisten mehrerer Dateinamen verwendet wird.

#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 als Reaktion darauf zu ändern, dass der Benutzer mehrere Dateinamen auswählt, müssen Sie eine neue Klasse ableiten CFileDialog und die CFileDialog::OnFileNameChange-Methode außer Kraft setzen.

Wenn Sie eine neue Klasse ableiten CFileDialog, können Sie eine Nachrichtenzuordnung verwenden, um Nachrichten zu verarbeiten. Um die Standardnachrichtenbehandlung zu erweitern, leiten Sie eine Klasse ab CFileDialog, fügen Sie der neuen Klasse eine Nachrichtenzuordnung hinzu und stellen Memberfunktionen für die neuen Nachrichten bereit. Sie müssen keine Hook-Funktion bereitstellen, um das Dialogfeld anzupassen.

Um das Dialogfeld anzupassen, leiten Sie eine Klasse ab CFileDialog, stellen Sie eine benutzerdefinierte Dialogfeldvorlage bereit, und fügen Sie eine Meldungszuordnung hinzu, um die Benachrichtigungen aus den erweiterten Steuerelementen zu verarbeiten. Übergeben Sie alle unverarbeiteten Nachrichten an die Basisklasse. Sie müssen die Hook-Funktion nicht anpassen.

Wenn Sie die Windows Vista- oder höher-Formatvorlage des Typs CFileDialog"Windows Vista" verwenden, können Sie keine Nachrichtenzuordnungen und Dialogfeldvorlagen verwenden. Stattdessen müssen Sie die COM-Schnittstellen für ähnliche Funktionen verwenden.

Weitere Informationen zur Verwendung CFileDialogfinden Sie unter "Allgemeine Dialogklassen".

Vererbungshierarchie

CObject

CCmdTarget

CWnd

Cdialog

CCommonDialog

CFileDialog

Anforderungen

Header: afxdlgs.h

CFileDialog::AddCheckButton

Fügt dem Dialogfeld eine Kontrollkästchenschaltfläche hinzu.

HRESULT AddCheckButton(
    DWORD dwIDCtl,
    const CString& strLabel,
    BOOL bChecked);

Parameter

dwIDCtl
Die ID der hinzuzufügenden Kontrollkästchenschaltfläche.

strLabel
Der Name der Kontrollkästchenschaltfläche.

bChecked
Ein boolescher Wert, der den aktuellen Status der Kontrollkästchenschaltfläche angibt. TRUE, wenn aktiviert; ANDERNFALLS FALSCH

Hinweise

CFileDialog::AddComboBox

Fügt dem Dialogfeld ein Kombinationsfeld hinzu.

HRESULT AddComboBox(DWORD dwIDCtl);

Parameter

dwIDCtl
Die ID des hinzuzufügenden Kombinationsfelds.

Hinweise

CFileDialog::AddControlItem

Fügt einem Containersteuerelement im Dialogfeld ein Element hinzu.

HRESULT AddControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    const CString& strLabel);

Parameter

dwIDCtl
Die ID des Containersteuerelements, dem das Element hinzugefügt werden soll.

dwIDItem
Die ID des Elements.

strLabel
Elementtext.

Hinweise

CFileDialog::AddEditBox

Fügt dem Dialogfeld ein Bearbeitungsfeld hinzu.

HRESULT AddEditBox(
    DWORD dwIDCtl,
    const CString& strText);

Parameter

dwIDCtl
Die ID des hinzuzufügenden Bearbeitungsfelds.

strText
Der Name des Bearbeitungsfelds.

Hinweise

CFileDialog::AddMenu

Fügt dem Dialogfeld ein Menü hinzu.

HRESULT AddMenu(
    DWORD dwIDCtl,
    const CString& strLabel);

Parameter

dwIDCtl
Die ID des hinzuzufügenden Menüs.

strLabel
Der Menüname.

Hinweise

CFileDialog::AddPlace

Fügt der Liste der für den Benutzer verfügbaren Orte einen Ordner hinzu, um Elemente zu öffnen oder zu speichern.

void AddPlace(
    LPCWSTR lpszFolder,
    FDAP fdap = FDAP_TOP) throw();

void AddPlace(
    IShellItem* psi,
    FDAP fdap = FDAP_TOP) throw();

Parameter

lpszFolder
Ein Pfad zum Ordner, der dem Benutzer zur Verfügung gestellt werden soll. Dies kann nur ein Ordner sein.

fdap
Gibt an, wo der Ordner in der Liste platziert wird.

Psi
Ein Zeiger auf ein IShellItem-Objekt, das den Ordner darstellt, der dem Benutzer zur Verfügung gestellt werden soll. Dies kann nur ein Ordner sein.

Hinweise

CFileDialog::AddPushButton

Fügt dem Dialogfeld eine Schaltfläche hinzu.

HRESULT AddPushButton(
    DWORD dwIDCtl,
    const CString& strLabel);

Parameter

dwIDCtl
Die ID der hinzuzufügenden Schaltfläche.

strLabel
Der Name der Schaltfläche.

Hinweise

CFileDialog::AddRadioButtonList

Fügt dem Dialogfeld eine Optionsschaltfläche (auch als Optionsfeld bezeichnet) hinzu.

HRESULT AddRadioButtonList(DWORD dwIDCtl);

Parameter

dwIDCtl
Die ID der hinzuzufügenden Optionsfeldgruppe.

Hinweise

CFileDialog::AddSeparator

Fügt dem Dialogfeld ein Trennzeichen hinzu.

HRESULT AddSeparator(DWORD dwIDCtl);

Parameter

dwIDCtl
Die ID des Trennzeichens.

Hinweise

CFileDialog::AddText

Fügt dem Dialogfeld Text hinzu.

HRESULT AddText(
    DWORD dwIDCtl,
    const CString& strText);

Parameter

dwIDCtl
Die ID des hinzuzufügenden Texts.

strText
Der Textname.

Hinweise

CFileDialog::ApplyOFNToShellDialog

Aktualisiert den aktuellen Zustand des CFileDialog basierend auf den werten, die in der m_ofn Datenstruktur gespeichert sind.

void ApplyOFNToShellDialog();

Hinweise

In Versionen von Windows vor Windows Vista wurde die Member-OPENFILENAME-Datenstruktur kontinuierlich mit dem Zustand der CFileDialog. Alle Änderungen an der m_ofn Membervariablen wurden sofort im Zustand des Dialogfelds widerzuspiegeln. Außerdem werden alle Änderungen am Status des Dialogfelds sofort aktualisiert m_ofn .

In Windows Vista oder höher werden die Werte in der m_ofn Membervariable und des Zustands der CFileDialog Synchronisierung nicht garantiert. Diese Funktion erzwingt die Aktualisierung des CFileDialog Zustands, um der m_ofn Struktur zu entsprechen. Windows ruft diese Funktion während CFileDialog ::D oModal automatisch auf.

Weitere Informationen zur Verwendung der CFileDialog Klasse unter Windows Vista oder höher finden Sie unter CFileDialog Class.

Beispiel

Sehen Sie sich das Beispiel für CFileDialog::UpdateOFNFromShellDialog an.

CFileDialog::CFileDialog

Rufen Sie diese Funktion auf, um ein standardmäßiges Windows-Dateidialogfeld zu erstellen.

explicit CFileDialog(
    BOOL bOpenFileDialog,
    LPCTSTR lpszDefExt = NULL,
    LPCTSTR lpszFileName = NULL,
    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
    LPCTSTR lpszFilter = NULL,
    CWnd* pParentWnd = NULL,
    DWORD dwSize = 0,
    BOOL bVistaStyle = TRUE);

Parameter

bOpenFileDialog
[in] Der Parameter, der angibt, welche Art von Dialogfeld erstellt werden soll. Legen Sie ihn auf TRUE fest, um ein Dialogfeld "Datei öffnen " zu erstellen. Legen Sie ihn auf FALSE fest, um ein Dialogfeld "Datei speichern unter " zu erstellen.

lpszDefExt
[in] Die Standardmäßige Dateinamenerweiterung. Wenn der Benutzer keine bekannte Erweiterung (eine Zuordnung auf dem Computer des Benutzers) im Feld "Dateiname" enthält, wird die durch lpszDefExt angegebene Erweiterung automatisch an den Dateinamen angefügt. Wenn dieser Parameter NULL ist, wird keine Erweiterung angefügt.

lpszFileName
[in] Der ursprüngliche Dateiname, der im Feld "Dateiname" angezeigt wird. Wenn NULL, wird kein ursprünglicher Dateiname angezeigt.

dwFlags
[in] Eine Kombination aus einem oder mehreren Flags, die Sie zum Anpassen des Dialogfelds verwenden können. Eine Beschreibung dieser Flags finden Sie in der OPENFILENAME-Struktur im Windows SDK. Wenn Sie das m_ofn.Flags Strukturelement ändern, verwenden Sie einen bitweisen OR-Operator in Ihren Änderungen, um das Standardverhalten intakt zu halten.

lpszFilter
[in] Eine Reihe von Zeichenfolgenpaaren, die Filter angeben, die Sie auf die Datei anwenden können. Wenn Sie Dateifilter angeben, werden nur Dateien, die Filterkriterien erfüllen, in der Liste "Dateien" angezeigt. Weitere Informationen zum Arbeiten mit Dateifiltern finden Sie im Abschnitt "Hinweise".

pParentWnd
[in] Ein Zeiger auf das übergeordnete Fenster oder das Besitzerfenster des Dateidialogfelds.

dwSize
[in] Die Größe der OPENFILENAME Struktur. Dieser Wert hängt von der Betriebssystemversion ab. MFC hat diesen Parameter verwendet, um die geeignete Art des zu erstellenden Dialogfelds zu bestimmen. Die Standardgröße von 0 bedeutet, dass der MFC-Code die richtige Dialogfeldgröße bestimmt, die basierend auf der Betriebssystemversion verwendet wird, auf der das Programm ausgeführt wird.

bVistaStyle
[in] Hinweis : Dieser Parameter ist in Visual Studio 2008 und höher verfügbar und bewirkt, dass das Dialogfeld "Neue Formatvorlage" nur verwendet wird, wenn Sie unter Windows Vista oder höher ausgeführt werden.

Der Parameter, der die Formatvorlage des Dateidialogfelds angibt. Legen Sie ihn auf TRUE fest, um die neuen Dialogfelder im Vista-Stil zu verwenden. Andernfalls wird der alte Stil von Dialogfeldern verwendet. Weitere Informationen zum Ausführen unter Vista finden Sie im Abschnitt "Hinweise".

Hinweise

Abhängig vom Wert von bOpenFileDialog wird entweder ein Dialogfeld "Datei öffnen" oder "Datei speichern unter" erstellt.

Die Angabe einer Standarderweiterung mit lpszDefExt erzeugt möglicherweise nicht das erwartete Verhalten, da es selten vorhersagbar ist, welche Erweiterungen Dateizuordnungen auf dem Computer des Benutzers aufweisen. Wenn Sie mehr Kontrolle über das Anfügen einer Standarderweiterung benötigen, können Sie Ihre eigene Klasse ableiten CFileDialogund die CFileDialog::OnFileNameOK Methode überschreiben, um ihre eigene Erweiterungsbehandlung durchzuführen.

Um dem Benutzer die Auswahl mehrerer Dateien zu ermöglichen, legen Sie das OFN_ALLOWMULTISELECT Flag fest, bevor Sie DoModal aufrufen. Sie müssen ihren eigenen Dateinamenpuffer angeben, um die zurückgegebene Liste mehrerer Dateinamen zu speichern. Ersetzen Sie dies durch m_ofn.lpstrFile einen Zeiger auf einen von Ihnen zugewiesenen Puffer, nachdem Sie das CFileDialog-Element erstellt haben, aber bevor Sie aufrufen DoModal. Darüber hinaus müssen Sie die Anzahl der Zeichen im Puffer festlegen m_ofn.nMaxFile , auf die m_ofn.lpstrFileverwiesen wird. Wenn Sie die maximale Anzahl von Dateien auf n festlegen, ist ndie erforderliche Puffergröße *(_MAX_PATH + 1) + 1. Beispiel:

#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 dem Benutzer das Ändern der Größe eines Dialogfelds im Explorer-Stil mithilfe der Maus oder der Tastatur zu ermöglichen, legen Sie das OFN_ENABLESIZING Flag fest. Das Festlegen dieses Flags ist nur erforderlich, wenn Sie eine Hook-Prozedur oder benutzerdefinierte Vorlage angeben. Die Kennzeichnung funktioniert nur mit einem Dialogfeld im Explorer-Stil. Dialogfelder im alten Stil können nicht geändert werden.

Der parameter lpszFilter wird verwendet, um den Typ des Dateinamens zu bestimmen, den eine Datei in der Dateiliste anzeigen muss. Die erste Zeichenfolge im Zeichenfolgenpaar beschreibt den Filter; die zweite Zeichenfolge gibt die zu verwendende Dateinamenerweiterung an. Mehrere Erweiterungen können mithilfe eines Semikolons (das Zeichen ";") als Trennzeichen angegeben werden. Die Zeichenfolge endet mit zwei vertikalen Balkenzeichen (||), gefolgt von einem NULL-Zeichen. Sie können auch ein CString-Objekt für diesen Parameter verwenden.

Beispielsweise ermöglicht Microsoft Excel Benutzern das Öffnen von Dateien mit Erweiterungen XLC (Diagramm) oder XLS (Arbeitsblatt). Der Filter für Excel könnte wie folgt geschrieben werden:

static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
   _T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
   _T("*.xlc; *.xls|All Files (*.*)|*.*||");

Wenn Sie diese Zeichenfolge jedoch verwenden möchten, um die OPENFILENAME Struktur direkt zu aktualisieren, sollten Sie die Zeichenfolgen mit dem Nullzeichen '\0'und nicht mit den vertikalen Balken ('|') trennen.

Der bVistaStyle-Parameter gilt nur, wenn er unter Windows Vista oder höher ausgeführt wird. Unter früheren Versionen von Windows wird dieser Parameter ignoriert. Wenn bVistaStyle auf TRUE festgelegt ist, wird beim Kompilieren eines Programms mit Visual Studio 2008 oder höher das neue Dialogfeld für die Datei im Vista-Stil verwendet. Andernfalls wird das vorherige MFC-Dateidialogfeld verwendet.

Dialogfeldvorlagen werden für Dialogfelder, die auf bVistaStyle basieren, nicht unterstützt.

Beispiel

Sehen Sie sich das Beispiel für CFileDialog::D oModal an.

CFileDialog::D oModal

Rufen Sie diese Funktion auf, um das Dialogfeld "Allgemeine Windows-Datei" anzuzeigen und dem Benutzer das Durchsuchen von Dateien und Verzeichnissen zu ermöglichen und einen Dateinamen einzugeben.

virtual INT_PTR DoModal();

Rückgabewert

IDOK oder IDCANCEL. Wenn IDCANCEL zurückgegeben wird, rufen Sie die Windows CommDlgExtendedError-Funktion auf, um zu ermitteln, ob ein Fehler aufgetreten ist.

IDOK und IDCANCEL sind Konstanten, die angeben, ob der Benutzer die Schaltfläche "OK" oder "Abbrechen" ausgewählt hat.

Hinweise

Wenn Sie die verschiedenen Dateidialogfeldoptionen initialisieren möchten, indem Sie Elemente der m_ofn Struktur festlegen, sollten Sie dies vor dem Aufrufen DoModalausführen, aber nach dem Erstellen des Dialogobjekts.

Wenn Sie beispielsweise zulassen möchten, dass der Benutzer mehrere Dateien auswählt, legen Sie das OFN_ALLOWMULTISELECT Flag vor dem Aufrufen DoModalfest, wie im Codebeispiel in diesem Thema gezeigt.

Wenn der Benutzer auf die Schaltflächen "OK" oder "Abbrechen" des Dialogfelds klickt oder die Option "Schließen" aus dem Steuerelementmenü des Dialogfelds auswählt, wird das Steuerelement an Ihre Anwendung zurückgegeben. Anschließend können Sie andere Memberfunktionen aufrufen, um die Einstellungen oder Informationen abzurufen, die der Benutzer in das Dialogfeld eingibt.

DoModal ist eine virtuelle Funktion, die von der Klasse CDialogüberschrieben wird.

Beispiel

void CMyClass::OnFileOpen()
{
   // szFilters is a text string that includes two file name filters:
   // "*.my" for "MyType Files" and "*.*' for "All Files."
   TCHAR szFilters[]= _T("MyType Files (*.my)|*.my|All Files (*.*)|*.*||");

   // Create an Open dialog; the default file name extension is ".my".
   CFileDialog fileDlg(TRUE, _T("my"), _T("*.my"),
      OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters);
   
   // Display the file dialog. When user clicks OK, fileDlg.DoModal() 
   // returns IDOK.
   if(fileDlg.DoModal() == IDOK)
   {
      CString pathName = fileDlg.GetPathName();
   
      // Implement opening and reading file in here.

      //Change the window's title to the opened file's title.
      CString fileName = fileDlg.GetFileTitle();
   
      SetWindowText(fileName);
   }
}

CFileDialog::EnableOpenDropDown

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

HRESULT EnableOpenDropDown(DWORD dwIDCtl);

Parameter

dwIDCtl
Die ID der Dropdownliste.

Hinweise

CFileDialog::EndVisualGroup

Beendet das Hinzufügen von Elementen zu einer visuellen Gruppe im Dialogfeld.

HRESULT EndVisualGroup();

Rückgabewert

Gibt S_OK zurück, wenn dies erfolgreich ist; andernfalls ein Fehlerwert.

Hinweise

CFileDialog::GetCheckButtonState

Ruft den aktuellen Status einer Kontrollkästchenschaltfläche (Kontrollkästchen) im Dialogfeld ab.

HRESULT GetCheckButtonState(
    DWORD dwIDCtl,
    BOOL& bChecked);

Parameter

dwIDCtl
Die ID des Kontrollkästchens.

bChecked
Der Status des Kontrollkästchens. WAHR gibt aktiviert an; FALSE gibt an, dass das Kontrollkästchen deaktiviert ist.

Hinweise

CFileDialog::GetControlItemState

Ruft den aktuellen Status eines Elements in einem Containersteuerelement ab, das im Dialogfeld zu finden ist.

HRESULT GetControlItemState(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF& dwState);

Parameter

dwIDCtl
Die ID des Containersteuerelements.

dwIDItem
Die ID des Elements.

dwState
Ein Verweis auf eine Variable, die einen von mehreren Werten aus der CDCONTROLSTATE-Aufzählung empfängt, die den aktuellen Zustand des Steuerelements angibt.

Hinweise

CFileDialog::GetControlState

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

HRESULT GetControlState(
    DWORD dwIDCtl,
    CDCONTROLSTATEF& dwState);

Parameter

dwIDCtl
Die ID des Steuerelements.

dwState
Ein Verweis auf eine Variable, die einen oder mehrere Werte aus der CDCONTROLSTATE-Aufzählung empfängt, die den aktuellen Status des Steuerelements angibt.

Hinweise

CFileDialog::GetEditBoxText

Ruft den aktuellen Text in einem Bearbeitungsfeld-Steuerelement ab.

HRESULT GetEditBoxText(
    DWORD dwIDCtl,
    CString& strText);

Parameter

dwIDCtl
Die ID des Bearbeitungsfelds.

strText
Der Textwert.

Hinweise

CFileDialog::GetFileExt

Rufen Sie diese Funktion auf, um die Erweiterung des in das Dialogfeld eingegebenen Dateinamens abzurufen.

CString GetFileExt() const;

Rückgabewert

Die Erweiterung des Dateinamens.

Hinweise

Wenn beispielsweise der Name der eingegebenen Datei "DATA.TXT" lautet, GetFileExt wird "TXT" zurückgegeben.

Wenn m_ofn.Flags die OFN_ALLOWMULTISELECT Flag festgelegt ist, enthält diese Zeichenfolge eine Abfolge von null-beendeten Zeichenfolgen, wobei die erste Zeichenfolge der Verzeichnispfad der Dateigruppe ausgewählt ist, gefolgt von den Namen aller vom Benutzer ausgewählten Dateien. Verwenden Sie zum Abrufen von Dateipfadnamen die Memberfunktionen "GetStartPosition " und "GetNextPathName ".

CFileDialog::GetFileName

Rufen Sie diese Funktion auf, um den Namen des im Dialogfeld eingegebenen Dateinamens abzurufen.

CString GetFileName() const;

Rückgabewert

Der Name der Datei.

Hinweise

Der Name der Datei enthält sowohl das Präfix als auch die Erweiterung. Gibt beispielsweise GetFileName "TEXT" zurück. DAT" für die Datei C:\FILES\TEXT.DAT.

Wenn m_ofn.Flags das OFN_ALLOWMULTISELECT Flag festgelegt ist, sollten Sie GetStartPosition und GetNextPathName aufrufen, um einen Dateinamen abzurufen.

CFileDialog::GetFileTitle

Rufen Sie diese Funktion auf, um den Titel der im Dialogfeld eingegebenen Datei abzurufen.

CString GetFileTitle() const;

Rückgabewert

Der Titel der Datei.

Hinweise

Der Titel der Datei enthält nur das Präfix, ohne den Pfad oder die Erweiterung. Gibt beispielsweise GetFileTitle "TEXT" für die Datei C:\FILES\TEXT.DAT zurück.

Wenn m_ofn.Flags die OFN_ALLOWMULTISELECT Flag festgelegt ist, enthält diese Zeichenfolge eine Abfolge von null-beendeten Zeichenfolgen, wobei die erste Zeichenfolge der Verzeichnispfad der Dateigruppe ausgewählt ist, gefolgt von den Namen aller vom Benutzer ausgewählten Dateien. Verwenden Sie aus diesem Grund die Memberfunktionen "GetStartPosition " und "GetNextPathName ", um den nächsten Dateinamen in der Liste abzurufen.

Beispiel

Sehen Sie sich das Beispiel für CFileDialog::D oModal an.

CFileDialog::GetFolderPath

Rufen Sie diese Memberfunktion auf, um den Pfad des aktuell geöffneten Ordners oder Verzeichnisses für ein dialogfeld im Explorer-Format "Öffnen" oder "Speichern unter" abzurufen.

CString GetFolderPath() const;

Rückgabewert

Ein CString-Objekt mit dem aktuell geöffneten Ordner oder Verzeichnis.

Hinweise

Das Dialogfeld muss mit der OFN_EXPLORER-Formatvorlage erstellt worden sein. andernfalls schlägt die Methode mit einer Assertion fehl.

Sie können diese Methode nur aufrufen, wenn das Dialogfeld angezeigt wird. Nachdem das Dialogfeld geschlossen wurde, funktioniert diese Funktion nicht mehr, und die Methode schlägt mit einer Assertion fehl.

CFileDialog::GetIFileDialogCustomize

Ruft einen Zeiger auf das interne COM-Objekt für einen bestimmten CFileDialog ab.

IFileDialogCustomize* GetIFileDialogCustomize();

Rückgabewert

Der Zeiger auf das interne COM-Objekt für das CFileDialog. Es liegt in Ihrer Verantwortung, diesen Zeiger angemessen freizugeben.

Hinweise

Verwenden Sie diese Funktion nur unter Windows Vista oder höher mit einem Objekt, das bVistaStyle auf TRUE festgelegt hat. Wenn Sie diese Funktion verwenden, wenn bVistaStyle FALSE ist, gibt sie NULL im Releasemodus zurück und löst eine Assertion im Debugmodus aus.

Weitere Informationen zur IFileDialogCustomize Schnittstelle finden Sie unter "IFileDialogCustomize".

Beispiel

In diesem Beispiel wird das interne COM-Objekt abgerufen. Um dieses Codebeispiel auszuführen, müssen Sie es unter Windows Vista oder höher kompilieren.

// Get the interface pointer
IFileDialogCustomize *customDlgPtr = m_myFileDialogPtr->GetIFileDialogCustomize();

// Make sure that it is not null
if (customDlgPtr != NULL)
{
   //
   // Perform any interface functionality here
   //

   // Release the pointer
   customDlgPtr->Release();
}

CFileDialog::GetIFileOpenDialog

Ruft einen Zeiger auf das interne COM-Objekt für eine bestimmte .CFileDialog

IFileOpenDialog* GetIFileOpenDialog();

Rückgabewert

Der Zeiger auf das interne COM-Objekt für das CFileDialog. Es liegt in Ihrer Verantwortung, diesen Zeiger angemessen freizugeben.

Hinweise

Verwenden Sie diese Funktion nur unter Windows Vista oder höher mit einem Objekt, das bVistaStyle auf TRUE festgelegt hat. Diese Funktion gibt NULL zurück, wenn es CFileDialog sich nicht um ein Dialogfeld "Öffnen " handelt oder wenn bVistaStyle auf FALSE festgelegt ist. In diesem letzten Fall gibt die Funktion nur NULL im Releasemodus zurück – im Debugmodus löst sie eine Assertion aus.

Weitere Informationen zur IFileOpenDialog Schnittstelle finden Sie unter "IFileOpenDialog".

Beispiel

In diesem Beispiel wird das interne COM-Objekt abgerufen. Um diesen Code auszuführen, müssen Sie ihn unter Windows Vista oder höher kompilieren.

// Get the interface pointer
IFileOpenDialog * openDlgPtr = m_myFileDialogPtr->GetIFileOpenDialog();

// Make sure that it is not null
if ( openDlgPtr != NULL )
{
    //
    // Perform any interface functionality here
    //

    // Release the pointer
    openDlgPtr->Release();
}

CFileDialog::GetIFileSaveDialog

Ruft einen Zeiger auf das interne COM-Objekt für eine bestimmte .CFileDialog

IFileSaveDialog* GetIFileSaveDialog();

Rückgabewert

Der Zeiger auf das interne COM-Objekt für das CFileDialog. Es liegt in Ihrer Verantwortung, diesen Zeiger angemessen freizugeben.

Hinweise

Verwenden Sie diese Funktion nur unter Windows Vista oder höher mit einem Objekt, das bVistaStyle auf TRUE festgelegt hat. Diese Funktion gibt NULL zurück, wenn es CFileDialog sich nicht um ein Dialogfeld "Speichern " handelt oder wenn "bVistaStyle " auf FALSE festgelegt ist. In diesem letzten Fall gibt die Funktion nur NULL im Releasemodus zurück – im Debugmodus löst sie eine Assertion aus.

Weitere Informationen zur IFileSaveDialog Schnittstelle finden Sie unter "IFileSaveDialog".

Beispiel

In diesem Beispiel wird das interne COM-Objekt abgerufen. Um dieses Codebeispiel auszuführen, müssen Sie es unter Windows Vista oder höher kompilieren.

// Get the interface pointer
IFileSaveDialog *saveDlgPtr = m_myFileDialogPtr->GetIFileSaveDialog();

// Make sure that it is not null
if (saveDlgPtr != NULL)
{
   //
   // Perform any interface functionality here
   //

   // Release the pointer
   saveDlgPtr->Release();
}

CFileDialog::GetNextPathName

Rufen Sie diese Funktion auf, um den nächsten Dateinamen aus der gruppe abzurufen, die im Dialogfeld ausgewählt ist.

CString GetNextPathName(POSITION& pos) const;

Parameter

pos
Ein Verweis auf einen POSITION-Wert, der von einem vorherigen GetNextPathName Aufruf oder GetStartPosition funktionsaufruf zurückgegeben wird. NULL, wenn das Ende der Liste erreicht wurde.

Rückgabewert

Der vollständige Pfad der Datei.

Hinweise

Der Pfad des Dateinamens enthält den Titel der Datei sowie den gesamten Verzeichnispfad. Gibt beispielsweise GetNextPathName "C:\FILES\TEXT" zurück. DAT" für die Datei C:\FILES\TEXT.DAT. Sie können in einer Vorwärts iterationsschleife verwenden GetNextPathName , wenn Sie die Anfangsposition mit einem Aufruf einrichten GetStartPosition.

Wenn die Auswahl aus nur einer Datei besteht, wird dieser Dateiname zurückgegeben.

CFileDialog::GetOFN

Ruft die zugeordnete OPENFILENAME Struktur ab.

const OPENFILENAME& GetOFN() const;

OPENFILENAME& GetOFN();

Rückgabewert

Eine OPENFILENAME-Struktur .

Hinweise

Verwenden Sie die zweite Version dieser Funktion, um die Darstellung eines Dialogfelds "Datei öffnen " oder "Speichern unter " zu initialisieren, nachdem sie erstellt wurde, aber bevor sie mit der DoModal Memberfunktion angezeigt wird. Sie können z. B. das lpstrTitle Element m_ofn auf die Untertitel festlegen, über die das Dialogfeld verfügen soll.

CFileDialog::GetPathName

Rufen Sie diese Funktion auf, um den vollständigen Pfad der im Dialogfeld eingegebenen Datei abzurufen.

CString GetPathName() const;

Rückgabewert

Der vollständige Pfad der Datei.

Hinweise

Der Pfad des Dateinamens enthält den Titel der Datei sowie den gesamten Verzeichnispfad. Gibt beispielsweise GetPathName "C:\FILES\TEXT" zurück. DAT" für die Datei C:\FILES\TEXT.DAT.

Wenn m_ofn.Flags die OFN_ALLOWMULTISELECT Flag festgelegt ist, enthält diese Zeichenfolge eine Abfolge von NULL-teminierten Zeichenfolgen, wobei die erste Zeichenfolge der Verzeichnispfad der Dateigruppe ausgewählt ist, gefolgt von den Namen aller vom Benutzer ausgewählten Dateien. Verwenden Sie aus diesem Grund die Memberfunktionen "GetStartPosition " und "GetNextPathName ", um den nächsten Dateinamen in der Liste abzurufen.

Beispiel

Sehen Sie sich das Beispiel für CFileDialog::D oModal an.

CFileDialog::GetReadOnlyPref

Rufen Sie diese Funktion auf, um zu bestimmen, ob das Kontrollkästchen "Schreibgeschützt" in den Dialogfeldern "Öffnen" und "Datei speichern unter" von Windows aktiviert wurde.

BOOL GetReadOnlyPref() const;

Rückgabewert

Ungleich Null, wenn das Kontrollkästchen "Schreibgeschützt" im Dialogfeld aktiviert ist; andernfalls 0.

Hinweise

Sie können das Kontrollkästchen "Schreibgeschützt" ausblenden, indem Sie die OFN_HIDEREADONLY Formatvorlage im CFileDialog Konstruktor festlegen.

Hinweis

Windows Vista- oder höher-Stilobjekte CFileDialog unterstützen diese Funktion nicht. Wenn Sie versuchen, diese Funktion in einer Windows Vista- oder höher-Formatvorlage CFileDialog zu verwenden, wird CNotSupportedException ausgelöst.

CFileDialog::GetResult

Ruft die Auswahl ab, die der Benutzer im Dialogfeld vorgenommen hat.

IShellItem* GetResult() throw();

Rückgabewert

Ein Zeiger auf ein IShellItem-Objekt, das die Auswahl des Benutzers darstellt.

Hinweise

CFileDialog::GetResults

Ruft die Auswahl des Benutzers in einem Dialogfeld ab, das die Mehrfachauswahl zulässt.

IShellItemArray* GetResults() throw();

Rückgabewert

Ein Zeiger auf ein IShellItemArray, über das auf die im Dialogfeld ausgewählten Elemente zugegriffen werden kann.

Hinweise

CFileDialog::GetSelectedControlItem

Ruft ein bestimmtes Element aus dem angegebenen Containersteuerelement im Dialogfeld ab.

HRESULT GetSelectedControlItem(
    DWORD dwIDCtl,
    DWORD& dwIDItem);

Parameter

dwIDCtl
Die ID des Containersteuerelements.

dwIDItem
Die ID des Elements, das der Benutzer im Steuerelement ausgewählt hat.

Hinweise

CFileDialog::GetStartPosition

Rufen Sie diese Memberfunktion auf, um die Position des ersten Dateipfadnamens in der Liste abzurufen, wenn m_ofn.Flags die OFN_ALLOWMULTISELECT Flag festgelegt ist.

POSITION GetStartPosition() const;

Rückgabewert

Ein POSITION-Wert, der für die Iteration verwendet werden kann; NULL, wenn die Liste leer ist.

CFileDialog::HideControl

Rufen Sie diese Memberfunktion auf, um das angegebene Steuerelement in einem dialogfeld im Explorer-Format "Öffnen" oder "Speichern unter" auszublenden.

void HideControl(int nID);

Parameter

Nid
Die ID des auszublendenden Steuerelements.

Hinweise

Das Dialogfeld muss mit der OFN_EXPLORER-Formatvorlage erstellt worden sein. andernfalls schlägt die Funktion mit einer Assertion fehl.

CFileDialog::IsPickFoldersMode

Bestimmt, ob sich das aktuelle Dialogfeld im Ordnerauswahlmodus befindet.

BOOL IsPickFoldersMode() const;

Rückgabewert

TRUE, wenn sich das Dialogfeld im Ordnerauswahlmodus befindet; andernfalls FALSE.

Hinweise

CFileDialog::m_ofn

m_ofn ist eine Struktur vom Typ OPENFILENAME. Die Daten in dieser Struktur stellen den aktuellen Zustand des CFileDialog.

Hinweise

Verwenden Sie diese Struktur, um die Darstellung eines Dialogfelds "Datei öffnen " oder "Speichern unter " zu initialisieren, nachdem Sie es erstellt haben, aber bevor Sie es mit der DoModal-Methode anzeigen. Sie können z. B. das lpstrTitle-Element m_ofn auf die Untertitel festlegen, über die das Dialogfeld verfügen soll.

Mit dem Windows Vista- oder höher-Stil von CFileDialog ist nicht garantiert, m_ofn dass sie immer mit dem Status des Dialogfelds übereinstimmen. Sie wird mit dem Dialogfeld in früheren Versionen von Windows synchronisiert. Weitere Informationen zum Synchronisieren der m_ofn Struktur und des CFileDialog Zustands unter Windows Vista oder höher finden Sie unter CFileDialog::ApplyOFNToShellDialog::UpdateOFNFromShellDialog.

Windows Vista- oder neuere Dateidialoge unterstützen bestimmte Member und Flags der CFileDialogDatei nicht. Daher haben diese keine Auswirkungen.

Es folgt eine Liste der Mitglieder, die von Windows Vista oder höher nicht unterstützt werden:

  • lpstrCustomFilter

  • lpstrInitialDir

  • lCustData

  • lpfnHook

  • lpTemplateName

Die folgenden Flags werden nicht unterstützt und wirken sich daher nicht aus, wenn Sie den Stil von CFileDialogWindows Vista oder höher verwenden:

  • OFN_ENABLEHOOK

  • OFN_ENABLEINCLUDENOTIFY

  • OFN_ENABLETEMPLATE

  • OFN_ENABLETEMPLATEHANDLE

  • OFN_EXPLORER

  • OFN_EXTENSIONDIFFERENT

  • OFN_HIDEREADONLY

  • OFN_LONGNAMES – effektiv immer unter Windows Vista oder höher aktiviert

  • OFN_NOLONGNAMES – effektiv immer in Windows Vista oder höher deaktiviert

  • OFN_NONETWORKBUTTON – effektiv immer in Windows Vista oder höher aktiviert

  • OFN_READONLY

  • OFN_SHOWHELP

Weitere Informationen zu dieser Struktur finden Sie in der OPENFILENAME-Struktur im Windows SDK.

CFileDialog::MakeProminent

Platziert ein Steuerelement im Dialogfeld, sodass es im Vergleich zu anderen Steuerelementen hervorsticht.

HRESULT MakeProminent(DWORD dwIDCtl);

Parameter

dwIDCtl
Die ID des Steuerelements.

Hinweise

CFileDialog::OnButtonClicked

Wird aufgerufen, wenn auf die Schaltfläche geklickt wird.

virtual void OnButtonClicked(DWORD dwIDCtl);

Parameter

dwIDCtl
Die ID der Schaltfläche.

Hinweise

CFileDialog::OnCheckButtonToggled

Wird aufgerufen, wenn das Kontrollkästchen aktiviert oder deaktiviert ist.

virtual void OnCheckButtonToggled(
    DWORD dwIDCtl,
    BOOL bChecked);

Parameter

dwIDCtl
Die ID des Kontrollkästchens.

bChecked
Aktiviert oder deaktiviert.

Hinweise

CFileDialog::OnControlActivating

Wird aufgerufen, wenn das Steuerelement aktiviert wird.

virtual void OnControlActivating(DWORD dwIDCtl);

Parameter

dwIDCtl
Die ID des Steuerelements.

Hinweise

CFileDialog::OnFileNameChange

Überschreiben Sie diese Methode, wenn Sie die WM_NOTIFY CDN_SELCHANGE Nachricht behandeln möchten.

virtual void OnFileNameChange();

Hinweise

Das System sendet die CDN_SELCHANGE Nachricht, wenn der Benutzer eine neue Datei oder einen neuen Ordner in der Dateiliste des Dialogfelds "Öffnen " oder "Speichern unter " auswählt. Überschreiben Sie diese Methode, wenn Sie Aktionen als Reaktion auf diese Nachricht ausführen möchten.

Das System sendet diese Nachricht nur, wenn das Dialogfeld mit aktivierter OFN_EXPLORER-Kennzeichnung erstellt wurde. Weitere Informationen zur Benachrichtigung finden Sie unter CDN_SELCHANGE. Informationen zum flag OFN_EXPLORER finden Sie in der OPENFILENAME-Struktur und in den Dialogfeldern "Öffnen und Speichern unter".

CFileDialog::OnFileNameOK

Überschreiben Sie diese Funktion nur, wenn Sie eine benutzerdefinierte Überprüfung von Dateinamen bereitstellen möchten, die in ein allgemeines Dateidialogfeld eingegeben werden.

virtual BOOL OnFileNameOK();

Rückgabewert

1, wenn der Dateiname kein gültiger Dateiname ist; andernfalls 0.

Hinweise

Mit dieser Funktion können Sie einen Dateinamen aus anwendungsspezifischen Gründen ablehnen. Normalerweise müssen Sie diese Funktion nicht verwenden, da das Framework die Standardüberprüfung von Dateinamen bereitstellt und ein Meldungsfeld anzeigt, wenn ein ungültiger Dateiname eingegeben wird.

Wenn 1 zurückgegeben wird, wird das Dialogfeld erneut Standard angezeigt, damit der Benutzer einen anderen Dateinamen eingibt. Die Dialogfeldprozedur schließt das Dialogfeld, wenn die Rückgabe 0 ist. Andere Nichtzero-Rückgabewerte sind derzeit reserviert und sollten nicht verwendet werden.

CFileDialog::OnFolderChange

Überschreiben Sie diese Funktion, um die WM_NOTIFYCDN_FOLDERCHANGE Nachricht zu behandeln.

virtual void OnFolderChange();

Hinweise

Die Benachrichtigung wird gesendet, wenn ein neuer Ordner im Dialogfeld "Öffnen" oder "Speichern unter" geöffnet wird.

Benachrichtigung wird nur gesendet, wenn das Dialogfeld mit dem OFN_EXPLORER-Format erstellt wurde. Weitere Informationen zur Benachrichtigung finden Sie unter CDN_FOLDERCHANGE. Informationen zur OFN_EXPLORER Formatvorlage finden Sie in der OPENFILENAME-Struktur und den Dialogfeldern "Öffnen und Speichern unter".

CFileDialog::OnInitDone

Überschreiben Sie diese Funktion, um die WM_NOTIFY CDN_INITDONE Nachricht zu behandeln.

virtual void OnInitDone();

Hinweise

Das System sendet diese Benachrichtigung, wenn das System die Anordnung von Steuerelementen im Dialogfeld "Öffnen " oder "Speichern unter " abgeschlossen hat, um Platz für die Steuerelemente des untergeordneten Dialogfelds zu schaffen.

Das System sendet dies nur, wenn das Dialogfeld mit dem OFN_EXPLORER-Format erstellt wurde. Weitere Informationen zur Benachrichtigung finden Sie unter CDN_INITDONE. Informationen zur OFN_EXPLORER Formatvorlage finden Sie in der OPENFILENAME-Struktur und den Dialogfeldern "Öffnen und Speichern unter".

Hinweis

Windows Vista- oder neuere Dialogfelder für Dateiformatvorlagen unterstützen diese Funktion nicht. Wenn Sie versuchen, diese Funktion in einem Windows Vista- oder späteren Dateidialogfeld zu verwenden, wird CNotSupportedException ausgelöst.

CFileDialog::OnItemSelected

Wird aufgerufen, wenn das Containerelement ausgewählt ist.

virtual void OnItemSelected(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Parameter

dwIDCtl
Die ID des Containersteuerelements.

dwIDItem
Die ID des Elements.

Hinweise

CFileDialog::OnLBSelChangedNotify

Diese Funktion wird immer dann aufgerufen, wenn sich die aktuelle Auswahl in einem Listenfeld ändert.

virtual void OnLBSelChangedNotify(
    UINT nIDBox,
    UINT iCurSel,
    UINT nCode);

Parameter

nIDBox
Die ID des Listenfelds oder Kombinationsfelds, in dem die Auswahl aufgetreten ist.

iCurSel
Der Index der aktuellen Auswahl.

nCode
Der Steuerelementbenachrichtigungscode. Dieser Parameter muss einen der folgenden Werte aufweisen:

  • CD_LBSELCHANGE Gibt an , dass iCurSel das ausgewählte Element in einem Listenfeld mit einer Auswahl ist.

  • CD_LBSELSUB Gibt an, dass iCurSel nicht mehr in einem Listenfeld mit mehrfacher Auswahl ausgewählt wird.

  • CD_LBSELADD Gibt an, dass iCurSel in einem Listenfeld mit mehrfacher Auswahl ausgewählt wird.

  • CD_LBSELNOITEMS Gibt an, dass in einem Listenfeld mit mehrfacher Auswahl keine Auswahl vorhanden ist.

Hinweise

Überschreiben Sie diese Funktion, um eine benutzerdefinierte Behandlung von Auswahländerungen im Listenfeld bereitzustellen. Sie können diese Funktion z. B. verwenden, um die Zugriffsrechte oder die datums-letzte Änderung jeder Datei anzuzeigen, die der Benutzer auswählt.

CFileDialog::OnShareViolation

Überschreiben Sie diese Funktion, um eine benutzerdefinierte Behandlung von Freigabeverstößen bereitzustellen.

virtual UINT OnShareViolation(LPCTSTR lpszPathName);

Parameter

lpszPathName
Der Pfad der Datei, auf der die Freigabeverletzung aufgetreten ist.

Rückgabewert

Einer der folgenden Werte:

  • OFN_SHAREFALLTHROUGH Der Dateiname wird aus dem Dialogfeld zurückgegeben.

  • OFN_SHARENOWARN Es müssen keine weiteren Maßnahmen ergriffen werden.

  • OFN_SHAREWARN Der Benutzer erhält die Standardwarnung für diesen Fehler.

Hinweise

Normalerweise müssen Sie diese Funktion nicht verwenden, da das Framework die Standardüberprüfung von Freigabeverletzungen bereitstellt und ein Meldungsfeld anzeigt, wenn eine Freigabeverletzung auftritt.

Wenn Sie die Überprüfung der Freigabeverletzung deaktivieren möchten, verwenden Sie den bitweisen OR-Operator, um die Kennzeichnung OFN_SHAREAWARE zu m_ofn.Flagskombinieren.

CFileDialog::OnTypeChange

Überschreiben Sie diese Funktion, um die WM_NOTIFYCDN_TYPECHANGE Nachricht zu behandeln.

virtual void OnTypeChange();

Hinweise

Die Benachrichtigung wird gesendet, wenn der Benutzer einen neuen Dateityp aus der Liste der Dateitypen im Dialogfeld "Öffnen" oder "Speichern unter" auswählt.

Benachrichtigung wird nur gesendet, wenn das Dialogfeld mit dem OFN_EXPLORER-Format erstellt wurde. Weitere Informationen zur Benachrichtigung finden Sie unter CDN_TYPECHANGE. Informationen zur OFN_EXPLORER Formatvorlage finden Sie in der OPENFILENAME-Struktur und den Dialogfeldern "Öffnen und Speichern unter".

CFileDialog::RemoveControlItem

Entfernt ein Element aus einem Containersteuerelement im Dialogfeld.

HRESULT RemoveControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Parameter

dwIDCtl
Die ID des Containersteuerelements, aus dem das Element entfernt werden soll.

dwIDItem
Die ID des Elements.

Hinweise

CFileDialog::SetCheckButtonState

Legt den aktuellen Status einer Kontrollkästchenschaltfläche (Kontrollkästchen) im Dialogfeld fest.

HRESULT SetCheckButtonState(
    DWORD dwIDCtl,
    BOOL bChecked);

Parameter

dwIDCtl
Die ID des Kontrollkästchens.

bChecked
Der Status des Kontrollkästchens. WAHR gibt aktiviert an; FALSE gibt an, dass das Kontrollkästchen deaktiviert ist.

Hinweise

CFileDialog::SetControlItemState

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

HRESULT SetControlItemState(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF dwState);

Parameter

dwIDCtl
Die ID des Containersteuerelements.

dwIDItem
Die ID des Elements.

dwState
Mindestens ein Wert aus der CDCONTROLSTATE-Aufzählung, die den neuen Zustand des Steuerelements angibt.

Hinweise

CFileDialog::SetControlItemText

Legt den Text eines Steuerelementelements fest. Beispielsweise der Text, der ein Optionsfeld oder ein Element in einem Menü begleitet.

HRESULT SetControlItemText(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    const CString& strLabel);

Parameter

dwIDCtl
Die ID des Containersteuerelements.

dwIDItem
Die ID des Elements.

strLabel
Elementtext.

Hinweise

CFileDialog::SetControlLabel

Legt den Text fest, der einem Steuerelement zugeordnet ist, z. B. Schaltflächentext oder Beschriftung eines Bearbeitungsfelds.

HRESULT SetControlLabel(
    DWORD dwIDCtl,
    const CString& strLabel);

Parameter

dwIDCtl
Die ID des Steuerelements.

strLabel
Der Steuerelementname.

Hinweise

CFileDialog::SetControlState

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

HRESULT SetControlState(
    DWORD dwIDCtl,
    CDCONTROLSTATEF dwState);

Parameter

dwIDCtl
Die ID des Steuerelements.

dwState
Mindestens ein Wert aus der CDCONTROLSTATE-Aufzählung, die den aktuellen Zustand des Steuerelements angibt.

Hinweise

CFileDialog::SetControlText

Rufen Sie diese Methode auf, um den Text für das angegebene Steuerelement in einem Dialogfeld im Explorer-Format "Öffnen " oder "Speichern unter " festzulegen.

void SetControlText(
    int nID,
    LPCSTR lpsz);

void SetControlText(
    int nID,
    const wchar_t *lpsz);

Parameter

Nid
[in] Die ID des Steuerelements, für das der Text festgelegt werden soll.

lpsz
[in] Ein Zeiger auf die Zeichenfolge, die den text enthält, der für das Steuerelement festgelegt werden soll.

Hinweise

Beide Versionen dieser Funktion sind für Anwendungen gültig, die Unicode verwenden. Allerdings ist nur die Version mit dem LPCSTR-Typ für Anwendungen gültig, die ANSI verwenden.

Um diese Methode zu verwenden, müssen Sie das Dialogfeld mit der OFN_EXPLORER Formatvorlage erstellen. Andernfalls schlägt die Funktion mit einer Assertion fehl.

CFileDialog::SetDefExt

Rufen Sie diese Funktion auf, um die Standarddateierweiterung für ein Dialogfeld im Explorer-Format "Öffnen" oder "Speichern unter" festzulegen.

void SetDefExt(LPCSTR lpsz);

Parameter

lpsz
Ein Zeiger auf eine Zeichenfolge, die die Standarderweiterung enthält, die für das Dialogfeldobjekt verwendet werden soll. Diese Zeichenfolge darf keinen Punkt (.) enthalten.

Hinweise

Das Dialogfeld muss mit der OFN_EXPLORER-Formatvorlage erstellt worden sein. andernfalls schlägt die Funktion mit einer Assertion fehl.

CFileDialog::SetEditBoxText

Legt den aktuellen Text in einem Bearbeitungsfeld-Steuerelement fest.

HRESULT SetEditBoxText(
    DWORD dwIDCtl,
    const CString& strText);

Parameter

dwIDCtl
Die ID des Bearbeitungsfelds.

strText
Der Textwert.

Hinweise

CFileDialog::SetProperties

Bietet einen Eigenschaftenspeicher, der die Standardwerte definiert, die für das zu speichernde Element verwendet werden sollen.

BOOL SetProperties(LPCWSTR lpszPropList);

Parameter

lpszPropList
Eine Liste der vordefinierten Eigenschaften, die durch ein ";" voneinander getrennt sind. Eine Liste der Flags finden Sie im Abschnitt "Flags " von OPENFILENAME.

Hinweise

CFileDialog::SetSelectedControlItem

Legt den ausgewählten Zustand eines bestimmten Elements in einer Optionsfeldgruppe oder einem Kombinationsfeld im Dialogfeld fest.

HRESULT SetSelectedControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Parameter

dwIDCtl
Die ID des Containersteuerelements.

dwIDItem
Die ID des Elements, das der Benutzer im Steuerelement ausgewählt hat.

Hinweise

CFileDialog::SetTemplate

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

void SetTemplate(
    UINT nWin3ID,
    UINT nWin4ID);

void SetTemplate(
    LPCTSTR lpWin3ID,
    LPCTSTR lpWin4ID);

Parameter

nWin3ID
[in] Enthält die ID-Nummer der Vorlagenressource für das Nicht-Explorer CFileDialog -Objekt. Diese Vorlage wird nur unter Windows NT 3.51 verwendet oder wenn die OFN_EXPLORER Formatvorlage nicht vorhanden ist.

nWin4ID
[in] Enthält die ID-Nummer der Vorlagenressource für das Explorer - CFileDialog Objekt. Diese Vorlage wird nur unter Windows NT 4.0 und höheren Versionen, Windows 95 und höheren Versionen verwendet, oder wenn die OFN_EXPLORER Formatvorlage vorhanden ist.

lpWin3ID
[in] Enthält den Namen der Vorlagenressource für das Nicht-Explorer-Objekt CFileDialog . Diese Vorlage wird nur unter Windows NT 3.51 verwendet oder wenn die OFN_EXPLORER Formatvorlage nicht vorhanden ist.

lpWin4ID
[in] Enthält den Namen der Vorlagenressource des Explorer-Objekts CFileDialog . Diese Vorlage wird nur unter Windows NT 4.0 und höheren Versionen, Windows 95 und höheren Versionen verwendet, oder wenn die OFN_EXPLORER Formatvorlage vorhanden ist.

Hinweise

Das System verwendet nur eine der angegebenen Vorlagen. Das System bestimmt, auf welcher Vorlage basierend auf dem Vorhandensein des OFN_EXPLORER Stils und des Betriebssystems, auf dem die Anwendung ausgeführt wird, verwendet werden soll. Durch Die Angabe einer Vorlage im Nicht-Explorer- und Explorer-Stil ist es einfach, Windows NT 3.51, Windows NT 4.0 und höhere Versionen und Windows 95 und höher zu unterstützen.

Hinweis

Windows Vista oder neuere Dialogfelder für Dateiformatvorlagen unterstützen diese Funktion nicht. Wenn Sie versuchen, diese Funktion in einem Windows Vista- oder späteren Dateidialogfeld zu verwenden, wird CNotSupportedException ausgelöst. Eine Alternative besteht darin, ein angepasstes Dialogfeld zu verwenden. Weitere Informationen zur Verwendung eines benutzerdefinierten CFileDialogFormulars finden Sie unter "IFileDialogCustomize".

CFileDialog::StartVisualGroup

Deklariert eine visuelle Gruppe im Dialogfeld. Nachfolgende Aufrufe einer "add"-Methode fügen diese Elemente dieser Gruppe hinzu.

HRESULT StartVisualGroup(
    DWORD dwIDCtl,
    const CString& strLabel);

Parameter

dwIDCtl
Die ID der visuellen Gruppe.

strLabel
Der Gruppenname.

Hinweise

CFileDialog::UpdateOFNFromShellDialog

Aktualisiert die m_ofn Datenstruktur des CFileDialog basierend auf dem aktuellen Status des internen Objekts.

void UpdateOFNFromShellDialog();

Hinweise

In Versionen von Windows vor Windows Vista wurde die Member-OPENFILENAME-Datenstruktur kontinuierlich mit dem Zustand der CFileDialog. Alle Änderungen an der m_ofn Membervariablen haben direkt auswirkungen auf den Status des Dialogfelds. Außerdem haben alle Änderungen am Status des Dialogfelds sofort die m_ofn Membervariable aktualisiert.

In Windows Vista oder höher wird die m_ofn Datenstruktur nicht automatisch aktualisiert. Um die Genauigkeit der Daten in der m_ofn Membervariable zu gewährleisten, sollten Sie die UpdateOFNFromShellDialog Funktion aufrufen, bevor Sie auf die Daten zugreifen. Windows ruft diese Funktion während der Verarbeitung von IFileDialog::OnFileOK automatisch auf.

Weitere Informationen zur Verwendung der CFileDialog Klasse unter Windows Vista oder höher finden Sie unter CFileDialog Class.

Beispiel

In diesem Beispiel wird die CFileDialog Voranzeige aktualisiert. Vor dem Aktualisieren der m_ofn Membervariable müssen wir sie mit dem aktuellen Status des Dialogfelds synchronisieren.

// Update the m_ofn variable
m_myFileDialogPtr->UpdateOFNFromShellDialog();

// Change the title
m_myFileDialogPtr->m_ofn.lpstrTitle = L"New Dialog Title";

// Apply the changes
m_myFileDialogPtr->ApplyOFNToShellDialog();

// Show the window
LRESULT result = m_myFileDialogPtr->DoModal();

Siehe auch

CCommonDialog-Klasse
Hierarchiediagramm