| |||||
| Dernière réponse | ||
|---|---|---|
| Sujet : [Visual C++] boite dlg Sauvegarde ferme l'application... | ||
| Amadeus | de rien ;)
|
|
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| Amadeus | de rien ;)
|
| Moustaaki | merci beaucoup !
c'est vraiment sympa de ta part ! ça marche nikel... [edit]--Message édité par Moustaaki--[/edit] |
| Amadeus | // voila ta fonction retouche :
// elle marche : g fait un test vite fait donc ya pas de raison // kel marche pas chez toi int Test(char* nomdefichier) { OPENFILENAME structSauvegarde; char szNom[MAX_PATH]; ZeroMemory(&structSauvegarde, sizeof(structSauvegarde)); szNom[0] = '\0'; // n oublies surtout pas cette ligne structSauvegarde.lStructSize = sizeof (OPENFILENAME) ; structSauvegarde.hwndOwner = 0 ; structSauvegarde.lpstrFilter = "hfr (*.hfr)\0*.hfr\0" ; structSauvegarde.nFilterIndex = 1 ; structSauvegarde.lpstrFile = szNom ; structSauvegarde.nMaxFile = sizeof(szNom) ; structSauvegarde.lpstrFileTitle = NULL ; structSauvegarde.lpstrInitialDir = "C:\\" ; structSauvegarde.lpstrTitle = "Sauvegarder le fichier" ; structSauvegarde.Flags = OFN_CREATEPROMPT | OFN_OVERWRITEPROMPT ; if (GetSaveFileName(&structSauvegarde)) { MessageBox(NULL, (LPCTSTR)szNom, NULL, MB_OK | MB_ICONINFORMATION | MB_SYSTEMMODAL | MB_DEFBUTTON2) ; strcpy(nomdefichier, (const char*)szNom); return 0; // retourne juste un int et la chaine nomdefichier contiendra... le nom de fichier :) } // le else est superflu ici return -1; // erreur // et ca marche! teste et approuve! } |
| Moustaaki | j'ai déclaré la variable char comme tu m'as dit, en global...
ensuite j'ai changé ça dans le code : // définition des paramètres pour la boite de dialogue de sauvegarde. OPENFILENAME structSauvegarde ; structSauvegarde.lStructSize = sizeof (OPENFILENAME) ; structSauvegarde.hwndOwner = hwnd ; structSauvegarde.lpstrFilter = filter ; structSauvegarde.nFilterIndex = 1 ; structSauvegarde.lpstrFile = fileName ; structSauvegarde.nMaxFile = sizeof(fileName) ; structSauvegarde.lpstrFileTitle = NULL ; structSauvegarde.lpstrInitialDir = "C:\\Mes documents\\" ; structSauvegarde.lpstrTitle = "Sauvegarder le fichier" ; structSauvegarde.Flags = OFN_CREATEPROMPT | OFN_OVERWRITEPROMPT ; // view more : http://msdn.microsoft.com/library/ [...] 3_1hma.htm if (GetSaveFileName(&structSauvegarde)) { MessageBox(NULL, fileName, NULL, MB_OK | MB_ICONINFORMATION | MB_SYSTEMMODAL | MB_DEFBUTTON2) ; return fileName ; } else { return NULL ; } ET ça me fait toujours la même chose . violation d'accès. Si j'ouvre le debugger, le context est : Comdlg32.dll, je suppose vue le nom et le contexte que c'est la dll "s'occupant" des boites de dialogues. Sans le debugger, je n'ai aucune erreur mais ça quite quand même. ARGL Petite info sup ; le debugger liste les erreurs suivantes pendant l'execution : Loaded 'C:\WINDOWS\SYSTEM\SHELL32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\COMCTL32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\SHLWAPI.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\COMDLG32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\ADVAPI32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\GDI32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\USER32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\KERNEL32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\VERSION.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\OLEAUT32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\OLE32.DLL', no matching symbolic information found. Loaded 'C:\Program Files\Caere\OmniPagePro90\OPHOOK32.dll', no matching symbolic information found. First-chance exception in tradNSP.exe (KERNEL32.DLL): 0xC0000005: Access Violation. First-chance exception in tradNSP.exe (KERNEL32.DLL): 0xC0000005: Access Violation. First-chance exception in tradNSP.exe (COMDLG32.DLL): 0xC0000005: Access Violation. The program 'E:\hugo\MesDoc\Visual\tradNSP\Debug\tradNSP.exe' has exited with code 0 (0x0). [edit]--Message édité par Moustaaki--[/edit] |
| Amadeus | Il ya 2 err :
1) tu definit un ptr char que tu initialises a null (char * returnChar = 0), t'etonnes pas apres que ca merde. 2) tu utilse un new alors que ten a pas besoin Essaies plutot ca : char returnChar[MAX_PATH]; OPENFILENAME structSauvegarde: structSauvegarde.lStructSize = sizeof (OPENFILENAME) ; structSauvegarde.hwndOwner = hwnd ; structSauvegarde.lpstrFilter = filter ; structSauvegarde.nFilterIndex = 1 ; structSauvegarde.lpstrFile = returnChar ; structSauvegarde.nMaxFile = sizeof(returnChar) ; structSauvegarde.lpstrFileTitle = NULL ; structSauvegarde.lpstrInitialDir = NULL ; structSauvegarde.lpstrTitle = "Sauvegarder le fichier" ; structSauvegarde.Flags = OFN_CREATEPROMPT | OFN_OVERWRITEPROMPT ; // ... la suite idem sauf kil faut passer l'addr de la struct : GetSaveFileName(&structSauvegarde) au lieu de GetSaveFileName(structSauvegarde) [edit]--Message édité par Amadeus--[/edit] |
| Moustaaki | argl |
| Moustaaki | les erreurs générées par le debugger :
Loaded 'C:\WINDOWS\SYSTEM\SHELL32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\COMCTL32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\SHLWAPI.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\COMDLG32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\ADVAPI32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\GDI32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\USER32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\KERNEL32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\VERSION.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\OLEAUT32.DLL', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM\OLE32.DLL', no matching symbolic information found. Loaded 'C:\Program Files\Caere\OmniPagePro90\OPHOOK32.dll', no matching symbolic information found. First-chance exception in tradNSP.exe (KERNEL32.DLL): 0xC0000005: Access Violation. First-chance exception in tradNSP.exe (KERNEL32.DLL): 0xC0000005: Access Violation. First-chance exception in tradNSP.exe (COMDLG32.DLL): 0xC0000005: Access Violation. First-chance exception in tradNSP.exe (COMDLG32.DLL): 0xC0000005: Access Violation. First-chance exception in tradNSP.exe (COMDLG32.DLL): 0xC0000005: Access Violation. First-chance exception in tradNSP.exe (COMDLG32.DLL): 0xC0000005: Access Violation. The program 'E:\hugo\MesDoc\Visual\tradNSP\Debug\tradNSP.exe' has exited with code 0 (0x0). |
| Moustaaki | Dans mon prog, j'utilise une boite de dialogue appelée par getSaveFileName(..)
Le pb, c'est que quand le programme appelle cette fonction, il se ferme... Voilà le code, si quelqu'un pouvait regarder si il y des erreurs ou si quelqu'un pouvait le tester sur une autre machine, ça pourrait être sympatique... char * returnChar = 0; OPENFILENAME * structSauvegarde = new OPENFILENAME(); structSauvegarde->lStructSize = sizeof (OPENFILENAME) ; structSauvegarde->hwndOwner = hwnd ; structSauvegarde->lpstrFilter = filter ; structSauvegarde->nFilterIndex = 1 ; structSauvegarde->lpstrFile = returnChar ; structSauvegarde->nMaxFile = sizeof(returnChar) ; structSauvegarde->lpstrFileTitle = NULL ; structSauvegarde->lpstrInitialDir = NULL ; structSauvegarde->lpstrTitle = "Sauvegarder le fichier" ; structSauvegarde->Flags = OFN_CREATEPROMPT | OFN_OVERWRITEPROMPT ; // view more : http://msdn.microsoft.com/library/ [...] 3_1hma.htm if (GetSaveFileName(structSauvegarde)) { MessageBox(NULL, returnChar, NULL, MB_OK | MB_ICONINFORMATION | MB_SYSTEMMODAL | MB_DEFBUTTON2) ; return returnChar ; } else { return NULL ; } merci d'avance ! :jap: (Visual C++, win98) [edit]--Message édité par Moustaaki--[/edit] |




