Questo argomento descrive l'esempio di codice che visualizza una finestra di dialogo Apri , in modo che l'utente può specificare l'unità, directory e il nome di un file da aprire. Il codice di esempio in primo luogo Inizializza una struttura OPENFILENAME e quindi chiama la funzione GetOpenFileName per visualizzare la finestra di dialogo.
In questo esempio, il membro lpstrFilter punta a un buffer che specifica due filtri del nome del file che l'utente può scegliere di limitare i nomi dei file che vengono visualizzati. Il buffer contiene una matrice di terminato di doppio da null di stringhe, in cui ciascuna coppia di stringhe di specificare un filtro. Il membro nFilterIndex specifica che il primo pattern viene utilizzato quando viene creata la finestra di dialogo.
Questo esempio imposta il flag OFN_PATHMUSTEXIST e OFN_FILEMUSTEXIST nel membro Flags . Questi flag causano la finestra di dialogo verificare, prima di tornare, il percorso e il nome file specificato dall'utente effettivamente esistenti.
La funzione GetOpenFileName restituisce TRUE se l'utente fa clic sul pulsante OK e il percorso specificato e il nome esiste. In questo caso, il buffer a cui puntato il membro lpstrFile contiene il percorso e il nome del file. Il codice di esempio utilizza queste informazioni in una chiamata alla funzione CreateFile per aprire il file.
Anche se questo esempio non imposta il flag OFN_EXPLORER, ancora mostra la finestra di dialogo tipo Esplora risorse Open predefinito. Tuttavia, se si desidera fornire una routine di hook o un modello personalizzato e si desidera l'interfaccia utente di Explorer, è necessario impostare il flag OFN_EXPLORER.
OPENFILENAME ofn; / / finestra di dialogo comune box struttura
char szFile [260]; / / buffer per nome del file
HWND hwnd; / / finestra proprietaria
GESTIRE hf; / / handle di file
/ / Initialize OPENFILENAME
ZeroMemory (amp; ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof (OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0 ";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
/ / Display la finestra di dialogo Apri.
Se (GetOpenFileName(&ofn) = = TRUE) hf = CreateFile (ofn.lpstrFile, GENERIC_READ,
0, NULL (LPSECURITY_ATTRIBUTES),
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
(HANDLE) ZERO)
Rimedio: Inserire il CD-ROM CD di MSDN Library.