Freigeben über


CFileDialog::CFileDialog

Rufen Sie diese Funktion auf, um ein Standard-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

  • [in] bOpenFileDialog
    Der Parameter, der angibt, welcher Typ des Dialogfelds zu erstellen. Legen Sie sie zu TRUE fest, um ein Dialogfeld Datei öffnen zu erstellen. Legen Sie sie zu FALSE fest, um ein Dialogfeld Datei speichern unter zu erstellen.

  • [in] lpszDefExt
    Die Standarddateierweiterung. Wenn der Benutzer eine bekannte Erweiterung (eine, die eine Zuordnung auf dem Computer des Benutzers hat), nicht im Dateinamenfeld enthält, wird die Erweiterung, die von lpszDefExt angegeben wird, automatisch an den Dateinamen angefügt. Wenn dieser Parameter NULL ist, wird keine Erweiterung angefügt.

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

  • [in] dwFlags
    Eine Kombination aus einem oder mehreren Flags, die Sie verwenden können, um das Dialogfeld anzupassen. Eine Beschreibung der Flags, finden Sie die OPENFILENAME-Struktur in Windows SDK. Wenn Sie den m_ofn.Flags-Strukturmember ändern, verwenden Sie einen bitweisen Operator OR in den Änderungen, um das Standardverhalten intakt bleibt.

  • [in] lpszFilter
    Eine Zeichenfolgenpaare, die Filter angeben, können Sie auf die Datei gelten. Wenn Sie Dateifilter angeben, nur Dateien, die Filterkriterien übereinstimmen, in der Dateiliste angezeigt werden. Weitere Informationen finden Sie in den Hinweisen weitere Informationen dazu, wie mit Dateifiltern funktioniert.

  • [in] pParentWnd
    Ein Zeiger auf den übergeordneten oder auf Besitzerfenster des Dateidialogfelds.

  • [in] dwSize
    Die Größe der OPENFILENAME-Struktur. Dieser Wert hängt von der Version des Betriebssystems ab. MFC verwendeten diesen Parameter, um die entsprechende Art des Dialogfelds zu bestimmen, die (beispielsweise, neue Windows 2000 Dialogfelder statt der Dialogfelder NT4) zu erstellen. Die Standardgröße von 0 bedeutet, dass der MFC-Code die richtige Dialogfeldgröße bestimmt, die auf Grundlage der Version des Betriebssystems verwendet werden, auf der das Programm ausgeführt wird.

  • [in] bVistaStyle
    Hinweis dieser Parameter ist in Visual Studio 2008 und höher verfügbar ist und wird das neue Dialogfeld verwendet werden, nur, wenn Sie in Windows Vista und höher ausgeführt werden.

    Der Parameter, der das Format des Dateidialogfelds angibt. Legen Sie ihn zu TRUE fest, um die neuen Vista-Formatdateidialogfelder zu verwenden. Andernfalls werden des alten Formats von Dialogfeldern verwendet. Weitere Informationen finden Sie in den Hinweisen zu Informationen zum Ausführen unter Vista.

Hinweise

Entweder Datei öffnen oder Dialogfeld Datei speichern unter wird, je nach Wert von bOpenFileDialog erstellt.

Das Angeben einer Standarderweiterung mithilfe lpszDefExt erzeugt möglicherweise nicht das Verhalten, das Sie erwarten, da es selten vorhersehbar ist, welche Erweiterungen Dateizuordnungen auf dem Computer des Benutzers haben. Wenn Sie das Anfügen einer Standarderweiterung benötigen, können Sie die eigene Klasse von ableiten und CFileDialogCFileDialog::OnFileNameOK überschreiben die - Methode, um eine eigene Erweiterungsbehandlung auszuführen.

Um den die Benutzer mehrere Dateien auszuwählen, 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 zu speichern. 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 mit der Anzahl von Zeichen im Puffer festlegen, 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 sind _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 den die Benutzer ein Explorer-Formatdialogfeld indem Sie mit der Maus oder Tastatur angepasst haben, legen Sie das OFN_ENABLESIZING-Flag fest. Dieses Flag festzulegen ist nur erforderlich, wenn Sie eine Hookprozedur oder eine Gewohnheitsvorlage bereitstellen. Das Flag kann nur mit einem Explorer-Formatdialogfeld; alte Dialogfelder können nicht angepasst werden.

Der lpszFilter-Parameter wird verwendet, um den Typ des Dateinamens zu bestimmen, welche eine Datei in der Dateiliste angezeigt werden muss. Die erste Zeichenfolge in den Zeichenfolgenpaaren beschreibt den Filter; die zweite Standard-Funktionsressourcendatei gibt die Dateinamenerweiterung an, um zu verwenden. Mehrere Erweiterungen werden angegeben werden, indem ein Semikolon verwendet ("; " Zeichen) als Trennzeichen. Die Zeichenfolgenenden mit zwei "|" Zeichen, gefolgt von einem NULL Zeichen. Sie können ein CString-Objekt für diesen Parameter auch verwenden.

Beispielsweise ermöglicht Microsoft Excel Benutzer von Dateien, die Erweiterungen .xlc (Diagramm) oder Arbeitsblatt (.xls), unter anderem. Der Filter für Excel kann wie 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 planen, diese Zeichenfolge zu verwenden, um die OPENFILENAME-Struktur direkt zu aktualisieren, sollten Sie die Zeichenfolgen mit dem NULL-Zeichen, "\0 " begrenzen, anstelle der senkrechten Striche ("|").

Der bVistaStyle-Parameter gilt nur, bei Ausführung unter Windows Vista. In früheren Versionen von Windows, wird dieser Parameter ignoriert. Wenn bVistaStyle zu TRUE festgelegt wird, wenn Sie ein Programm mit Visual Studio 2008 oder höher kompilieren, wird das neue Vista-Format Dateidialogfeld verwendet. Andernfalls wird das vorherige MFC-Format Dateidialogfeld verwendet. Weitere Informationen finden Sie unter CFileDialog-Klasse.

Dialogfeldvorlagen werden nicht auf Dialogfelder auf Grundlage bVistaStyle unterstützt

Beispiel

Im Beispiel für CFileDialog::DoModal.

Anforderungen

Header: afxdlgs.h

Siehe auch

Referenz

CFileDialog-Klasse

Hierarchiediagramm

CFileDialog::DoModal

GetOpenFileName

GetSaveFileName

OPENFILENAME