Struttura OPENFILENAMEW (commdlg.h)
[A partire da Windows Vista, le finestre di dialogo Apri e Salva con nome comuni sono state sostituite dalla finestra di dialogo elemento comune. È consigliabile usare l'API Della finestra di dialogo elementi comuni anziché queste finestre di dialogo dalla libreria della finestra di dialogo comune.]
Contiene informazioni utilizzate
Sintassi
typedef struct tagOFNW {
DWORD lStructSize;
HWND hwndOwner;
HINSTANCE hInstance;
LPCWSTR lpstrFilter;
LPWSTR lpstrCustomFilter;
DWORD nMaxCustFilter;
DWORD nFilterIndex;
LPWSTR lpstrFile;
DWORD nMaxFile;
LPWSTR lpstrFileTitle;
DWORD nMaxFileTitle;
LPCWSTR lpstrInitialDir;
LPCWSTR lpstrTitle;
DWORD Flags;
WORD nFileOffset;
WORD nFileExtension;
LPCWSTR lpstrDefExt;
LPARAM lCustData;
LPOFNHOOKPROC lpfnHook;
LPCWSTR lpTemplateName;
LPEDITMENU lpEditInfo;
LPCSTR lpstrPrompt;
void *pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
} OPENFILENAMEW, *LPOPENFILENAMEW;
Membri
lStructSize
Tipo: DWORD
Lunghezza, in byte, della struttura.
Usare sizeof (OPENFILENAME)
per questo parametro.
hwndOwner
Tipo: HWND
Handle per la finestra proprietaria della finestra di dialogo. Questo membro può essere qualsiasi handle di finestra valido oppure può essere NULL se la finestra di dialogo non dispone di proprietario.
hInstance
Tipo: HINSTANCE
Se il flag
lpstrFilter
Tipo: LPCTSTR
Buffer contenente coppie di stringhe di filtro con terminazione Null. L'ultima stringa nel buffer deve essere terminata da due caratteri NULL.
La prima stringa in ogni coppia è una stringa di visualizzazione che descrive il filtro (ad esempio "File di testo") e la seconda stringa specifica il modello di filtro (ad esempio , ".TXT"). Per specificare più modelli di filtro per una singola stringa di visualizzazione, usare un punto e virgola per separare i modelli , ad esempio ".TXT;.DOC;. BAK"). Una stringa di criteri può essere una combinazione di caratteri di nome file validi e il carattere jolly asterisco (*) . Non includere spazi nella stringa del criterio.
Il sistema non modifica l'ordine dei filtri. Vengono visualizzati nella casella combinata tipi di file nell'ordine specificato in lpstrFilter.
Se lpstrFilter è NULL, la finestra di dialogo non visualizza alcun filtro.
Nel caso di un collegamento, se non è impostato alcun filtro, GetOpenFileName e GetSaveFileName recuperare il nome del file .lnk, non la destinazione. Questo comportamento equivale all'impostazione del flag di "All Files\0*.*\0\0"
.
lpstrCustomFilter
Tipo: LPTSTR
Buffer statico che contiene una coppia di stringhe di filtro con terminazione Null per mantenere il modello di filtro scelto dall'utente. La prima stringa è la stringa di visualizzazione che descrive il filtro personalizzato e la seconda è il modello di filtro selezionato dall'utente. La prima volta che l'applicazione crea la finestra di dialogo, specificare la prima stringa, che può essere qualsiasi stringa nonempty. Quando l'utente seleziona un file, la finestra di dialogo copia il modello di filtro corrente nella seconda stringa. Il modello di filtro mantenuto può essere uno dei modelli specificati nel buffer lpstrFilter oppure può essere un criterio di filtro digitato dall'utente. Il sistema usa le stringhe per inizializzare il filtro file definito dall'utente al successivo creazione della finestra di dialogo. Se il membro nFilterIndex è zero, la finestra di dialogo usa il filtro personalizzato.
Se questo membro è NULL, la finestra di dialogo non mantiene i modelli di filtro definiti dall'utente.
Se questo membro non è
nMaxCustFilter
Tipo: DWORD
Dimensioni, in caratteri, del buffer identificato da lpstrCustomFilter. Questo buffer deve avere una lunghezza di almeno 40 caratteri. Questo membro viene ignorato se
nFilterIndex
Tipo: DWORD
Indice del filtro attualmente selezionato nel controllo tipi di file. Il buffer a cui punta lpstrFilter contiene coppie di stringhe che definiscono i filtri. La prima coppia di stringhe ha un valore di indice pari a 1, la seconda coppia 2 e così via. Un indice pari a zero indica il filtro personalizzato specificato da lpstrCustomFilter. È possibile specificare un indice nell'input per indicare la descrizione del filtro iniziale e il modello di filtro per la finestra di dialogo. Quando l'utente seleziona un file, nFilterIndex restituisce l'indice del filtro attualmente visualizzato. Se
lpstrFile
Tipo: LPTSTR
Nome file utilizzato per inizializzare il nome file controllo di modifica. Il primo carattere di questo buffer deve essere NULL se l'inizializzazione non è necessaria. Quando il GetOpenFileName o funzione GetSaveFileName restituisce correttamente, questo buffer contiene l'indicatore di unità, il percorso, il nome file e l'estensione del file selezionato.
Se il flag OFN_ALLOWMULTISELECT è impostato e l'utente seleziona più file, il buffer contiene la directory corrente seguita dai nomi di file dei file selezionati. Per le finestre di dialogo in stile Esplora risorse, le stringhe di directory e nome file vengono NULL separate, con un null aggiuntivo carattere dopo l'ultimo nome file. Per le finestre di dialogo di vecchio stile, le stringhe sono separate da spazi e la funzione usa nomi di file brevi per i nomi di file con spazi. È possibile usare la funzione FindFirstFile per eseguire la conversione tra nomi di file lunghi e brevi. Se l'utente seleziona un solo file, la stringa lpstrFile non dispone di un separatore tra il percorso e il nome del file.
Se il buffer è troppo piccolo, la funzione restituisce
nMaxFile
Tipo: DWORD
Dimensioni, in caratteri, del buffer a cui punta lpstrFile. Il buffer deve essere sufficientemente grande da archiviare il percorso e la stringa o le stringhe del nome file, incluso il carattere di terminazione NULL. Le funzioni GetOpenFileName e GetSaveFileName restituiscono FALSE se il buffer è troppo piccolo per contenere le informazioni sul file. Il buffer deve contenere almeno 256 caratteri.
lpstrFileTitle
Tipo: LPTSTR
Nome file ed estensione (senza informazioni sul percorso) del file selezionato. Questo membro può essere NULL.
nMaxFileTitle
Tipo: DWORD
Dimensioni, in caratteri, del buffer a cui punta lpstrFileTitle. Questo membro viene ignorato se lpstrFileTitle è NULL.
lpstrInitialDir
Tipo: LPCTSTR
Directory iniziale. L'algoritmo per la selezione della directory iniziale varia su piattaforme diverse.
Windows 7:
- Se lpstrInitialDir ha lo stesso valore passato alla prima volta che l'applicazione usava un Apri o finestra di dialogo Salva con nome, il percorso selezionato più di recente dall'utente viene usato come directory iniziale.
- In caso contrario, se lpstrFile contiene un percorso, tale percorso è la directory iniziale.
- In caso contrario, se lpstrInitialDir non è NULL, specifica la directory iniziale.
- Se lpstrInitialDir è NULL e la directory corrente contiene tutti i file dei tipi di filtro specificati, la directory iniziale è la directory corrente.
- In caso contrario, la directory iniziale è la directory dei file personali dell'utente corrente.
- In caso contrario, la directory iniziale è la cartella Desktop.
- Se lpstrFile contiene un percorso, tale percorso è la directory iniziale.
- In caso contrario, lpstrInitialDir specifica la directory iniziale.
- In caso contrario, se l'applicazione ha usato un Apri o finestra di dialogo Salva con nome in passato, il percorso usato più di recente viene selezionato come directory iniziale. Tuttavia, se un'applicazione non viene eseguita per molto tempo, il percorso selezionato salvato viene rimosso.
- Se lpstrInitialDir è NULL e la directory corrente contiene tutti i file dei tipi di filtro specificati, la directory iniziale è la directory corrente.
- In caso contrario, la directory iniziale è la directory dei file personali dell'utente corrente.
- In caso contrario, la directory iniziale è la cartella Desktop.
lpstrTitle
Tipo: LPCTSTR
Stringa da inserire nella barra del titolo della finestra di dialogo. Se questo membro è null, il sistema usa il titolo predefinito , ovvero Salva con nome o Open).
Flags
Tipo: DWORD
Set di flag di bit che è possibile usare per inizializzare la finestra di dialogo. Quando la finestra di dialogo viene restituita, imposta questi flag per indicare l'input dell'utente. Questo membro può essere una combinazione dei flag seguenti.
Valore | Significato |
---|---|
|
La casella di riepilogo nome file consente più selezioni. Se si imposta anche il flag OFN_EXPLORER, la finestra di dialogo usa l'interfaccia utente in stile Explorer; in caso contrario, usa l'interfaccia utente in stile precedente.
Se l'utente seleziona più file, il buffer lpstrFile restituisce il percorso della directory corrente seguito dai nomi di file dei file selezionati. Il membro nFileOffset Se si specifica un modello personalizzato per una finestra di dialogo di stile precedente, la definizione della casella di riepilogo nome file deve contenere il valore LBS_EXTENDEDSEL. |
|
Se l'utente specifica un file che non esiste, questo flag fa sì che la finestra di dialogo chiesa all'utente l'autorizzazione per creare il file. Se l'utente sceglie di creare il file, la finestra di dialogo viene chiusa e la funzione restituisce il nome specificato; in caso contrario, la finestra di dialogo rimane aperta. Se si usa questo flag con il flag OFN_ALLOWMULTISELECT, la finestra di dialogo consente all'utente di specificare un solo file inesistente. |
|
Impedisce al sistema di aggiungere un collegamento al file selezionato nella directory del file system che contiene i documenti usati più di recente dell'utente. Per recuperare il percorso di questa directory, chiamare la funzione SHGetSpecialFolderLocation |
|
Abilita la funzione hook specificata nel membro |
|
Fa sì che la finestra di dialogo invii messaggi di notifica CDN_INCLUDEITEM al OFNHookProc procedura di hook quando l'utente apre una cartella. La finestra di dialogo invia una notifica per ogni elemento nella cartella appena aperta. Questi messaggi consentono di controllare gli elementi visualizzati nella finestra di dialogo nell'elenco di elementi della cartella. |
|
Consente di ridimensionare la finestra di dialogo in stile Explorer usando il mouse o la tastiera. Per impostazione predefinita, le finestre di dialogo Apri e Salva con nome consentono di ridimensionare la finestra di dialogo indipendentemente dal fatto che questo flag sia impostato. Questo flag è necessario solo se si specifica una routine hook o un modello personalizzato. La finestra di dialogo precedente non consente il ridimensionamento. |
|
Il membro |
|
Il membro hInstance |
|
Indica che le personalizzazioni apportate al Apri o finestra di dialogo Salva con nome utilizzano i metodi di personalizzazione in stile Esplora risorse. Per altre informazioni, vedere Explorer-Style procedure hook e Explorer-Style modelli personalizzati.
Per impostazione predefinita, le finestre di dialogo Apri e Salva con nome usano l'interfaccia utente in stile Esplora risorse indipendentemente dal fatto che questo flag sia impostato. Questo flag è necessario solo se si specifica una routine hook o un modello personalizzato o si imposta il flag OFN_ALLOWMULTISELECT. Se si desidera l'interfaccia utente di stile precedente, omettere il flag di OFN_EXPLORER e fornire un modello di vecchio stile sostitutivo o una routine hook. Se si desidera lo stile precedente ma non è necessario un modello personalizzato o una routine hook, è sufficiente fornire una procedura hook che restituisce sempre FALSE. |
|
L'utente ha digitato un'estensione di file diversa dall'estensione specificata da lpstrDefExt. La funzione non usa questo flag se lpstrDefExt è NULL. |
|
L'utente può digitare solo i nomi dei file esistenti nel campo di immissione nome file. Se questo flag viene specificato e l'utente immette un nome non valido, nella finestra di dialogo viene visualizzato un avviso in una finestra di messaggio. Se questo flag viene specificato, viene utilizzato anche il flag OFN_PATHMUSTEXIST. Questo flag può essere usato in una finestra di dialogo Apri. Non può essere utilizzata con una finestra di dialogo salva con nome |
|
Forza la visualizzazione dei file di sistema e nascosti, ignorando così l'impostazione dell'utente per mostrare o non visualizzare i file nascosti. Tuttavia, un file contrassegnato sia dal sistema che dal nascosto non viene visualizzato. |
|
Nasconde la casella di controllo di sola lettura |
|
Per le finestre di dialogo di vecchio stile, questo flag fa sì che la finestra di dialogo usi nomi di file lunghi. Se questo flag non viene specificato o se viene impostato anche il flag OFN_ALLOWMULTISELECT, le finestre di dialogo di stile precedente usano nomi di file brevi (formato 8.3) per i nomi di file con spazi. Le finestre di dialogo in stile Esplora risorse ignorano questo flag e visualizzano sempre nomi di file lunghi. |
|
Ripristina la directory corrente sul valore originale se l'utente ha modificato la directory durante la ricerca di file.
Questo flag è inefficace per GetOpenFileName. |
|
Indica alla finestra di dialogo di restituire il percorso e il nome del file del collegamento selezionato (. File LNK). Se questo valore non viene specificato, la finestra di dialogo restituisce il percorso e il nome file del file a cui fa riferimento il collegamento. |
|
Per le finestre di dialogo di stile precedente, questo flag fa sì che la finestra di dialogo usi nomi di file brevi (formato 8.3). Le finestre di dialogo in stile Esplora risorse ignorano questo flag e visualizzano sempre nomi di file lunghi. |
|
Nasconde e disabilita il pulsante network |
|
Il file restituito non dispone della casella di controllo sola lettura selezionata e non si trova in una directory protetta da scrittura. |
|
Il file non viene creato prima della chiusura della finestra di dialogo. Questo flag deve essere specificato se l'applicazione salva il file in una condivisione di rete create-nonmodify. Quando un'applicazione specifica questo flag, la libreria non verifica la protezione in scrittura, un disco completo, una porta di unità aperta o una protezione di rete. Le applicazioni che usano questo flag devono eseguire attentamente operazioni di file, perché non è possibile riaprire un file dopo la chiusura. |
|
Le finestre di dialogo comuni consentono caratteri non validi nel nome file restituito. In genere, l'applicazione chiamante usa una routine hook che controlla il nome del file usando il fileOKSTRING messaggio. Se la casella di testo nel controllo di modifica è vuota o non contiene altro che spazi, gli elenchi di file e directory vengono aggiornati. Se la casella di testo nel controllo di modifica contiene altri elementi, nFileOffset e nFileExtension vengono impostati sui valori generati analizzando il testo. Nessuna estensione predefinita viene aggiunta al testo, né viene copiato nel buffer specificato da lpstrFileTitle. Se il valore specificato da nFileOffset è minore di zero, il nome file non è valido. In caso contrario, il nome file è valido e nFileExtension e nFileOffset possono essere usati come se il flag OFN_NOVALIDATE non fosse stato specificato. |
|
Fa sì che la finestra di dialogo Salva con nome generi una finestra di messaggio se il file selezionato esiste già. L'utente deve confermare se sovrascrivere il file. |
|
L'utente può digitare solo percorsi e nomi di file validi. Se questo flag viene usato e l'utente digita un percorso e un nome file non validi nel campo di immissione nome file, la funzione della finestra di dialogo visualizza un avviso in una finestra di messaggio. |
|
Fa sì che la casella di controllo sola lettura sia selezionata inizialmente al momento della creazione della finestra di dialogo. Questo flag indica lo stato della casella di controllo sola lettura quando la finestra di dialogo viene chiusa. |
|
Specifica che se una chiamata alla funzione OpenFile ha esito negativo a causa di una violazione della condivisione di rete, l'errore viene ignorato e la finestra di dialogo restituisce il nome file selezionato. Se questo flag non è impostato, la finestra di dialogo invia una notifica alla routine hook quando si verifica una violazione della condivisione di rete per il nome file specificato dall'utente. Se si imposta il flag OFN_EXPLORER, la finestra di dialogo invia il messaggio CDN_SHAREVIOLATION alla routine hook. Se non si imposta OFN_EXPLORER, la finestra di dialogo invia il messaggio SHAREVISTRING registrato alla procedura di hook. |
|
Fa sì che la finestra di dialogo visualizzi il pulsante guida |
nFileOffset
Tipo: WORD
Offset in base zero, in caratteri, dall'inizio del percorso al nome del file nella stringa a cui punta lpstrFile. Per la versione ANSI, questo è il numero di byte; per la versione Unicode, questo è il numero di caratteri. Ad esempio, se lpstrFile punta alla stringa seguente, "c:\dir1\dir2\file.ext", questo membro contiene il valore 13 per indicare l'offset della stringa "file.ext". Se l'utente seleziona più file, nFileOffset corrisponde all'offset al nome del primo file.
nFileExtension
Tipo: WORD
Offset in base zero, in caratteri, dall'inizio del percorso all'estensione del nome file nella stringa a cui punta lpstrFile. Per la versione ANSI, questo è il numero di byte; per la versione Unicode, questo è il numero di caratteri. In genere l'estensione del nome file è la sottostringa che segue l'ultima occorrenza del carattere punto ("."). Ad esempio, txt è l'estensione del nome file readme.txt, html l'estensione di readme.txt.html. Pertanto, se lpstrFile punta alla stringa "c:\dir1\dir2\readme.txt", questo membro contiene il valore 20. Se lpstrFile punta alla stringa "c:\dir1\dir2\readme.txt.html", questo membro contiene il valore 24. Se lpstrFile punta alla stringa "c:\dir1\dir2\readme.txt.html.", questo membro contiene il valore 29. Se lpstrFile punta a una stringa che non contiene alcun carattere ".", ad esempio "c:\dir1\dir2\readme", questo membro contiene zero.
lpstrDefExt
Tipo: LPCTSTR
Estensione predefinita. GetOpenFileName e GetSaveFileName aggiungere questa estensione al nome del file se l'utente non riesce a digitare un'estensione. Questa stringa può essere qualsiasi lunghezza, ma vengono accodati solo i primi tre caratteri. La stringa non deve contenere un punto (.). Se questo membro è NULL e l'utente non riesce a digitare un'estensione, non viene aggiunta alcuna estensione.
lCustData
Tipo: LPARAM
Dati definiti dall'applicazione passati dal sistema alla routine hook identificata dal membro lpfnHook. Quando il sistema invia il messaggio di WM_INITDIALOG alla routine hook, il parametro lParam del messaggio è un puntatore alla struttura OPENFILENAME specificata al momento della creazione della finestra di dialogo. La procedura hook può usare questo puntatore per ottenere il valore
lpfnHook
Tipo: LPOFNHOOKPROC
Puntatore a una routine hook. Questo membro viene ignorato a meno che il membro flag
Se il flag
Se OFN_EXPLORER è impostato, lpfnHook è un puntatore a un OFNHookProc routine hook. La procedura hook riceve i messaggi di notifica inviati dalla finestra di dialogo. La procedura hook riceve inoltre messaggi per tutti i controlli aggiuntivi definiti specificando un modello di finestra di dialogo figlio. La procedura hook non riceve messaggi destinati ai controlli standard della finestra di dialogo predefinita.
lpTemplateName
Tipo: LPCTSTR
Nome della risorsa modello di finestra di dialogo nel modulo identificato dal membro
lpEditInfo
Questo membro viene compilato in modo condizionale (usando #ifdef _MAC
) in modo che sia applicabile solo ai computer Motorola 68K Macintosh e non ai sistemi operativi client Windows.
lpstrPrompt
Questo membro viene compilato in modo condizionale (usando #ifdef _MAC
) in modo che sia applicabile solo ai computer Motorola 68K Macintosh e non ai sistemi operativi client Windows.
pvReserved
Tipo: void*
Questo membro è riservato.
dwReserved
Tipo: DWORD
Questo membro è riservato.
FlagsEx
Tipo: DWORD
Set di flag di bit che è possibile usare per inizializzare la finestra di dialogo. Attualmente, questo membro può essere zero o il flag seguente.
Osservazioni
Per motivi di compatibilità, la barra delle posizioni viene nascosta se Flag è impostato su OFN_ENABLEHOOK e lStructSize è OPENFILENAME_SIZE_VERSION_400.
Nota
L'intestazione commdlg.h definisce OPENFILENAME come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 2000 Professional [solo app desktop] |
server minimo supportato | Windows 2000 Server [solo app desktop] |
intestazione |
commdlg.h (include Windows.h) |
Vedere anche
della libreria delle finestre di dialogo comuni
concettuale
altre risorse
riferimento