Newsgroup: it.comp.programmare.win32
Titolo: perchè non riesco a usare GetOpenFileName?

inizializzo la struttura OPENFILENAME come da esempi,cerco di beccare
l'errore con CommDlgExtendedError ma il valore che mi da' quest'ultima non
equivale a nessuno degli errori predefiniti.qualcuno sa per favore dirmi
cosa devo fare??

 ha scritto nel messaggio 
news:6ohpe.992520$b5.43...@news3.tin.it...

Non so entrare nello specifico, posso solo ripescare del vecchio codice 
scritto anni fa e semplificato ora al volo (senza testarlo):
//--------------------------------------------------------------------------------------------
static string DoOpenFile(HWND hwnd,LPSTR Filter="Text Files 
(*.txt)\0*.txt\0HTML Files (*.htm)\0*.htm\0All Files (*.*)\0*.*\0\0",LPSTR 
def="txt")
{
OPENFILENAME ofn;
char szFileName[MAX_PATH];
ZeroMemory(&ofn, sizeof(ofn));
szFileName[0] = 0;
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;  //Qui puoi mettere anche NULL
ofn.lpstrFilter =Filter;
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrDefExt = def;
ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_CREATEPROMPT | 
OFN_NOCHANGEDIR;// OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR;  //Qui fai un po' 
come ti pare
GetOpenFileName(&ofn); //Qui sarebbe meglio controllare il valore di ritorno
string nome=szFileName;
return nome;
}
//-----------------------------------------------------------------------------------------------------------------------
Non so se ti può essere utile... (ovviamente devi linkarti a comctl32 e/o 
comdlg32)

blisca wrote:

Hai fatto l'init dei Common Controls?
-- 
/* Costantino Grana                                */
main(int c,char**o){char*s=c?"+L7?+;:7?+:OKIK+9?;9=;"
":+9?;:<:;+9?;;;:;+9<:;<::;+RLJ;K9+":1[o],t,a=!c,m;do
for (m=*s-'0',t=a?m/c:m%c;m>>7?c=1<<m+8,!a&&puts(&a)*
*&a:t--;printf("  \0/*"+a));while ((a^=3)||a[++s]);;}
/* Original code due to Chris Brown... impressive! */

intanto grazie a tutti e due..................cos'e' l'init dei common
controls?perche' non lo vedo nei codici che prendo ad esempio?
Costantino Grana <prydechiocci...@invalid.inv> wrote in message
d84keo$9st$1...@newsfeed.cineca.it...


intanto grazie a tutti e due..................cos'e' l'init dei common
controls?perche' non lo vedo nei codici che prendo ad esempio?
Costantino Grana <prydechiocci...@invalid.inv> wrote in message
d84keo$9st$1...@newsfeed.cineca.it...


intanto grazie davvero a tutti e due e a chi si fosse
interessato...................si sarà da subito capito che sono abbastanza
inesperto......cos'e' l'init dei common controls?non lo vedo in nessuno dei
codici che prendo ad esempio,riguardo ai link pensavo invece bastasse
includere commdlg.h
comunque per ora se esguo queste due istruzioni
   booltest=GetOpenFileName(lpofn);
   longtest=CommDlgExtendedError;
ottengo booltest=0,cioe' GetOpenFileName fallisce
e CommDlgExtendedError mi dà il preoccupante valore longtest=4205696
è di aiuto sapere ciò?
grazie ancora,mi avete già aiutato tanto cmq
Costantino Grana <prydechiocci...@invalid.inv> wrote in message
d84keo$9st$1...@newsfeed.cineca.it...


intanto grazie davvero a tutti e due e a chi si fosse
interessato...................si sarà da subito capito che sono abbastanza
inesperto......cos'e' l'init dei common controls?non lo vedo in nessuno dei
codici che prendo ad esempio,riguardo ai link pensavo invece bastasse
includere commdlg.h
comunque per ora se esguo queste due istruzioni
   booltest=GetOpenFileName(lpofn);
   longtest=CommDlgExtendedError;
ottengo booltest=0,cioe' GetOpenFileName fallisce
e CommDlgExtendedError mi dà il preoccupante valore longtest=4205696
è di aiuto sapere ciò?
grazie ancora,mi avete già aiutato tanto cmq
Costantino Grana <prydechiocci...@invalid.inv> wrote in message
d84keo$9st$1...@newsfeed.cineca.it...


intanto grazie davvero a tutti e due e a chi si fosse
interessato...................si sarà da subito capito che sono abbastanza
inesperto......cos'e' l'init dei common controls?non lo vedo in nessuno dei
codici che prendo ad esempio,riguardo ai link pensavo invece bastasse
includere commdlg.h
comunque per ora se esguo queste due istruzioni
   booltest=GetOpenFileName(lpofn);
   longtest=CommDlgExtendedError;
ottengo booltest=0,cioe' GetOpenFileName fallisce
e CommDlgExtendedError mi dà il preoccupante valore longtest=4205696
è di aiuto sapere ciò?
grazie ancora,mi avete già aiutato tanto cmq
Costantino Grana <prydechiocci...@invalid.inv> wrote in message
d84keo$9st$1...@newsfeed.cineca.it...


intanto grazie davvero a tutti e due e a chi si fosse
interessato...................si sarà da subito capito che sono abbastanza
inesperto......cos'e' l'init dei common controls?non lo vedo in nessuno dei
codici che prendo ad esempio,riguardo ai link pensavo invece bastasse
includere commdlg.h
comunque per ora se esguo queste due istruzioni
   booltest=GetOpenFileName(lpofn);
   longtest=CommDlgExtendedError;
ottengo booltest=0,cioe' GetOpenFileName fallisce
e CommDlgExtendedError mi dà il preoccupante valore longtest=4205696
è di aiuto sapere ciò?
grazie ancora,mi avete già aiutato tanto cmq
Costantino Grana <prydechiocci...@invalid.inv> wrote in message
d84keo$9st$1...@newsfeed.cineca.it...


intanto grazie davvero a tutti e due e a chi si fosse
interessato...................si sarà da subito capito che sono abbastanza
inesperto......cos'e' l'init dei common controls?non lo vedo in nessuno dei
codici che prendo ad esempio,riguardo ai link pensavo invece bastasse
includere commdlg.h
comunque per ora se esguo queste due istruzioni
   booltest=GetOpenFileName(lpofn);
   longtest=CommDlgExtendedError;
ottengo booltest=0,cioe' GetOpenFileName fallisce
e CommDlgExtendedError mi dà il preoccupante valore longtest=4205696
è di aiuto sapere ciò?
grazie ancora,mi avete già aiutato tanto cmq
Costantino Grana <prydechiocci...@invalid.inv> wrote in message
d84keo$9st$1...@newsfeed.cineca.it...


 grazie ancora,mi avete già aiutato tanto cmq
di niente, ciao

 wrote in message
pKvpe.995831$b5.43...@news3.tin.it...


 >..........GetOpenFileName fallisce  e CommDlgExtendedError mi dà il


 >..........GetOpenFileName fallisce  e CommDlgExtendedError mi dà il


 >..........GetOpenFileName fallisce  e CommDlgExtendedError mi dà il


 poi?non puntavano tutti e due al primo byte dell'array?
Sei sicuro????
Se definisci szFileName in questo modo:
char szFileName[MAX_PATH];
allora NON PUOI fare l'assegnamento da te descritto:
ofn.lpstrFile = szFileName[0]
infatti ofn.lpstrFile è definito come LPSTR (cioè char *)
quindi tu assegni ad un puntatore (char *) il valore di un char
(szFileName[0])
al limite avresti potuto scrivere ofn.lpstrFile = & szFileName[0];
che però è del tutto equivalente a ofn.lpstrFile = szFileName;
Mi sa che il tuo errore è da tutt'altra parte ed il fatto che ti funzioni
come tu hai detto è pura coincidenza, in ogni caso il tuo assegnamento
potrebbe avere effetti catastrofici.
Ciao, Jerry
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 wrote in message
vlFpe.1512784$35.56...@news4.tin.it...
