Classe CFileDialog
Incapsula la finestra di dialogo comune utilizzata per le operazioni di apertura o salvataggio di file.
Sintassi
class CFileDialog : public CCommonDialog
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CFileDialog::CFileDialog | Costruisce un oggetto CFileDialog . |
Metodi pubblici
Nome | Descrizione |
---|---|
CFileDialog::AddCheckButton | Aggiunge un pulsante di controllo alla finestra di dialogo. |
CFileDialog::AddComboBox | Aggiunge una casella combinata alla finestra di dialogo. |
CFileDialog::AddControlItem | Aggiunge un elemento a un controllo contenitore nella finestra di dialogo. |
CFileDialog::AddEditBox | Aggiunge una casella di modifica alla finestra di dialogo. |
CFileDialog::AddMenu | Aggiunge un menu alla finestra di dialogo. |
CFileDialog::AddPlace | Con overload. Aggiunge una cartella all'elenco delle posizioni disponibili per l'utente per aprire o salvare gli elementi. |
CFileDialog::AddPushButton | Aggiunge un pulsante alla finestra di dialogo. |
CFileDialog::AddRadioButtonList | Aggiunge un gruppo di pulsanti di opzione (noto anche come pulsante di opzione) alla finestra di dialogo. |
CFileDialog::AddSeparator | Aggiunge un separatore alla finestra di dialogo. |
CFileDialog::AddText | Aggiunge contenuto di testo alla finestra di dialogo. |
CFileDialog::ApplyOFNToShellDialog | Aggiorna lo stato dell'oggetto CFileDialog in modo che corrisponda ai parametri e ai flag archiviati nella m_ofn variabile membro. |
CFileDialog::D oModal | Visualizza la finestra di dialogo e consente all'utente di effettuare una selezione. |
CFileDialog::EnableOpenDropDown | Abilita un elenco a discesa nel pulsante Apri o Salva nella finestra di dialogo. |
CFileDialog::EndVisualGroup | Arresta l'aggiunta di elementi a un gruppo visivo nella finestra di dialogo. |
CFileDialog::GetCheckButtonState | Ottiene lo stato corrente di un pulsante di controllo (casella di controllo) nella finestra di dialogo. |
CFileDialog::GetControlItemState | Ottiene lo stato corrente di un elemento in un controllo contenitore trovato nella finestra di dialogo. |
CFileDialog::GetControlState | Ottiene la visibilità corrente e gli stati abilitati di un determinato controllo. |
CFileDialog::GetEditBoxText | Ottiene il testo corrente in un controllo casella di modifica. |
CFileDialog::GetFileExt | Restituisce l'estensione del file selezionato. |
CFileDialog::GetFileName | Restituisce il nome file del file selezionato. |
CFileDialog::GetFileTitle | Restituisce il titolo del file selezionato. |
CFileDialog::GetFolderPath | Recupera il percorso della cartella o della directory attualmente aperta per una finestra di dialogo Apri o Salva con nome comune in stile Esplora risorse. |
CFileDialog::GetIFileDialogCustomize | Recupera l'oggetto COM interno per un oggetto personalizzato CFileDialog . |
CFileDialog::GetIFileOpenDialog | Recupera l'oggetto COM interno per un CFileDialog oggetto utilizzato come finestra di dialogo Apri file. |
CFileDialog::GetIFileSaveDialog | Recupera l'oggetto COM interno per un CFileDialog oggetto utilizzato come finestra di dialogo Salva file. |
CFileDialog::GetNextPathName | Restituisce il percorso completo del file selezionato successivo. |
CFileDialog::GetOFN | Recupera la OPENFILENAME struttura dell'oggetto CFileDialog . |
CFileDialog::GetPathName | Restituisce il percorso completo del file selezionato. |
CFileDialog::GetReadOnlyPref | Restituisce lo stato di sola lettura del file selezionato. |
CFileDialog::GetResult | Ottiene la scelta effettuata dall'utente nella finestra di dialogo. |
CFileDialog::GetResults | Ottiene le scelte dell'utente in una finestra di dialogo che consente la selezione multipla. |
CFileDialog::GetSelectedControlItem | Ottiene un elemento specifico dai controlli contenitore specificati nella finestra di dialogo. |
CFileDialog::GetStartPosition | Restituisce la posizione del primo elemento dell'elenco dei nomi file. |
CFileDialog::HideControl | Nasconde il controllo specificato in una finestra di dialogo Apri o Salva con nome in stile Esplora risorse. |
CFileDialog::IsPickFoldersMode | Determina se la finestra di dialogo corrente in modalità selezione cartella. |
CFileDialog::MakeProminent | Inserisce un controllo nella finestra di dialogo in modo che si distingue rispetto ad altri controlli aggiunti. |
CFileDialog::RemoveControlItem | Rimuove un elemento da un controllo contenitore nella finestra di dialogo. |
CFileDialog::SetCheckButtonState | Imposta lo stato corrente di un pulsante di controllo (casella di controllo) nella finestra di dialogo. |
CFileDialog::SetControlItemState | Imposta lo stato corrente di un elemento in un controllo contenitore presente nella finestra di dialogo. |
CFileDialog::SetControlItemText | Imposta il testo di un elemento di controllo. Ad esempio, il testo che accompagna un pulsante di opzione o una voce in un menu. |
CFileDialog::SetControlLabel | Imposta il testo associato a un controllo, ad esempio il testo del pulsante o un'etichetta di casella di modifica. |
CFileDialog::SetControlState | Imposta la visibilità corrente e gli stati abilitati di un determinato controllo. |
CFileDialog::SetControlText | Imposta il testo per il controllo specificato in una finestra di dialogo Comune apri o salva con nome in stile Esplora risorse. |
CFileDialog::SetDefExt | Imposta l'estensione del nome file predefinita per una finestra di dialogo Apri o Salva con nome comune in stile Esplora risorse. |
CFileDialog::SetEditBoxText | Imposta il testo corrente in un controllo casella di modifica. |
CFileDialog::SetProperties | Fornisce un archivio delle proprietà che definisce i valori predefiniti da usare per l'elemento salvato. |
CFileDialog::SetSelectedControlItem | Imposta lo stato selezionato di un elemento specifico in un gruppo di pulsanti di opzione o in una casella combinata presente nella finestra di dialogo. |
CFileDialog::SetTemplate | Imposta il modello della finestra di dialogo per l'oggetto CFileDialog . |
CFileDialog::StartVisualGroup | Dichiara un gruppo visivo nella finestra di dialogo. Le chiamate successive a qualsiasi metodo "add" aggiungono tali elementi a questo gruppo. |
CFileDialog::UpdateOFNFromShellDialog | Aggiorna i dati archiviati nella m_ofn variabile membro in modo che corrispondano allo stato corrente della finestra di dialogo del file. |
Metodi protetti
Nome | Descrizione |
---|---|
CFileDialog::OnButtonClicked | Viene chiamato quando si fa clic sul pulsante. |
CFileDialog::OnCheckButtonToggled | Viene chiamato quando la casella di controllo è selezionata/deselezionata. |
CFileDialog::OnControlActivating | Chiamato quando il controllo è attivo. |
CFileDialog::OnFileNameChange | Gestisce il messaggio di WM_NOTIFY CDN_SELCHANGE. |
CFileDialog::OnFileNameOK | Convalida il nome del file immesso nella finestra di dialogo. |
CFileDialog::OnFolderChange | Gestisce il messaggio di WM_NOTIFY CDN_FOLDERCHANGE. |
CFileDialog::OnInitDone | Gestisce il messaggio di WM_NOTIFY CDN_INITDONE. |
CFileDialog::OnItemselected | Chiamato quando viene selezionato l'elemento del contenitore. |
CFileDialog::OnLBSelChangedNotify | Consente di eseguire azioni personalizzate quando cambia la selezione dei file. |
CFileDialog::OnShareViolation | Gestisce le violazioni di condivisione. |
CFileDialog::OnTypeChange | Gestisce il messaggio di WM_NOTIFY CDN_TYPECHANGE. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CFileDialog::m_ofn | Struttura di Windows OPENFILENAME . Fornisce l'accesso ai parametri della finestra di dialogo file di base. |
Osservazioni:
Le finestre di dialogo file comuni consentono di implementare finestre di dialogo di selezione file, ad esempio Apri file e Salva con nome, in modo coerente con gli standard di Windows.
È possibile usare CFileDialog
così come avviee con il costruttore fornito oppure è possibile derivare la propria classe di finestre di dialogo da CFileDialog
e scrivere un costruttore in base alle proprie esigenze. In entrambi i casi, queste finestre di dialogo si comportano come le finestre di dialogo MFC standard perché derivano dalla classe CCommonDialog. CFileDialog
si basa sul file COMMDLG.DLL incluso in Windows.
Sia l'aspetto che la funzionalità di CFileDialog
con Windows Vista o versioni successive differiscono dalle versioni precedenti di Windows. L'impostazione predefinita CFileDialog
usa automaticamente il nuovo stile Windows Vista o versione successiva senza modifiche al codice se un programma viene compilato ed eseguito in Windows Vista o versioni successive. Usare il parametro bVistaStyle nel costruttore per eseguire manualmente l'override di questo aggiornamento automatico. L'eccezione all'aggiornamento automatico è una finestra di dialogo personalizzata. Non verranno convertiti nel nuovo stile. Per altre informazioni sul costruttore, vedere CFileDialog::CFileDialog.
Nota
Il sistema id controllo differisce in Windows Vista o versioni successive rispetto alle versioni precedenti di Windows quando si usa un oggetto CFileDialog
. È necessario aggiornare tutti i riferimenti ai CFileDialog
controlli nel codice prima di poter convertire il progetto da una versione precedente di Windows.
Alcuni CFileDialog
metodi non sono supportati in Windows Vista o versioni successive. Controllare l'argomento relativo al singolo metodo per informazioni sull'eventuale supporto del metodo. Inoltre, le funzioni ereditate seguenti non sono supportate in Windows Vista o versioni successive:
I messaggi di Windows per la CFileDialog
classe variano in base al sistema operativo in uso. Ad esempio, Windows XP non supporta CDialog::OnCancel e CDialog::OnOK per la CFileDialog
classe . Tuttavia, Windows Vista e sistemi operativi successivi li supportano. Per altre informazioni sui diversi messaggi generati e sull'ordine in cui vengono ricevuti, vedere Esempio di CFileDialog: Registrazione dell'ordine eventi.
Per usare un CFileDialog
oggetto , creare prima di tutto l'oggetto usando il CFileDialog
costruttore . Dopo aver costruito la finestra di dialogo, è possibile impostare o modificare qualsiasi valore nella struttura CFileDialog::m_ofn per inizializzare i valori o gli stati dei controlli della finestra di dialogo. La m_ofn
struttura è di tipo OPENFILENAME
. Per altre informazioni, vedere la struttura OPENFILENAME in Windows SDK.
Dopo aver inizializzato i controlli della finestra di dialogo, chiamare il metodo CFileDialog::D oModal per visualizzare la finestra di dialogo in modo che l'utente possa digitare il percorso e il nome del file. DoModal
restituisce un valore che indica se l'utente ha fatto clic su OK (IDOK) o sul pulsante Annulla (IDCANCEL). Se DoModal
restituisce IDOK, è possibile usare una delle CFileDialog
funzioni membro pubbliche per recuperare le informazioni inserite dall'utente.
Nota
In Windows Vista o versione successiva più chiamate a IFileDialog::SetFileTypes generano un errore. La seconda chiamata a SetFileTypes
per qualsiasi istanza di un CFileDialog
restituirà E_UNEXPECTED in Windows Vista o versione successiva. Alcune CFileDialog
funzioni del metodo chiamano SetFileTypes
. Ad esempio, due chiamate a CFileDialog::DoModal
per la stessa istanza di un CFileDialog
oggetto genera ASSERT.
CFileDialog
include diversi membri protetti che consentono di gestire in modo personalizzato le violazioni di condivisione, la convalida dei nomi file e la notifica di modifica della casella di riepilogo. Questi membri protetti sono funzioni di callback che la maggior parte delle applicazioni non deve usare perché 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 Windows CommDlgExtendedError per determinare se si è verificato un errore durante l'inizializzazione della finestra di dialogo e per altre informazioni sull'errore.
La distruzione degli CFileDialog
oggetti viene gestita automaticamente. Non è necessario chiamare CDialog::EndDialog.
Per consentire all'utente di selezionare più file, impostare il flag OFN_ALLOWMULTISELECT prima di chiamare DoModal
. È necessario specificare il proprio buffer dei nomi di file per contenere l'elenco restituito di più nomi di file. A tale scopo, sostituire m_ofn.lpstrFile
con un puntatore a un buffer allocato, dopo aver costruito CFileDialog
, ma prima di chiamare DoModal
.
Inoltre, è necessario impostare m_ofn.nMaxFile
usando il numero di caratteri nel buffer a m_ofn.lpstrFile
cui punta . Se si imposta il numero massimo di file da selezionare su n
, la dimensione del buffer necessaria è n * (_MAX_PATH + 1) + 1
. Il primo elemento restituito nel buffer è il percorso della cartella in cui sono stati selezionati i file. Per le finestre di dialogo di Windows Vista o versioni successive, le stringhe di directory e nome file vengono terminate con null, con un carattere Null aggiuntivo dopo l'ultimo nome file. Questo formato consente alle finestre di dialogo in stile Explorer di restituire nomi di file lunghi che includono spazi. Per le finestre di dialogo di vecchio stile, le stringhe di directory e nome file sono separate da spazi e la funzione usa nomi di file brevi per i nomi di file con spazi.
Nell'esempio seguente viene illustrato come usare un buffer per recuperare ed elencare più nomi di 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 più nomi di 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 usare una mappa dei messaggi per gestire tutti i messaggi. Per estendere la gestione predefinita dei messaggi, derivare una classe da CFileDialog
, aggiungere una mappa messaggi alla nuova classe e fornire 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. Passare tutti i messaggi non elaborati alla classe base. Non è necessario personalizzare la funzione hook.
Quando si usa lo stile Di Windows Vista o versione successiva di CFileDialog
, non è possibile utilizzare mappe messaggi e modelli di finestra di dialogo. È invece necessario usare le interfacce COM per funzionalità simili.
Per altre informazioni su come usare CFileDialog
, vedere Classi di dialoghi comuni.
Gerarchia di ereditarietà
CFileDialog
Requisiti
Intestazione: afxdlgs.h
CFileDialog::AddCheckButton
Aggiunge un pulsante di controllo alla finestra di dialogo.
HRESULT AddCheckButton(
DWORD dwIDCtl,
const CString& strLabel,
BOOL bChecked);
Parametri
dwIDCtl
ID del pulsante di controllo da aggiungere.
strLabel
Nome del pulsante di controllo.
bChecked
Valore booleano che indica lo stato corrente del pulsante di controllo. TRUE se selezionato; FALSE in caso contrario
Osservazioni:
CFileDialog::AddComboBox
Aggiunge una casella combinata alla finestra di dialogo.
HRESULT AddComboBox(DWORD dwIDCtl);
Parametri
dwIDCtl
ID della casella combinata da aggiungere.
Osservazioni:
CFileDialog::AddControlItem
Aggiunge un elemento a un controllo contenitore nella finestra di dialogo.
HRESULT AddControlItem(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parametri
dwIDCtl
ID del controllo contenitore a cui aggiungere l'elemento.
dwIDItem
ID dell'elemento.
strLabel
Testo dell'elemento.
Osservazioni:
CFileDialog::AddEditBox
Aggiunge una casella di modifica alla finestra di dialogo.
HRESULT AddEditBox(
DWORD dwIDCtl,
const CString& strText);
Parametri
dwIDCtl
ID della casella di modifica da aggiungere.
strText
Nome della casella di modifica.
Osservazioni:
CFileDialog::AddMenu
Aggiunge un menu alla finestra di dialogo.
HRESULT AddMenu(
DWORD dwIDCtl,
const CString& strLabel);
Parametri
dwIDCtl
ID del menu da aggiungere.
strLabel
Nome del menu.
Osservazioni:
CFileDialog::AddPlace
Aggiunge una cartella all'elenco delle posizioni disponibili per l'utente per aprire o salvare gli elementi.
void AddPlace(
LPCWSTR lpszFolder,
FDAP fdap = FDAP_TOP) throw();
void AddPlace(
IShellItem* psi,
FDAP fdap = FDAP_TOP) throw();
Parametri
lpszFolder
Percorso della cartella da rendere disponibile all'utente. Può trattarsi solo di una cartella.
fdap
Specifica la posizione della cartella all'interno dell'elenco.
Psi
Puntatore a un oggetto IShellItem che rappresenta la cartella da rendere disponibile all'utente. Può trattarsi solo di una cartella.
Osservazioni:
CFileDialog::AddPushButton
Aggiunge un pulsante alla finestra di dialogo.
HRESULT AddPushButton(
DWORD dwIDCtl,
const CString& strLabel);
Parametri
dwIDCtl
ID del pulsante da aggiungere.
strLabel
Nome del pulsante.
Osservazioni:
CFileDialog::AddRadioButtonList
Aggiunge un gruppo di pulsanti di opzione (noto anche come pulsante di opzione) alla finestra di dialogo.
HRESULT AddRadioButtonList(DWORD dwIDCtl);
Parametri
dwIDCtl
ID del gruppo di pulsanti di opzione da aggiungere.
Osservazioni:
CFileDialog::AddSeparator
Aggiunge un separatore alla finestra di dialogo.
HRESULT AddSeparator(DWORD dwIDCtl);
Parametri
dwIDCtl
ID del separatore da aggiungere.
Osservazioni:
CFileDialog::AddText
Aggiunge testo alla finestra di dialogo.
HRESULT AddText(
DWORD dwIDCtl,
const CString& strText);
Parametri
dwIDCtl
ID del testo da aggiungere.
strText
Nome del testo.
Osservazioni:
CFileDialog::ApplyOFNToShellDialog
Aggiorna lo stato corrente di CFileDialog in base ai valori archiviati nella struttura dei m_ofn
dati.
void ApplyOFNToShellDialog();
Osservazioni:
Nelle versioni di Windows precedenti a Windows Vista, la struttura di dati OPENFILENAME del membro è stata sincronizzata continuamente con lo stato di CFileDialog
. Tutte le modifiche apportate alla variabile membro m_ofn sono state immediatamente riflesse nello stato della finestra di dialogo. Inoltre, tutte le modifiche apportate allo stato della finestra di dialogo aggiornano immediatamente la m_ofn
variabile membro.
In Windows Vista o versioni successive, i valori nella m_ofn
variabile membro e nello stato di CFileDialog
non sono garantiti per la sincronizzazione. Questa funzione forza l'aggiornamento dello stato dell'oggetto CFileDialog
in modo che corrisponda alla m_ofn
struttura. Windows chiama automaticamente questa funzione durante CFileDialog::D oModal.
Per altre informazioni su come usare la CFileDialog
classe in Windows Vista o versione successiva, vedere Classe CFileDialog.
Esempio
Vedere l'esempio per CFileDialog::UpdateOFNFromShellDialog.
CFileDialog::CFileDialog
Chiamare questa funzione per costruire una finestra di dialogo standard di file di 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
bOpenFileDialog
[in] Parametro che specifica il tipo di finestra di dialogo da creare. Impostarla su TRUE per costruire una finestra di dialogo Apri file. Impostarlo su FALSE per costruire una finestra di dialogo Salva con nome file.
lpszDefExt
[in] Estensione del nome file predefinita. Se l'utente non include un'estensione nota (una con un'associazione nel computer dell'utente) nella casella Nome file, l'estensione specificata da lpszDefExt viene aggiunta automaticamente al nome del file. Se questo parametro è NULL, non viene aggiunta alcuna estensione.
lpszFileName
[in] Nome file iniziale visualizzato nella casella Nome file. Se NULL, non viene visualizzato alcun nome file iniziale.
dwFlags
[in] Combinazione di uno o più flag che è possibile usare per personalizzare la finestra di dialogo. Per una descrizione di questi flag, vedere la struttura OPENFILENAME in Windows SDK. Se si modifica il membro della m_ofn.Flags
struttura, usare un operatore OR bit per bit nelle modifiche per mantenere intatto il comportamento predefinito.
lpszFilter
[in] Serie di coppie di stringhe che specificano i filtri che è possibile applicare al file. Se si specificano filtri di file, nell'elenco File verranno visualizzati solo i file che corrispondono ai criteri di filtro. Per altre informazioni sull'uso dei filtri di file, vedere la sezione Osservazioni.
pParentWnd
[in] Puntatore alla finestra padre o proprietario della finestra di dialogo del file.
dwSize
[in] Dimensione della OPENFILENAME
struttura. Questo valore dipende dalla versione del sistema operativo. MFC ha usato questo parametro per determinare il tipo di finestra di dialogo appropriato da creare. Le dimensioni predefinite di 0 indicano che il codice MFC determinerà le dimensioni corrette della finestra di dialogo da usare in base alla versione del sistema operativo in cui viene eseguito il programma.
bVistaStyle
[in] Nota Questo parametro è disponibile in Visual Studio 2008 e versioni successive e fa sì che la finestra di dialogo di nuovo stile venga usata solo se è in esecuzione in Windows Vista o versione successiva.
Parametro che specifica lo stile della finestra di dialogo del file. Impostarlo su TRUE per usare le nuove finestre di dialogo del file di stile Vista. In caso contrario, verrà utilizzato lo stile precedente delle finestre di dialogo. Per altre informazioni sull'esecuzione in Vista, vedere la sezione Osservazioni.
Osservazioni:
Viene creata una finestra di dialogo Apri file o Salva con nome, a seconda del valore di bOpenFileDialog.
L'impostazione di un'estensione predefinita tramite lpszDefExt potrebbe non produrre il comportamento previsto, perché raramente è prevedibile quali estensioni hanno associazioni di file nel computer dell'utente. Se è necessario un maggiore controllo sull'aggiunta di un'estensione predefinita, è possibile derivare la propria classe da CFileDialog
ed eseguire l'override del CFileDialog::OnFileNameOK
metodo per eseguire la propria gestione delle estensioni.
Per consentire all'utente di selezionare più file, impostare il flag OFN_ALLOWMULTISELECT prima di chiamare DoModal. È necessario specificare il proprio buffer dei nomi file per archiviare l'elenco restituito di più nomi di file. A tale scopo, sostituire m_ofn.lpstrFile
con un puntatore a un buffer allocato, dopo aver costruito CFileDialog, ma prima di chiamare DoModal
. Inoltre, è necessario impostare m_ofn.nMaxFile
con il numero di caratteri nel buffer a m_ofn.lpstrFile
cui punta . Se si imposta il numero massimo di file da selezionare su n, la dimensione del buffer necessaria è 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 in stile Explorer usando il mouse o la tastiera, impostare il flag OFN_ENABLESIZING. L'impostazione di questo flag è necessaria solo se si specifica una routine hook o un modello personalizzato. Il flag funziona solo con una finestra di dialogo in stile Explorer; Non è possibile ridimensionare le finestre di dialogo di stile precedente.
Il parametro lpszFilter viene usato per determinare il tipo di nome file che un file deve essere visualizzato nell'elenco di file. La prima stringa nella coppia di stringhe descrive il filtro; la seconda stringa indica l'estensione del nome di file da usare. È possibile specificare più estensioni usando un punto e virgola (il carattere ';') come delimitatore. La stringa termina con due caratteri barra verticale (||
), seguiti da un carattere NULL. È anche possibile usare un oggetto CString per questo parametro.
Ad esempio, Microsoft Excel consente agli utenti di aprire file con estensioni xlc (grafico) o .xls (foglio di lavoro), tra gli altri. Il filtro per Excel può essere scritto come segue:
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 prevede di usare questa stringa per aggiornare direttamente la OPENFILENAME
struttura, è necessario delimitare le stringhe con il carattere Null, '\0'
, anziché le barre verticali ('|'
).
Il parametro bVistaStyle è applicabile solo quando viene eseguito in Windows Vista o versioni successive. Nelle versioni precedenti di Windows questo parametro viene ignorato. Se bVistaStyle è impostato su TRUE, quando si compila un programma con Visual Studio 2008 o versione successiva, verrà usata la nuova finestra di dialogo file di stile Vista. In caso contrario, verrà utilizzata la finestra di dialogo precedente del file di stile MFC.
I modelli di finestra di dialogo non sono supportati nei dialoghi basati su bVistaStyle
Esempio
Vedere l'esempio per CFileDialog::D oModal.
CFileDialog::D oModal
Chiamare questa funzione per visualizzare la finestra di dialogo File comune di Windows e consentire all'utente di esplorare file e directory e immettere un nome file.
virtual INT_PTR DoModal();
Valore restituito
IDOK o IDCANCEL. Se viene restituito IDCANCEL, chiamare la funzione Windows CommDlgExtendedError per determinare se si è verificato un errore.
IDOK e IDCANCEL sono costanti che indicano se l'utente ha selezionato il pulsante OK o Annulla.
Osservazioni:
Se si desidera inizializzare le varie opzioni della finestra di dialogo file impostando i membri della m_ofn
struttura, è necessario eseguire questa operazione prima di chiamare DoModal
, ma dopo la costruzione dell'oggetto dialogo.
Ad esempio, se si desidera consentire all'utente di selezionare più file, impostare il flag OFN_ALLOWMULTISELECT prima di chiamare DoModal
, come illustrato nell'esempio di codice in questo argomento.
Quando l'utente fa clic sui pulsanti OK o Annulla della finestra di dialogo oppure seleziona l'opzione Chiudi dal menu di controllo della finestra di dialogo, il controllo viene restituito all'applicazione. È quindi possibile chiamare altre funzioni membro per recuperare le impostazioni o le informazioni immesse dall'utente nella finestra di dialogo.
DoModal
è una funzione virtuale sottoposta a override dalla classe CDialog
.
Esempio
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
Abilita un elenco a discesa nel pulsante Apri o Salva nella finestra di dialogo.
HRESULT EnableOpenDropDown(DWORD dwIDCtl);
Parametri
dwIDCtl
ID dell'elenco a discesa.
Osservazioni:
CFileDialog::EndVisualGroup
Arresta l'aggiunta di elementi a un gruppo visivo nella finestra di dialogo.
HRESULT EndVisualGroup();
Valore restituito
Restituisce S_OK se ha esito positivo; un valore di errore in caso contrario.
Osservazioni:
CFileDialog::GetCheckButtonState
Recupera lo stato corrente di un pulsante di controllo (casella di controllo) nella finestra di dialogo.
HRESULT GetCheckButtonState(
DWORD dwIDCtl,
BOOL& bChecked);
Parametri
dwIDCtl
ID della casella di controllo.
bChecked
Stato della casella di controllo. TRUE indica che è stato controllato; FALSE indica un controllo non selezionato.
Osservazioni:
CFileDialog::GetControlItemState
Recupera lo stato corrente di un elemento in un controllo contenitore presente nella finestra di dialogo.
HRESULT GetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF& dwState);
Parametri
dwIDCtl
ID del controllo contenitore.
dwIDItem
ID dell'elemento.
dwState
Riferimento a una variabile che riceve uno di più valori dall'enumerazione CDCONTROLSTATE che indica lo stato corrente del controllo.
Osservazioni:
CFileDialog::GetControlState
Recupera la visibilità corrente e gli stati abilitati di un determinato controllo.
HRESULT GetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF& dwState);
Parametri
dwIDCtl
ID del controllo.
dwState
Riferimento a una variabile che riceve uno o più valori dall'enumerazione CDCONTROLSTATE che indica lo stato corrente del controllo.
Osservazioni:
CFileDialog::GetEditBoxText
Recupera il testo corrente in un controllo casella di modifica.
HRESULT GetEditBoxText(
DWORD dwIDCtl,
CString& strText);
Parametri
dwIDCtl
ID della casella di modifica.
strText
Valore del testo.
Osservazioni:
CFileDialog::GetFileExt
Chiamare questa funzione per recuperare l'estensione del nome file immesso nella finestra di dialogo.
CString GetFileExt() const;
Valore restituito
Estensione del nome file.
Osservazioni:
Ad esempio, se il nome del file immesso è DATA.TXT, GetFileExt
restituisce "TXT".
Se m_ofn.Flags
il flag OFN_ALLOWMULTISELECT è impostato, questa stringa contiene una sequenza di stringhe con terminazione Null, con la prima stringa che corrisponde al percorso della directory del gruppo di file selezionato, seguito dai nomi di tutti i file selezionati dall'utente. Per recuperare i nomi dei percorsi dei file, usare le funzioni membro GetStartPosition e GetNextPathName .
CFileDialog::GetFileName
Chiamare questa funzione per recuperare il nome del nome file immesso nella finestra di dialogo.
CString GetFileName() const;
Valore restituito
Nome del file.
Osservazioni:
Il nome del file include sia il prefisso che l'estensione. Ad esempio, GetFileName
restituirà "TEXT. DAT" per il file C:\FILES\TEXT.DAT.
Se m_ofn.Flags
il OFN_ALLOWMULTISELECT
flag è impostato, è necessario chiamare GetStartPosition e GetNextPathName per recuperare un percorso di file.
CFileDialog::GetFileTitle
Chiamare questa funzione per recuperare il titolo del file immesso nella finestra di dialogo.
CString GetFileTitle() const;
Valore restituito
Titolo del file.
Osservazioni:
Il titolo del file include solo il prefisso, senza il percorso o l'estensione. Ad esempio, GetFileTitle
restituirà "TEXT" per il file C:\FILES\TEXT.DAT.
Se m_ofn.Flags
il flag OFN_ALLOWMULTISELECT è impostato, questa stringa contiene una sequenza di stringhe con terminazione Null, con la prima stringa che corrisponde al percorso della directory del gruppo di file selezionato, seguito dai nomi di tutti i file selezionati dall'utente. Per questo motivo, utilizzare le funzioni membro GetStartPosition e GetNextPathName per recuperare il nome file successivo nell'elenco.
Esempio
Vedere l'esempio per CFileDialog::D oModal.
CFileDialog::GetFolderPath
Chiamare questa funzione membro per recuperare il percorso della cartella o della directory attualmente aperta per una finestra di dialogo Apri o Salva con nome comune in stile Esplora risorse.
CString GetFolderPath() const;
Valore restituito
Oggetto CString contenente la cartella o la directory attualmente aperta.
Osservazioni:
La finestra di dialogo deve essere stata creata con lo stile OFN_EXPLORER; in caso contrario, il metodo avrà esito negativo con un'asserzione.
È possibile chiamare questo metodo solo durante la visualizzazione della finestra di dialogo. Dopo la chiusura della finestra di dialogo, questa funzione non funzionerà più e il metodo avrà esito negativo con un'asserzione.
CFileDialog::GetIFileDialogCustomize
Recupera un puntatore all'oggetto COM interno per un determinato CFileDialog.
IFileDialogCustomize* GetIFileDialogCustomize();
Valore restituito
Puntatore all'oggetto COM interno per l'oggetto CFileDialog
. È responsabilità dell'utente rilasciare questo puntatore in modo appropriato.
Osservazioni:
Utilizzare questa funzione solo in Windows Vista o versioni successive con un oggetto con bVistaStyle impostato su TRUE. Se si usa questa funzione quando bVistaStyle è FALSE, restituisce NULL in modalità di rilascio e genera un'asserzione in modalità di debug.
Per altre informazioni sull'interfaccia IFileDialogCustomize
, vedere IFileDialogCustomize.
Esempio
In questo esempio viene recuperato l'oggetto COM interno. Per eseguire questo esempio di codice, è necessario compilarlo in Windows Vista o versione successiva.
// 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
Recupera un puntatore all'oggetto COM interno per un determinato CFileDialog
oggetto .
IFileOpenDialog* GetIFileOpenDialog();
Valore restituito
Puntatore all'oggetto COM interno per l'oggetto CFileDialog
. È responsabilità dell'utente rilasciare questo puntatore in modo appropriato.
Osservazioni:
Utilizzare questa funzione solo in Windows Vista o versioni successive con un oggetto con bVistaStyle impostato su TRUE. Questa funzione restituisce NULL se CFileDialog
non è una finestra di dialogo Apri o se bVistaStyle è impostato su FALSE. In questo caso finale, la funzione restituisce SOLO NULL in modalità di rilascio: in modalità di debug genererà un'asserzione.
Per altre informazioni sull'interfaccia IFileOpenDialog
, vedere IFileOpenDialog.
Esempio
In questo esempio viene recuperato l'oggetto COM interno. Per eseguire questo codice, è necessario compilarlo in Windows Vista o versione successiva.
// 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
Recupera un puntatore all'oggetto COM interno per un determinato CFileDialog
oggetto .
IFileSaveDialog* GetIFileSaveDialog();
Valore restituito
Puntatore all'oggetto COM interno per l'oggetto CFileDialog
. È responsabilità dell'utente rilasciare questo puntatore in modo appropriato.
Osservazioni:
Utilizzare questa funzione solo in Windows Vista o versioni successive con un oggetto con bVistaStyle impostato su TRUE. Questa funzione restituirà NULL se non CFileDialog
è una finestra di dialogo Salva o se bVistaStyle è impostato su FALSE. In questo caso finale, la funzione restituisce SOLO NULL in modalità di rilascio: in modalità di debug genererà un'asserzione.
Per altre informazioni sull'interfaccia IFileSaveDialog
, vedere IFileSaveDialog.
Esempio
In questo esempio viene recuperato l'oggetto COM interno. Per eseguire questo esempio di codice, è necessario compilarlo in Windows Vista o versione successiva.
// 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
Chiamare questa funzione per recuperare il nome file successivo dal gruppo selezionato nella finestra di dialogo.
CString GetNextPathName(POSITION& pos) const;
Parametri
pos
Riferimento a un valore POSITION restituito da una chiamata di funzione o GetStartPosition
precedenteGetNextPathName
. NULL se è stata raggiunta la fine dell'elenco.
Valore restituito
Percorso completo del file.
Osservazioni:
Il percorso del nome file include il titolo del file e l'intero percorso della directory. Ad esempio, GetNextPathName
restituirà "C:\FILES\TEXT. DAT" per il file C:\FILES\TEXT.DAT. È possibile usare GetNextPathName
in un ciclo di iterazione in avanti se si stabilisce la posizione iniziale con una chiamata a GetStartPosition
.
Se la selezione è costituita da un solo file, verrà restituito il nome del file.
CFileDialog::GetOFN
Recupera la struttura associata OPENFILENAME
.
const OPENFILENAME& GetOFN() const;
OPENFILENAME& GetOFN();
Valore restituito
Struttura OPENFILENAME .
Osservazioni:
Usare la seconda versione di questa funzione per inizializzare l'aspetto di una finestra di dialogo File Open o File Save As dopo che è stata costruita, ma prima che venga visualizzata con la DoModal
funzione membro. Ad esempio, è possibile impostare il lpstrTitle
membro di sulla didascalia m_ofn
in cui si desidera che la finestra di dialogo abbia.
CFileDialog::GetPathName
Chiamare questa funzione per recuperare il percorso completo del file immesso nella finestra di dialogo.
CString GetPathName() const;
Valore restituito
Percorso completo del file.
Osservazioni:
Il percorso del nome file include il titolo del file e l'intero percorso della directory. Ad esempio, GetPathName
restituirà "C:\FILES\TEXT. DAT" per il file C:\FILES\TEXT.DAT.
Se m_ofn.Flags
il flag OFN_ALLOWMULTISELECT è impostato, questa stringa contiene una sequenza di stringhe con teminamento null, con la prima stringa che corrisponde al percorso di directory del gruppo di file selezionato, seguito dai nomi di tutti i file selezionati dall'utente. Per questo motivo, utilizzare le funzioni membro GetStartPosition e GetNextPathName per recuperare il nome file successivo nell'elenco.
Esempio
Vedere l'esempio per CFileDialog::D oModal.
CFileDialog::GetReadOnlyPref
Chiamare questa funzione per determinare se la casella di controllo Sola lettura è stata selezionata nelle finestre di dialogo Apri file e File Salva con nome standard di Windows.
BOOL GetReadOnlyPref() const;
Valore restituito
Diverso da zero se la casella di controllo Sola lettura nella finestra di dialogo è selezionata; in caso contrario, 0.
Osservazioni:
È possibile nascondere la casella di controllo Sola lettura impostando lo stile OFN_HIDEREADONLY nel CFileDialog
costruttore.
Nota
Gli oggetti di stile CFileDialog
di Windows Vista o versioni successive non supportano questa funzione. Se si tenta di usare questa funzione in uno stile CFileDialog
Windows Vista o versione successiva, CNotSupportedException verrà generata.
CFileDialog::GetResult
Recupera la scelta effettuata dall'utente nella finestra di dialogo.
IShellItem* GetResult() throw();
Valore restituito
Puntatore a un oggetto IShellItem che rappresenta la scelta dell'utente.
Osservazioni:
CFileDialog::GetResults
Recupera le scelte dell'utente in una finestra di dialogo che consente la selezione multipla.
IShellItemArray* GetResults() throw();
Valore restituito
Puntatore a un oggetto IShellItemArray tramite il quale è possibile accedere agli elementi selezionati nella finestra di dialogo.
Osservazioni:
CFileDialog::GetSelectedControlItem
Recupera un elemento specifico dal controllo contenitore specificato nella finestra di dialogo.
HRESULT GetSelectedControlItem(
DWORD dwIDCtl,
DWORD& dwIDItem);
Parametri
dwIDCtl
ID del controllo contenitore.
dwIDItem
ID dell'elemento selezionato dall'utente nel controllo .
Osservazioni:
CFileDialog::GetStartPosition
Chiamare questa funzione membro per recuperare la posizione del primo nome percorso file nell'elenco, se m_ofn.Flags
è impostato il flag OFN_ALLOWMULTISELECT.
POSITION GetStartPosition() const;
Valore restituito
Valore POSITION che può essere utilizzato per l'iterazione; NULL se l'elenco è vuoto.
CFileDialog::HideControl
Chiamare questa funzione membro per nascondere il controllo specificato in una finestra di dialogo Apri o Salva con nome comune in stile Explorer.
void HideControl(int nID);
Parametri
nID
ID del controllo da nascondere.
Osservazioni:
La finestra di dialogo deve essere stata creata con lo stile OFN_EXPLORER; in caso contrario, la funzione avrà esito negativo con un'asserzione.
CFileDialog::IsPickFoldersMode
Determina se la finestra di dialogo corrente è in modalità di selezione cartelle.
BOOL IsPickFoldersMode() const;
Valore restituito
TRUE se la finestra di dialogo è in modalità di selezione cartelle; in caso contrario FALSE.
Osservazioni:
CFileDialog::m_ofn
m_ofn
è una struttura di tipo OPENFILENAME
. I dati in questa struttura rappresentano lo stato corrente dell'oggetto CFileDialog
.
Osservazioni:
Utilizzare questa struttura per inizializzare l'aspetto di una finestra di dialogo File Open o File Save As dopo averlo costruito, ma prima di visualizzarlo con il metodo DoModal . Ad esempio, è possibile impostare il membro lpstrTitle di sulla didascalia m_ofn
che si desidera che la finestra di dialogo abbia.
Con lo stile Windows Vista o successivo di CFileDialog, m_ofn
non è garantito che corrisponda sempre allo stato della finestra di dialogo. Viene sincronizzato con la finestra di dialogo nelle versioni precedenti di Windows. Vedere CFileDialog::ApplyOFNToShellDialog e CFileDialog::UpdateOFNFromShellDialog per altre informazioni sulla sincronizzazione della m_ofn
struttura e dello CFileDialog
stato in Windows Vista o versione successiva.
Le finestre di dialogo dei file di stile di Windows Vista o versioni successive non supportano determinati membri e flag di CFileDialog
. Di conseguenza, questi non avranno alcun effetto.
Di seguito è riportato un elenco dei membri non supportati da Windows Vista o versioni successive:
lpstrCustomFilter
lpstrInitialDir
lCustData
lpfnHook
lpTemplateName
I flag seguenti non sono supportati e pertanto non hanno alcun effetto quando si usa lo stile windows Vista o versione successiva di CFileDialog
:
OFN_ENABLEHOOK
OFN_ENABLEINCLUDENOTIFY
OFN_ENABLETEMPLATE
OFN_ENABLETEMPLATEHANDLE
OFN_EXPLORER
OFN_EXTENSIONDIFFERENT
OFN_HIDEREADONLY
OFN_LONGNAMES : in modo efficace sempre attivo in Windows Vista o versioni successive
OFN_NOLONGNAMES : sempre disattivato in Windows Vista o versioni successive
OFN_NONETWORKBUTTON : in modo efficace sempre attivo in Windows Vista o versioni successive
OFN_READONLY
OFN_SHOWHELP
Per altre informazioni su questa struttura, vedere la struttura OPENFILENAME in Windows SDK.
CFileDialog::MakeProminent
Inserisce un controllo nella finestra di dialogo in modo che si distingue rispetto ad altri controlli.
HRESULT MakeProminent(DWORD dwIDCtl);
Parametri
dwIDCtl
ID del controllo.
Osservazioni:
CFileDialog::OnButtonClicked
Viene chiamato quando si fa clic sul pulsante.
virtual void OnButtonClicked(DWORD dwIDCtl);
Parametri
dwIDCtl
ID del pulsante.
Osservazioni:
CFileDialog::OnCheckButtonToggled
Viene chiamato quando la casella di controllo è selezionata o deselezionata.
virtual void OnCheckButtonToggled(
DWORD dwIDCtl,
BOOL bChecked);
Parametri
dwIDCtl
ID della casella di controllo.
bChecked
Selezionata o deselezionata.
Osservazioni:
CFileDialog::OnControlActivating
Chiamato quando il controllo viene attivato.
virtual void OnControlActivating(DWORD dwIDCtl);
Parametri
dwIDCtl
ID del controllo.
Osservazioni:
CFileDialog::OnFileNameChange
Eseguire l'override di questo metodo se si desidera gestire il messaggio di WM_NOTIFY CDN_SELCHANGE.
virtual void OnFileNameChange();
Osservazioni:
Il sistema invia il messaggio di CDN_SELCHANGE quando l'utente seleziona un nuovo file o una nuova cartella nell'elenco di file della finestra di dialogo Apri o Salva con nome . Eseguire l'override di questo metodo se si desidera eseguire azioni in risposta a questo messaggio.
Il sistema invia questo messaggio solo se la finestra di dialogo è stata creata con il flag OFN_EXPLORER attivato. Per altre informazioni sulla notifica, vedere CDN_SELCHANGE. Per informazioni sul flag OFN_EXPLORER, vedere la struttura OPENFILENAME e Le finestre di dialogo Apri e Salva con nome.
CFileDialog::OnFileNameOK
Eseguire l'override di questa funzione solo se si vuole fornire la convalida personalizzata dei nomi file immessi in una finestra di dialogo di file comune.
virtual BOOL OnFileNameOK();
Valore restituito
1 se il nome file non è un nome file valido; in caso contrario, 0.
Osservazioni:
Questa funzione consente di rifiutare un nome file per qualsiasi motivo specifico dell'applicazione. In genere, non è necessario usare questa funzione perché il framework fornisce la convalida predefinita dei nomi file e visualizza una finestra di messaggio se viene immesso un nome file non valido.
Se viene restituito 1, la finestra di dialogo rimarrà visualizzata affinché l'utente immetta un altro nome file. La procedura di dialogo ignora la finestra di dialogo se il valore restituito è 0. Altri valori restituiti diversi da zero sono attualmente riservati e non devono essere usati.
CFileDialog::OnFolderChange
Eseguire l'override di questa funzione per gestire il messaggio di WM_NOTIFYCDN_FOLDERCHANGE.
virtual void OnFolderChange();
Osservazioni:
Il messaggio di notifica viene inviato quando viene aperta una nuova cartella nella finestra di dialogo Apri o Salva con nome.
La notifica viene inviata solo se la finestra di dialogo è stata creata con lo stile OFN_EXPLORER. Per altre informazioni sulla notifica, vedere CDN_FOLDERCHANGE. Per informazioni sullo stile OFN_EXPLORER, vedere la struttura OPENFILENAME e Le finestre di dialogo Apri e Salva con nome.
CFileDialog::OnInitDone
Eseguire l'override di questa funzione per gestire il messaggio di WM_NOTIFY CDN_INITDONE.
virtual void OnInitDone();
Osservazioni:
Il sistema invia questo messaggio di notifica al termine dell'organizzazione dei controlli nella finestra di dialogo Apri o Salva con nome per liberare spazio per i controlli della finestra di dialogo figlio.
Il sistema lo invia solo se la finestra di dialogo è stata creata con lo stile OFN_EXPLORER. Per altre informazioni sulla notifica, vedere CDN_INITDONE. Per informazioni sullo stile OFN_EXPLORER, vedere la struttura OPENFILENAME e Le finestre di dialogo Apri e Salva con nome.
Nota
Le finestre di dialogo dei file di stile di Windows Vista o versioni successive non supportano questa funzione. Se si tenta di usare questa funzione in una finestra di dialogo di windows Vista o di file di stile successiva, verrà generata l'eccezione CNotSupportedException.
CFileDialog::OnItemselected
Chiamato quando l'elemento del contenitore è selezionato.
virtual void OnItemSelected(
DWORD dwIDCtl,
DWORD dwIDItem);
Parametri
dwIDCtl
ID del controllo contenitore.
dwIDItem
ID dell'elemento.
Osservazioni:
CFileDialog::OnLBSelChangedNotify
Questa funzione viene chiamata ogni volta che la selezione corrente in una casella di riepilogo sta per cambiare.
virtual void OnLBSelChangedNotify(
UINT nIDBox,
UINT iCurSel,
UINT nCode);
Parametri
nIDBox
ID della casella di riepilogo o della casella combinata in cui si è verificata la selezione.
iCurSel
Indice della selezione corrente.
nCode
Codice di notifica del controllo. Questo parametro deve avere uno dei valori seguenti:
CD_LBSELCHANGE Specifica che iCurSel è l'elemento selezionato in una casella di riepilogo a selezione singola.
CD_LBSELSUB Specifica che iCurSel non è più selezionato in una casella di riepilogo a selezione multipla.
CD_LBSELADD Specifica che iCurSel è selezionato in una casella di riepilogo a selezione multipla.
CD_LBSELNOITEMS Specifica che non esiste alcuna selezione in una casella di riepilogo a selezione multipla.
Osservazioni:
Eseguire l'override di questa funzione per fornire la gestione personalizzata delle modifiche di selezione nella casella di riepilogo. Ad esempio, è possibile usare questa funzione per visualizzare i diritti di accesso o l'ultima modifica di ogni file selezionato dall'utente.
CFileDialog::OnShareViolation
Eseguire l'override di questa funzione per fornire la gestione personalizzata delle violazioni della condivisione.
virtual UINT OnShareViolation(LPCTSTR lpszPathName);
Parametri
lpszPathName
Percorso del file in cui si è verificata la violazione della condivisione.
Valore restituito
Uno dei valori seguenti:
OFN_SHAREFALLTHROUGH Il nome file viene restituito dalla finestra di dialogo.
OFN_SHARENOWARN Non è necessario intraprendere ulteriori azioni.
OFN_SHAREWARN L'utente riceve il messaggio di avviso standard per questo errore.
Osservazioni:
In genere, non è necessario usare questa funzione perché il framework fornisce il controllo predefinito delle violazioni di condivisione e visualizza una finestra di messaggio se si verifica una violazione della condivisione.
Se si desidera disabilitare il controllo delle violazioni di condivisione, usare l'operatore OR bit per bit per combinare il flag OFN_SHAREAWARE con m_ofn.Flags
.
CFileDialog::OnTypeChange
Eseguire l'override di questa funzione per gestire il messaggio di WM_NOTIFYCDN_TYPECHANGE.
virtual void OnTypeChange();
Osservazioni:
Il messaggio di notifica viene inviato quando l'utente seleziona un nuovo tipo di file dall'elenco dei tipi di file nella finestra di dialogo Apri o Salva con nome.
La notifica viene inviata solo se la finestra di dialogo è stata creata con lo stile OFN_EXPLORER. Per altre informazioni sulla notifica, vedere CDN_TYPECHANGE. Per informazioni sullo stile OFN_EXPLORER, vedere la struttura OPENFILENAME e Le finestre di dialogo Apri e Salva con nome.
CFileDialog::RemoveControlItem
Rimuove un elemento da un controllo contenitore nella finestra di dialogo.
HRESULT RemoveControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parametri
dwIDCtl
ID del controllo contenitore da cui rimuovere l'elemento.
dwIDItem
ID dell'elemento.
Osservazioni:
CFileDialog::SetCheckButtonState
Imposta lo stato corrente di un pulsante di controllo (casella di controllo) nella finestra di dialogo.
HRESULT SetCheckButtonState(
DWORD dwIDCtl,
BOOL bChecked);
Parametri
dwIDCtl
ID della casella di controllo.
bChecked
Stato della casella di controllo. TRUE indica che è stato controllato; FALSE indica un controllo non selezionato.
Osservazioni:
CFileDialog::SetControlItemState
Imposta lo stato corrente di un elemento in un controllo contenitore presente nella finestra di dialogo.
HRESULT SetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF dwState);
Parametri
dwIDCtl
ID del controllo contenitore.
dwIDItem
ID dell'elemento.
dwState
Uno o più valori dell'enumerazione CDCONTROLSTATE che indicano il nuovo stato del controllo.
Osservazioni:
CFileDialog::SetControlItemText
Imposta il testo di un elemento di controllo. Ad esempio, il testo che accompagna un pulsante di opzione o una voce in un menu.
HRESULT SetControlItemText(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parametri
dwIDCtl
ID del controllo contenitore.
dwIDItem
ID dell'elemento.
strLabel
Testo dell'elemento.
Osservazioni:
CFileDialog::SetControlLabel
Imposta il testo associato a un controllo, ad esempio il testo del pulsante o un'etichetta di casella di modifica.
HRESULT SetControlLabel(
DWORD dwIDCtl,
const CString& strLabel);
Parametri
dwIDCtl
ID del controllo.
strLabel
Nome del controllo.
Osservazioni:
CFileDialog::SetControlState
Imposta la visibilità corrente e gli stati abilitati di un determinato controllo.
HRESULT SetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF dwState);
Parametri
dwIDCtl
ID del controllo.
dwState
Uno o più valori dell'enumerazione CDCONTROLSTATE che indicano lo stato corrente del controllo.
Osservazioni:
CFileDialog::SetControlText
Chiamare questo metodo per impostare il testo per il controllo specificato in una finestra di dialogo Apri o Salva con nome in stile Esplora risorse.
void SetControlText(
int nID,
LPCSTR lpsz);
void SetControlText(
int nID,
const wchar_t *lpsz);
Parametri
nID
[in] ID del controllo per cui impostare il testo.
lpsz
[in] Puntatore alla stringa contenente il testo da impostare per il controllo.
Osservazioni:
Entrambe le versioni di questa funzione sono valide per le applicazioni che usano Unicode. Tuttavia, solo la versione con il tipo LPCSTR è valida per le applicazioni che usano ANSI.
Per utilizzare questo metodo, è necessario creare la finestra di dialogo con lo stile OFN_EXPLORER. In caso contrario, la funzione avrà esito negativo con un'asserzione.
CFileDialog::SetDefExt
Chiamare questa funzione per impostare l'estensione del nome file predefinita per una finestra di dialogo Apri o Salva con nome comune in stile Esplora risorse.
void SetDefExt(LPCSTR lpsz);
Parametri
lpsz
Puntatore a una stringa contenente l'estensione predefinita da utilizzare per l'oggetto finestra di dialogo. Questa stringa non deve contenere un punto (.).
Osservazioni:
La finestra di dialogo deve essere stata creata con lo stile OFN_EXPLORER; in caso contrario, la funzione avrà esito negativo con un'asserzione.
CFileDialog::SetEditBoxText
Imposta il testo corrente in un controllo casella di modifica.
HRESULT SetEditBoxText(
DWORD dwIDCtl,
const CString& strText);
Parametri
dwIDCtl
ID della casella di modifica.
strText
Valore del testo.
Osservazioni:
CFileDialog::SetProperties
Fornisce un archivio delle proprietà che definisce i valori predefiniti da usare per l'elemento salvato.
BOOL SetProperties(LPCWSTR lpszPropList);
Parametri
lpszPropList
Elenco di proprietà predefinite separate da ";". Per un elenco dei flag, vedere la sezione Flags di OPENFILENAME.
Osservazioni:
CFileDialog::SetSelectedControlItem
Imposta lo stato selezionato di un elemento specifico in un gruppo di pulsanti di opzione o in una casella combinata presente nella finestra di dialogo.
HRESULT SetSelectedControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parametri
dwIDCtl
ID del controllo contenitore.
dwIDItem
ID dell'elemento selezionato dall'utente nel controllo .
Osservazioni:
CFileDialog::SetTemplate
Imposta il modello di finestra di dialogo per l'oggetto CFileDialog .
void SetTemplate(
UINT nWin3ID,
UINT nWin4ID);
void SetTemplate(
LPCTSTR lpWin3ID,
LPCTSTR lpWin4ID);
Parametri
nWin3ID
[in] Contiene il numero ID della risorsa modello per l'oggetto non Explorer CFileDialog
. Questo modello viene usato solo in Windows NT 3.51 o quando lo stile OFN_EXPLORER non è presente.
nWin4ID
[in] Contiene il numero ID della risorsa modello per l'oggetto Explorer CFileDialog
. Questo modello viene usato solo in Windows NT 4.0 e versioni successive, Windows 95 e versioni successive o quando è presente lo stile OFN_EXPLORER.
lpWin3ID
[in] Contiene il nome della risorsa modello per l'oggetto non Explorer CFileDialog
. Questo modello viene usato solo in Windows NT 3.51 o quando lo stile OFN_EXPLORER non è presente.
lpWin4ID
[in] Contiene il nome della risorsa modello dell'oggetto Explorer CFileDialog
. Questo modello viene usato solo in Windows NT 4.0 e versioni successive, Windows 95 e versioni successive o quando è presente lo stile OFN_EXPLORER.
Osservazioni:
Il sistema userà solo uno dei modelli specificati. Il sistema determina il modello da usare in base alla presenza dello stile OFN_EXPLORER e del sistema operativo in cui è in esecuzione l'applicazione. Specificando sia un modello non Explorer che explorer, è facile supportare Windows NT 3.51, Windows NT 4.0 e versioni successive e Windows 95 e versioni successive.
Nota
Le finestre di dialogo dei file di stile di Windows Vista o versioni successive non supportano questa funzione. Se si tenta di usare questa funzione in una finestra di dialogo di Windows Vista o in un file di stile successivo, verrà generata l'eccezione CNotSupportedException. Un'alternativa consiste nell'usare una finestra di dialogo personalizzata. Per altre informazioni sull'uso di un oggetto personalizzato CFileDialog
, vedere IFileDialogCustomize.
CFileDialog::StartVisualGroup
Dichiara un gruppo visivo nella finestra di dialogo. Le chiamate successive a qualsiasi metodo "add" aggiungono tali elementi a questo gruppo.
HRESULT StartVisualGroup(
DWORD dwIDCtl,
const CString& strLabel);
Parametri
dwIDCtl
ID del gruppo di oggetti visivi.
strLabel
Nome del gruppo.
Osservazioni:
CFileDialog::UpdateOFNFromShellDialog
Aggiorna la m_ofn
struttura dei dati di CFileDialog in base allo stato corrente dell'oggetto interno.
void UpdateOFNFromShellDialog();
Osservazioni:
Nelle versioni di Windows precedenti a Windows Vista, la struttura di dati OPENFILENAME del membro è stata sincronizzata continuamente con lo stato di CFileDialog
. Tutte le modifiche apportate alla variabile membro m_ofn influiscono direttamente sullo stato della finestra di dialogo. Inoltre, tutte le modifiche apportate allo stato del dialogo hanno immediatamente aggiornato la variabile membro m_ofn.
In Windows Vista o versione successiva la struttura dei m_ofn
dati non viene aggiornata automaticamente. Per garantire l'accuratezza dei dati nella m_ofn
variabile membro, è necessario chiamare la UpdateOFNFromShellDialog
funzione prima di accedere ai dati. Windows chiama automaticamente questa funzione durante l'elaborazione di IFileDialog::OnFileOK.
Per altre informazioni su come usare la CFileDialog
classe in Windows Vista o versione successiva, vedere Classe CFileDialog.
Esempio
In questo esempio viene aggiornato l'oggetto CFileDialog
prima di visualizzarlo. Prima di aggiornare la m_ofn
variabile membro, è necessario sincronizzarla con lo stato corrente della finestra di dialogo.
// 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();