Fenêtre "Ouvrir un fichier" - C++ - Programmation
Marsh Posté le 07-03-2003 à 21:15:43
Y'a pas assez de code. Poste tout ce que tu peux.
Marsh Posté le 07-03-2003 à 21:22:55
Je vais quand meme pas balancer tt mon code, mais bon je vais essayer de vous mettre ce ki me semble utile : 
 
Dans le wmain(...) : 
| Code : 
 | 
 
 
La fonction DialogProc (enfin un peu filtrée) : 
 
| Code : 
 | 
 
 
Chépas si ça suffit, mais en regardant mon code c'est tout ce ke je trouve qui s'y rapporte... 
 
Merci.
Marsh Posté le 07-03-2003 à 21:54:16
Le premier caractère de ofn.lpstrFile doit toujours être NULL, sinon tu auras une erreur CDERR_INITIALIZATION (tu peux récupérer ce code d'erreur en appelant CommDlgExtendedError() juste après l'appel à GetOpenFileName() 
 
Pour résoudre ceci, tu dois initialiser le buffer szFile avec des valeurs nulles. Le mieux est de faire un ZeroMemory. Rajoute la ligne : 
 
| Code : 
 | 
 
 
avant la ligne 
| Code : 
 | 
 
et ça devrait fonctionner. 
 
Conseil : toujours récupérer les codes d'erreur fournis par les fonctions !
Marsh Posté le 07-03-2003 à 22:26:42
Génial merci ! 
Mais dis moi, comment ça marche cette fonction CommDlgExtendedError() ? 
Je vois que ça me retourne un DWORD, comment on utilise ça ?
Marsh Posté le 07-03-2003 à 22:34:59
tu dois insérer l'entête correspondant au début de ton source : 
 
| Code : 
 | 
 
 
Tous les codes d'erreur de CommDlg sont déclarés dans ce fichier. Ils commencent tous par CDERR_****. 
Donc tu dois intercepter tous les codes possibles comme ceci par exemple : 
 
| Code : 
 | 
Marsh Posté le 07-03-2003 à 21:07:53
'lut,
Dans une appli c++ j'essaie d'ouvrire une boite de dialogue type "ouvrir un fichier", donc avec la fonction GetOpenFileName.
J'utilise le bout de code suivant :
Pour donner qq éléemtns du contexte, je suis déjà dans une boite de dialoge (hwndDlg), et je l'ouvre à partir de ça.
Et le pb c'est que ça fait rien du tout.... et je comprends pas pkoi...
Merci de votre aide.