Classe di CFileDialog
Incapsula la finestra di dialogo comune utilizzata per il file aperto o le operazioni di salvataggio del file.
class CFileDialog : public CCommonDialog
Membri
Costruttori pubblici
Nome |
Descrizione |
---|---|
Costruisce un oggetto CFileDialog. |
Metodi pubblici
Nome |
Descrizione |
---|---|
Aggiungere un pulsante alla finestra di dialogo. |
|
Aggiunge una casella combinata nella finestra di dialogo. |
|
Aggiunge un elemento a un controllo contenitore nella finestra di dialogo. |
|
Aggiunge una casella di modifica alla finestra di dialogo. |
|
Aggiunge un menu alla finestra di dialogo. |
|
Di overload.Aggiunge una cartella all'elenco dei punti disponibili per l'utente per aprire o salvare gli elementi. |
|
Aggiungere un pulsante alla finestra di dialogo. |
|
Aggiunge un gruppo di pulsanti di opzione (ovvero come pulsante di opzione) nella finestra di dialogo. |
|
Aggiunge un separatore alla finestra di dialogo. |
|
Aggiunge il contenuto di testo alla finestra di dialogo. |
|
Aggiorna lo stato CFileDialog corrispondente ai parametri e i flag archiviati nella variabile membro m_ofn. |
|
Visualizzare la finestra di dialogo e consente all'utente di effettuare una selezione. |
|
Abilita un elenco a discesa del pulsante Salva o Apri nella finestra di dialogo. |
|
Interrompe l'aggiunta di elementi a un gruppo visivo nella finestra di dialogo. |
|
Ottiene lo stato corrente di un pulsante del controllo (casella di controllo) nella finestra di dialogo. |
|
Ottiene lo stato corrente di un elemento in un controllo contenitore trovato nella finestra di dialogo. |
|
Ottiene la visibilità corrente e gli stati abilitati di un determinato controllo. |
|
Ottiene il testo corrente in un controllo casella di modifica. |
|
Restituisce l'estensione del file selezionato. |
|
Restituisce il nome del file selezionato. |
|
Restituisce il nome del file selezionato. |
|
Recupera il percorso della cartella o della directory correntemente aperta per Apri o una finestra di dialogo comune di tipo Esplora risorse Salva con nome. |
|
Recupera l'oggetto COM interno di un oggetto personalizzato CFileDialog. |
|
Recupera l'oggetto COM interno CFileDialog utilizzato come finestra di dialogo File Apri. |
|
Recupera l'oggetto COM interno CFileDialog utilizzato come finestra di dialogo File Salva. |
|
Restituisce il percorso completo del file una volta selezionato. |
|
Recuperare la struttura OPENFILENAME dell'oggetto CFileDialog. |
|
Restituisce il percorso completo del file selezionato. |
|
Restituisce lo stato di sola lettura del file selezionato. |
|
Ottiene la scelta che l'utente ha effettuato nella finestra di dialogo. |
|
Ottiene le opzioni dell'utente in una finestra di dialogo che consente la selezione multipla. |
|
Ottiene un elemento specifico dai controlli contenitori specificati nella finestra di dialogo. |
|
Restituisce la posizione del primo elemento di un elenco di nomi file. |
|
Nasconde il controllo specificato in Apri o una finestra di dialogo comune di tipo Esplora risorse Salva con nome. |
|
Determina se la finestra di dialogo corrente in modalità di selezione della cartella. |
|
Inserisce un controllo nella finestra di dialogo in modo che funzioni da confrontata con altri controlli aggiunti. |
|
Rimuove un elemento da un controllo contenitore nella finestra di dialogo. |
|
Imposta lo stato corrente di un pulsante del controllo (casella di controllo) nella finestra di dialogo. |
|
Imposta lo stato corrente di un elemento in un controllo contenitore trovato nella finestra di dialogo. |
|
Imposta il testo di un elemento del controllo.Ad esempio, il testo fornito un pulsante di opzione o un elemento in un menu. |
|
Imposta il testo associata a un controllo, ad esempio testo del pulsante o un'etichetta della casella di modifica. |
|
Impostare la visibilità corrente e gli stati abilitati di un determinato controllo. |
|
Imposta il testo del controllo specificato in Apri o una finestra di dialogo comune di tipo Esplora risorse Salva con nome. |
|
Impostare l'estensione di file predefinito per Apri o una finestra di dialogo comune di tipo Esplora risorse Salva con nome. |
|
Imposta il testo corrente in un controllo casella di modifica. |
|
Fornisce un archivio delle proprietà che definisce i valori predefiniti da utilizzare per l'elemento salvato. |
|
Imposta lo stato selezionato di un elemento specifico in un gruppo di pulsanti di opzione o una casella combinata merge nella finestra di dialogo. |
|
Imposta il modello di finestra di dialogo per l'oggetto CFileDialog. |
|
Dichiara un gruppo visivo nella finestra di dialogo.Le chiamate successive a qualsiasi “aggiunti al metodo aggiungere gli elementi a questo gruppo. |
|
Aggiorna i dati archiviati in una variabile membro m_ofn in base allo stato corrente della finestra di dialogo File. |
Metodi protetti
Nome |
Descrizione |
---|---|
Chiamato quando viene fatto clic sul pulsante. |
|
Chiamato quando la casella di controllo è selezionata e selezionare. |
|
Chiamato quando il controllo è attivo. |
|
Gestisce il messaggio WM_NOTIFY CDN_SELCHANGE. |
|
Convalida il nome file nella finestra di dialogo. |
|
Gestisce il messaggio WM_NOTIFY CDN_FOLDERCHANGE. |
|
Gestisce il messaggio WM_NOTIFY CDN_INITDONE. |
|
Chiamato quando l'elemento contenitore sta selezionando. |
|
Consente di eseguire azioni personalizzate quando le modifiche di selezione del file. |
|
Violazioni della condivisione di handle. |
|
Gestisce il messaggio WM_NOTIFY CDN_TYPECHANGE. |
Membri dati pubblici
Nome |
Descrizione |
---|---|
La struttura di Windows OPENFILENAME.Fornisce l'accesso ai parametri di base della finestra di dialogo File. |
Note
Le finestre di dialogo dei file comuni consentono di implementare le finestre di dialogo di selezione file, ad esempio, Apri file e Salva con nome, in modo coerente con gli standard di Windows.
È possibile utilizzare CFileDialog come accade con il costruttore fornito, oppure è possibile derivare la classe della finestra di dialogo da CFileDialog e scrivere un costruttore per esigenze.In entrambi i casi, queste finestre di dialogo e un comportamento simili a finestre di dialogo standard di MFC poiché derivano da Classe di CCommonDialog.CFileDialog si basa sul file di COMMDLG.DLL incluso in Windows.
Sia l'aspetto della funzionalità CFileDialog con Windows Vista differiscono dalle versioni precedenti di Windows.L'impostazione predefinita CFileDialog utilizza automaticamente il nuovo stile Windows Vista senza modifiche al codice se un programma viene compilato ed eseguito in Windows Vista.Utilizzare il parametro bVistaStyle nel costruttore manualmente per eseguire l'override di questo aggiornamento automatico.All'aggiornamento automatico è finestre di dialogo in misura.Non verranno convertite nel nuovo stile.Per ulteriori informazioni sul costruttore, vedere CFileDialog::CFileDialog.
[!NOTA]
Il sistema ID del controllo differisce in Windows Vista da versioni precedenti di Windows quando si utilizza CFileDialog.È necessario aggiornare tutti i riferimenti ai controlli CFileDialog nel codice prima di trasferire il progetto da una versione precedente di Windows.
Alcuni metodi CFileDialog non sono supportati in Windows Vista.Verificare il singolo argomento del metodo per informazioni su se il metodo è supportato.Inoltre, le seguenti funzioni ereditate non sono supportate in Windows Vista:
I messaggi di windows per la classe CFileDialog varia a seconda del sistema operativo in uso.Ad esempio, Windows XP non supporta CDialog::OnCancel e CDialog::OnOK per la classe CFileDialog.Tuttavia, Windows Vista li supporta.Per ulteriori informazioni sui diversi messaggi generati e l'ordine in cui vengono ricevuti, vedere esempio di CFileDialog: Ordine degli eventi di registrazione.
Per utilizzare un oggetto CFileDialog, creare innanzitutto l'oggetto utilizzando il costruttore CFileDialog.Dopo la finestra di dialogo è stata creata, è possibile impostare o modificare i valori nella struttura CFileDialog::m_ofn per inizializzare i valori o gli stati dei comandi della finestra di dialogo.La struttura m_ofn è di tipo OPENFILENAME.Per ulteriori informazioni, vedere la struttura OPENFILENAME in Windows SDK.
Dopo avere inizializzato i controlli finestra di dialogo, chiamare il metodo CFileDialog::DoModal per visualizzare la finestra di dialogo in modo da poter immettere l'utente il percorso e il nome file.DoModal restituisce se l'utente ha fatto clic su OK IDOK () o sul pulsante di annullamento (IDCANCEL).Se DoModal restituisce IDOK, è possibile utilizzare una delle funzioni membro pubbliche CFileDialog per recuperare le informazioni immesse nell'utente.
[!NOTA]
In Windows Vista, le chiamate di più a IFileDialog::SetFileTypes provoca un errore.La seconda chiamata a SetFileTypes per ogni istanza CFileDialog restituirà E_UNEXPECTED in Windows Vista.La chiamata di funzioni metodo CFileDialogSetFileTypes.Ad esempio, due chiamate a CFileDialog::DoModal per la stessa istanza CFileDialog generato ASSERT.
CFileDialog include diversi membri protetti che consentono di eseguire la gestione personalizzata di violazioni della condivisione, la convalida del nome file e la notifica di modifica della casella di riepilogo.Questi membri protetti sono funzioni di callback che la maggior parte delle applicazioni non devono utilizzare poiché la gestione predefinita viene eseguita automaticamente.Le voci della mappa messaggi per queste funzioni non sono necessarie perché sono funzioni virtuali standard.
È possibile utilizzare la funzione di Windows CommDlgExtendedError per determinare se si è verificato un errore durante l'inizializzazione della finestra di dialogo e per ulteriori informazioni sull'errore.
L'eliminazione di oggetti CFileDialog viene gestita automaticamente.Non è necessario chiamare CDialog::EndDialog.
Per consentire a più file selezionati dell'utente, impostare il flag OFN_ALLOWMULTISELECT prima di chiamare DoModal.È necessario fornire un buffer di nome file per estendere 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 utilizza 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 richieste è n * (_MAX_PATH + 1) + 1.Il primo elemento restituito nel buffer è il percorso della cartella in cui i file sono stati selezionati.Per le finestre di dialogo stile Windows Vista, le stringhe di nome file e la directory vengono con terminazione null, con un carattere null aggiuntivo dopo l'ultimo nome file.Questo formato consente alle finestre di dialogo di tipo Esplora risorse per restituire i nomi di file lunghi che includono spazi.Per le finestre di dialogo obsolete, le stringhe di nome file e la directory sono separate da spazi e la funzione utilizza i nomi brevi file per i nomi file con spazi.
Nell'esempio seguente viene illustrato come utilizzare un buffer per recuperare ed elencare i nomi più file.
#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 modificare le dimensioni del buffer in risposta all'utente che seleziona i nomi più file, è necessario derivare una nuova classe da CFileDialog ed eseguire l'override del metodo CFileDialog::OnFileNameChange.
Se si deriva una nuova classe da CFileDialog, è possibile utilizzare una mappa messaggi per gestire tutti i messaggi.Per estendere la gestione dei messaggi predefinito, derivare una classe da CFileDialog, aggiungere una mappa messaggi alla nuova classe e specificare le funzioni membro per i nuovi messaggi.Non è necessario fornire una funzione hook per personalizzare la finestra di dialogo.
Per personalizzare la finestra di dialogo, derivare una classe da CFileDialog, fornire un modello di finestra di dialogo personalizzato e aggiungere una mappa messaggi per elaborare i messaggi di notifica dai controlli estesi.Analizzare tutti i messaggi non elaborati alla classe di base.Non è necessario personalizzare la funzione hook.
Quando si utilizza lo stile Windows VistaCFileDialog, non è possibile utilizzare le mappe dei messaggi e i modelli di finestra di dialogo.Invece, è necessario utilizzare le interfacce COM per funzionalità simile.
Per ulteriori informazioni sull'utilizzo di CFileDialog, vedere Classi comuni della finestra di dialogo.
Gerarchia di ereditarietà
CFileDialog
Requisiti
**Intestazione:**afxdlgs.h