CFileDialog::CFileDialog

Chiamare la funzione per costruire una finestra di dialogo standard di file Windows.

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
);

Parametri

  • [in]bOpenFileDialog
    Il parametro che specifica il tipo di finestra di dialogo da creare.Impostarlo a TRUE per costruire una finestra di dialogo Apri file.Impostarlo a FALSE per costruire una finestra di dialogo Salva con nome.

  • [in]lpszDefExt
    L'estensione predefinita.Se l'utente non include l'estensione nota (una che presenta un'associazione nel computer dell'utente) nella casella immettere il nome file, l'estensione specificata da lpszDefExt viene automaticamente aggiunta al nome file.Se questo parametro è NULL, alcuna estensione accodata.

  • [in]lpszFileName
    Il nome file iniziale visualizzato nella casella del nome file.Se NULL, nessun nome file iniziale viene visualizzata.

  • [in]dwFlags
    Una combinazione di uno o più flag che è possibile utilizzare per personalizzare la finestra di dialogo.Per una descrizione di questi flag, vedere la struttura di OPENFILENAME in Windows SDK.Se si modifica il membro della struttura di m_ofn.Flags, utilizzare un operatore OR bit per bit le modifiche per mantenere il comportamento predefinito invariato.

  • [in]lpszFilter
    Una serie di coppie di stringa che specificano filtri è possibile applicare al file.Se si specificano filtri di file, solo i file che corrispondono ai criteri di filtro verranno visualizzati nell'elenco dei file.Vedere la sezione relativa alle osservazioni per ulteriori informazioni su come utilizzare i filtri di file.

  • [in]pParentWnd
    Un puntatore al padre o alla finestra proprietaria della finestra di dialogo File.

  • [in]dwSize
    La dimensione della struttura di OPENFILENAME.Questo valore dipende dalla versione del sistema operativo.MFC utilizza questo parametro per determinare il tipo appropriato di finestra di dialogo creare, ad esempio nuove finestre di dialogo di Windows 2000 anziché le finestre di dialogo NT4).La dimensione predefinita di 0 indica che il codice MFC determinerà la dimensione corretta della finestra di dialogo da utilizzare in base alla versione del sistema operativo in cui il programma viene eseguito.

  • [in]bVistaStyle
    Nota questo parametro è disponibile in Visual Studio 2008 e versioni successive e si comporta la finestra di dialogo nuovo stile a essere utilizzato solo se viene eseguito in Windows Vista o in un secondo momento.

    Il parametro che specifica lo stile della finestra di dialogo file.Impostarlo a TRUE per utilizzare le nuove finestre di dialogo file di stile di Visualizzazione.In caso contrario, lo stile antico delle finestre di dialogo verrà utilizzato.Vedere la sezione relativa alle osservazioni per ulteriori informazioni sull'esecuzione nella visualizzazione.

Note

Apri file o la finestra di dialogo Salva con nome viene costruito, a seconda del valore di bOpenFileDialog.

Specificare l'estensione predefinita utilizzando lpszDefExt non può produrre un comportamento previsto, in quanto è prevedibile che raramente estensioni di associazioni di file nel computer dell'utente.Se è necessario un maggiore controllo sull'aggiunta di un'estensione predefinita, è possibile derivare la classe da CFileDialoged eseguire l'override del metodo di CFileDialog::OnFileNameOK per eseguire la gestione dell'estensione.

Per consentire all'utente di selezionare più file, impostare il flag di OFN_ALLOWMULTISELECT prima di chiamare DoModal.È necessario fornire un buffer di nome file per archiviare l'elenco restituito dei nomi più file.Scegliere questo m_ofn.lpstrFile sostituendo con un puntatore a un buffer che è stato allocato, dopo la costruzione CFileDialog, ma prima di chiamare DoModal.Inoltre, è necessario impostare m_ofn.nMaxFile con il numero di caratteri nel buffer puntato da m_ofn.lpstrFile.Se si imposta il numero massimo di file da selezionare in n, le dimensioni del buffer necessarie sono n* (_MAX_PATH + 1) + 1.Ad esempio:

#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++;
  }
}

Per consentire all'utente di ridimensionare una finestra di dialogo tipo Esplora risorse utilizzando il mouse o la tastiera, impostare il flag di OFN_ENABLESIZING.Impostare questo flag è necessario solo se si fornisce una routine di hook o un modello personalizzate.Funzionamento del flag solo a una finestra di dialogo tipo Esplora risorse, le finestre di dialogo obsolete non possono essere ridimensionate.

Il parametro di lpszFilter viene utilizzato per determinare il tipo di nome a un file deve disporre per essere visualizzati nell'elenco dei file.La prima stringa nella coppia della stringa che descrive il filtro, la seconda stringa rappresenta l'estensione di file da utilizzare.Più estensioni possono essere specificate utilizzando un punto e virgola ("; " carattere) come delimitatore.La stringa termina con due "|" caratteri, seguita da un carattere di NULL.È inoltre possibile utilizzare un oggetto di CString per questo parametro.

Ad esempio, Microsoft Excel consente agli utenti di aprire i file con estensione .xlc grafico () o (xls foglio di lavoro), tra l'altro.Il filtro per Excel può essere scritta come:

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

Tuttavia, se si intende utilizzare questa stringa direttamente per aggiornare la struttura di OPENFILENAME, è necessario delimitare le stringhe con il carattere null, "\ 0 ", invece delle barre verticali ("|").

Il parametro di bVistaStyle è applicabile solo quando è in esecuzione in Windows Vista.Nelle versioni precedenti di Windows, questo parametro viene ignorato.Se bVistaStyle è impostato su TRUE, quando si compila un programma con Visual Studio 2008 o successiva, il nuovo stile Finestra di dialogo file di Vista verrà utilizzato.In caso contrario, lo stile precedente Finestra di dialogo file MFC verrà utilizzato.Per ulteriori informazioni, vedere Classe di CFileDialog.

I modelli della finestra di dialogo non sono supportati nelle finestre di dialogo basate su bVistaStyle

Esempio

Vedere l'esempio relativo CFileDialog::DoModal.

Requisiti

Header:afxdlgs.h

Vedere anche

Riferimenti

Classe di CFileDialog

Grafico della gerarchia

CFileDialog::DoModal

GetOpenFileName

GetSaveFileName

OPENFILENAME