Condividi tramite


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 Aggiornamenti 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 Aggiornamenti 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 WM_NOTIFY rete CDN_edizione Standard LCHANGE.
CFileDialog::OnFileNameOK Convalida il nome del file immesso nella finestra di dialogo.
CFileDialog::OnFolderChange Gestisce il messaggio di WM_NOTIFY rete CDN_FOLDERCHANGE.
CFileDialog::OnInitDone Gestisce il messaggio di WM_NOTIFY rete 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 rete 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 AS edizione Standard RT.

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_ALLOWMULTIedizione Standard LECT 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.lpstrFilecui 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à

CObject

CCmdTarget

CWnd

Cdialog

CCommonDialog

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; FAL edizione Standard 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

Aggiornamenti lo stato corrente dell'oggetto CFileDialog basato sui 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. Impostarla su FAL edizione Standard 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 CFileDialoged 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_ALLOWMULTIedizione Standard LECT 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.lpstrFilecui 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 vuole consentire all'utente di selezionare più file, impostare il flag OFN_ALLOWMULTIedizione Standard LECT 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; FAL edizione Standard indica un'opzione deselezionata.

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 è impostato il flag OFN_ALLOWMULTIedizione Standard LECT, questa stringa contiene una sequenza di stringhe con terminazione 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 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 è impostato il flag OFN_ALLOWMULTIedizione Standard LECT, questa stringa contiene una sequenza di stringhe con terminazione 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::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 è FAL edizione Standard, 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 CFileDialogoggetto .

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 non CFileDialog è una finestra di dialogo Apri o se bVistaStyle è impostato su FAL edizione Standard. 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 CFileDialogoggetto .

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 FAL edizione Standard. 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 m_ofn sul didascalia si desidera che la finestra di dialogo sia impostata.

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 è impostato il flag OFN_ALLOWMULTIedizione Standard LECT, questa stringa contiene una sequenza di stringhe con teminate 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_ALLOWMULTIedizione Standard LECT.

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; altrimenti FAL edizione Standard.

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 m_ofn sul didascalia si desidera che la finestra di dialogo sia disponibile.

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 WM_NOTIFY rete CDN_edizione Standard LCHANGE.

virtual void OnFileNameChange();

Osservazioni:

Il sistema invia il messaggio rete CDN_edizione Standard LCHANGE 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 rete CDN_edizione Standard LCHANGE. 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_NOTIFYrete CDN_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 rete 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 rete 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 rete 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_LBedizione Standard LCHANGE specifica che iCurSel è l'elemento selezionato in una casella di riepilogo a selezione singola.

  • CD_LBedizione Standard LSUB Specifica che iCurSel non è più selezionato in una casella di riepilogo a selezione multipla.

  • CD_LBedizione Standard LADD Specifica che iCurSel è selezionato in una casella di riepilogo a selezione multipla.

  • CD_LBedizione Standard LNOITEMS 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_NOTIFYrete CDN_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 rete 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; FAL edizione Standard 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

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

Vedi anche

Classe CCommonDialog
Grafico della gerarchia