[c++] Récup' le chemin de GetOpenFileName dans un edit

Récup' le chemin de GetOpenFileName dans un edit [c++] - C++ - Programmation

Marsh Posté le 18-06-2006 à 17:08:54    

salut  :hello:  
 
Je fait un programme Win32 en C++ et je me demande comment faire pour que quand on sélectionne un fichier dans la dialog GetOpenFileName celui-ci s'affiche dans un contrôle de type EDIT.  
 
Et j'ai un autre problème, quand je sélectionne le fichier dans la dialog, cela me détruit la fenêtre....
 
Voici le code :
 

Code :
  1. if((HWND) lParam == boutonP)
  2.            { 
  3.               OPENFILENAME st;
  4.               char buffer2[256];       
  5.               buffer2[0] = '\0'; 
  6.               memset(&st,0,sizeof(OPENFILENAME));
  7.               st.lStructSize       = sizeof(OPENFILENAME);
  8.               st.hwndOwner         = NULL;
  9.               st.lpstrFilter       = "Tous Fichiers Multimédia\0*.avi;*.mp3;*.mpg;*.ogg;*.mov;*.mpeg\0";         
  10.               st.lpstrFile         = buffer2;
  11.               st.nMaxFile          = 255;
  12.               st.lpstrTitle        = "Recherceh de fichier multimédia";
  13.               st.Flags             = 0;
  14.              
  15.               st.lpstrInitialDir = NULL;
  16.               if(GetOpenFileName(&st))
  17.                 PostQuitMessage(0);
  18.               return FALSE
  19.               break;
  20. }
  21.            return 0;
  22.         }


 
je sais que le chemin est réprésenter par buffer mais comment le récupérer ?

Reply

Marsh Posté le 18-06-2006 à 17:08:54   

Reply

Marsh Posté le 18-06-2006 à 17:45:02    

Phaydrinix a écrit :

salut  :hello:  
 
Je fait un programme Win32 en C++ et je me demande comment faire pour que quand on sélectionne un fichier dans la dialog GetOpenFileName celui-ci s'affiche dans un contrôle de type EDIT.


2 solutions, qui en fait n'en sont qu'une seule :
- en utilisant la fonction SetDlgItemText()
- en utilisant la fonction SendMessage() avec le message WM_SETTEXT.
pourquoi ces solutions sont en fait qu'une seule ? parce que SetDlgItemText() envoie tout simplement un WM_SETTEXT au controle souhaité.
 

Phaydrinix a écrit :


Et j'ai un autre problème, quand je sélectionne le fichier dans la dialog, cela me détruit la fenêtre....


tu parles de la fenêtre de sélection de fichier ? ben c'est normal ! tu as déja vu une fenêtre de sélection de fichier rester affichée quand tu as sélectionné ton fichier toi ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 18-06-2006 à 19:59:49    

non je ne parle pas de la fenetre de dialog !! je parle de la fenetre hote...
bon je vais tester SetDlgItemText().
Merci !

Reply

Marsh Posté le 18-06-2006 à 20:22:01    

Bon je fais un double poste vu qu'il y a une "micro maintenance".
Donc msdn dis que SetDlgItemText ce compose comme sa :BOOL SetDlgItemText(handle dialog box, handle EDIT, valeur retourné si échoué);
 
Donc je fais :  

Code :
  1. case WM_SETTEXT:
  2. {
  3. BOOL SetDlgItemText(st, choix_1, NULL);
  4. return 0;
  5. }


Et le compilo me sort : initializer expression list treated as compound expression.
...

Reply

Marsh Posté le 18-06-2006 à 20:47:17    

Salut !
Moi j'avait appris a le faire a partir de ce site :
http://chgi.developpez.com/windows/dlgstd/

Reply

Marsh Posté le 18-06-2006 à 21:18:50    

Lorsque tu fais cec i
 
if(GetOpenFileName(&st))                
    PostQuitMessage(0);
 
tu demandes à l'appli de se détruire !!!!
 
Il faut faire
 
if(GetOpenFileName(&st))                
  SetDlgItemText(HWnd_Fenetre, ID_EDIT1, st.buffer2);

Reply

Marsh Posté le 18-06-2006 à 21:21:05    

Phaydrinix a écrit :

Bon je fais un double poste vu qu'il y a une "micro maintenance".
Donc msdn dis que SetDlgItemText ce compose comme sa :BOOL SetDlgItemText(handle dialog box, handle EDIT, valeur retourné si échoué);
 
Donc je fais :  

Code :
  1. case WM_SETTEXT:
  2. {
  3. BOOL SetDlgItemText(st, choix_1, NULL);
  4. return 0;
  5. }


Et le compilo me sort : initializer expression list treated as compound expression.
...


euh... WM_SETTEXT n'est pas un message que ta fenêtre reçoit hein !
c'est toi qui envoie ce message à ton controle par SendMessage() pour stipuler le texte que tu souhaites y écrire. mais tu n'en as pas besoin si tu  
de plus, c'est quoi ce BOOL devant SetDlgItemText ? là je crois qu'il te manque carrément des bases ! et de Win32, et de programmation ! quand on appelle une fonction, on ne met pas son type de retour devant...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 19-06-2006 à 17:07:03    

Merci tout le monde sa marche.
Juste pour répondre à Harkonnen  

Citation :

là je crois qu'il te manque carrément des bases ! et de Win32, et de programmation ! quand on appelle une fonction, on ne met pas son type de retour devant...


 
Sûr' qu'il me manque des base, si seulement on pouvait les apprendrent au collège sa m'arangerai !! le BAC pour moi c'est pas encore maintenant !!

Reply

Marsh Posté le 19-06-2006 à 17:12:35    

Phaydrinix a écrit :

Sûr' qu'il me manque des base, si seulement on pouvait les apprendrent au collège sa m'arangerai !! le BAC pour moi c'est pas encore maintenant !!


n'espere pas apprendre la prog à l'école de toute façon, même en classe supérieure. l'expérience d'une grande partie des membres de ce forum tend à prouver que les profs enseignent une très mauvaise façon de programmer, et qu'il vaut mieux apprendre tout seul ;)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 20-06-2006 à 11:17:55    

La programmation n'a jamais fait partie des programmes de l'Education Nationale.  
La philosophie de l'EN a été pendant longtemps que tout le monde était capable de se former seul, était capable d'écrire ses propres programme. On s'est aperçu bien évidemment que c'était faux, mais rien n'a été fait pour la programmation. Les formations dispensées aux professeurs sont des formations sur l'utilisation des logiciels.  
Pour le reste, c'est la bonne volonté des profs, avec tout ce que celà comporte comme à-cotés (manque de connaissance, de méthodes ...).

Reply

Marsh Posté le 20-06-2006 à 11:17:55   

Reply

Marsh Posté le 20-06-2006 à 15:56:16    

Il n'y a aucune école supérieur qui se spécialise là-dedans ? C'est quand même bizarre... Mais c'est vrai que de faire un cours de programmation serai bien compliqué...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed