View Full Version : [C++ & API Win32] Il dialog Apri (e quello salva)
ho studiato un bel pò di API WIN32. vorrei mettere nel mio programma un dialog quasi identoco a quello del blocco note. uno semplicissimo ma che mi permette di visualizzare i file.
avevo visto la funzione GetOpenFileName() e una simile per salvare ... nel mio programma avevo
FILE *fe; //file
char* filePath; //percorso del file fe
come faccio?
avevo visto la funzione GetOpenFileName()Appunto: crei una variabile di tipo struttura OPENFILENAME, la valorizzi con tutti i dati necessari (e qui basta solo leggere la documentazione), quindi chiami GetOpenFileName/GetSaveFileName. Se la funzione ha successo, nel campo lpstrFile hai il nome del file selezionato.
Usi poi quel nome di file per aprire il file con fopen, ecc....
OPENFILENAME ofn; // common dialog box structure
HANDLE hf; // file handle
FILE *fe; //file
char* filePath; //percorso del file fe
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwn;
ofn.lpstrFile = filePath;
ofn.lpstrFile[0] = '\0';**********************
ofn.nMaxFile = sizeof(filePath);
ofn.lpstrFilter = "All\0*.*\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn)==TRUE)
hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
0, (LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);
questo codice si blocca dove ci sono gli asterischi.
ofn.lpstrFile[0] = '\0';**********************
Se vai a vedere la documentazione, il campo lpstrFile è solo un LPTSTR, un puntatore ad una stringa.
Devi farlo puntare ad un buffer di almeno 256 caratteri (che definisci tu a parte) e inizialmente devi mettere '\0' nel primo carattere.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.