|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2006
Città: M.O.F.N. (Middle of Fuckin Nowhere)
Messaggi: 309
|
[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 Codice:
FILE *fe; //file char* filePath; //percorso del file fe |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
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....
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2006
Città: M.O.F.N. (Middle of Fuckin Nowhere)
Messaggi: 309
|
Codice:
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); |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
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.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:59.