Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2856 connectés 

  FORUM HardWare.fr
  Programmation
  C++

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1390033
Phaydrinix
Posté le 18-06-2006 à 17:08:54  profilanswer
 

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 ?

mood
Publicité
Posté le 18-06-2006 à 17:08:54  profilanswer
 

n°1390064
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 18-06-2006 à 17:45:02  profilanswer
 

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)
n°1390145
Phaydrinix
Posté le 18-06-2006 à 19:59:49  profilanswer
 

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

n°1390147
Phaydrinix
Posté le 18-06-2006 à 20:22:01  profilanswer
 

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.
...

n°1390151
Amonchakai
Posté le 18-06-2006 à 20:47:17  profilanswer
 

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

n°1390160
Trap D
Posté le 18-06-2006 à 21:18:50  profilanswer
 

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);

n°1390161
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 18-06-2006 à 21:21:05  profilanswer
 

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)
n°1390780
Phaydrinix
Posté le 19-06-2006 à 17:07:03  profilanswer
 

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 !!

n°1390791
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 19-06-2006 à 17:12:35  profilanswer
 

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)
n°1391266
Trap D
Posté le 20-06-2006 à 11:17:55  profilanswer
 

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 ...).

mood
Publicité
Posté le 20-06-2006 à 11:17:55  profilanswer
 

n°1391574
Phaydrinix
Posté le 20-06-2006 à 15:56:16  profilanswer
 

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é...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

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

 

Sujets relatifs
Chemin relatif sous ActiveX/Javascriptpb recup tableau php en javascript
[VBA Excel] Chemin fichier ouvrirrequire avec chemin relatif (pb de ./..)
probleme recup champs option dans bbdAfficher le nom d'un fichier sans chemin d'acces ni extension
Créer par programme un edit dans un scrollbox[Chemin avec espaces] Comment echapper les espaces ?
[Edit] Generer un diagramme!pb access rs.edit
Plus de sujets relatifs à : [c++] Récup' le chemin de GetOpenFileName dans un edit


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)