|
|||||||
|
|
|
![]() |
|
|
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: 22:01.




















