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

  FORUM HardWare.fr
  Programmation
  C++

  Ouvrir plusieurs types de fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ouvrir plusieurs types de fichiers

n°192999
olivier__
Posté le 09-08-2002 à 15:15:48  profilanswer
 

Je suis en train de faire un petit prog en visual C++.
J'ai utilisé MFC appwizard.
Je voudrais pouvoir ouvrir plusieurs types de fichiers avec ce prog.  
J'ai déjà pas mal cherché, mais je n'ai pas encore trouvé de réponse.
Est-ce que l'un d'entre vous connait une solution?

mood
Publicité
Posté le 09-08-2002 à 15:15:48  profilanswer
 

n°193006
tomlameche
Et pourquoi pas ?
Posté le 09-08-2002 à 15:32:31  profilanswer
 

olivier__ a écrit a écrit :

Je suis en train de faire un petit prog en visual C++.
J'ai utilisé MFC appwizard.
Je voudrais pouvoir ouvrir plusieurs types de fichiers avec ce prog.  
J'ai déjà pas mal cherché, mais je n'ai pas encore trouvé de réponse.
Est-ce que l'un d'entre vous connait une solution?




Ta question n'est pas très clair : qu'est ce que tu veux faire exactement ?
Ouvrir des fichiers ( n'importe lequel ) ?

n°193013
olivier__
Posté le 09-08-2002 à 15:40:04  profilanswer
 

Bon,
Quand je créé mon application, je peux préciser l'extension des fichiers que va utiliser mon programme (par ex: .uuu). Seulement, je ne peux donner qu'une seule extension, or j'ai besoin d'ouvrir plusieurs types de fichiers (.uuu et .vvv)
Dans le prog quand je fais Fichier->Ouvrir je n'ai donc que deux possibilités : *.uuu et *.* mais je voudrais rajouter *.vvv et traiter les .vvv et les .uuu de façons différentes.
Je ne sais pas si je suis trés clair là...

n°193020
El_gringo
Posté le 09-08-2002 à 15:55:53  profilanswer
 

Dans le code de ton appli, cherches "CFileDialog"
une fois que tu l'as trouvé, cherche "m_ofn.lpstrFilter"
Une fois que t'as trouvé ça, fais moi signe, et dit nous à quoi c égale actuellement.

n°193034
Carbon_14
Posté le 09-08-2002 à 16:13:36  profilanswer
 

En C "à la main", on définit une chaîne comme ça dans les ressources
 
STRINGTABLE
BEGIN
  519, "Fichier ASCII (*.DAT)\0*.DAT\0Fichier CSV (*.CSV)\0*.CSV\0Fichier JCAMP (*.DX)\0*.DX\0"
END
 
On a le type .DAT, le .CSV et le .DX qui sont séparés => traités à part chacun.
 
En C, on fait un LoadString(hInst, 519, (LPSTR)szFiltre, sizeof(szFiltre)) pour charger la ressource dans la chaîne qu'on passe à m_ofn.lpstrFilter.
 
Au retour, m_ofn.nFilterIndex doit donner l'indice (>= 1 je crois) de l'extension utilisée (1 pour DAT, 2 pour CSV, 3 pour DX dans mon exemple).
 
Pour le C++, voir el_gringo...

n°193035
El_gringo
Posté le 09-08-2002 à 16:16:20  profilanswer
 

carbon_14 a écrit a écrit :

En C "à la main", on définit une chaîne comme ça dans les ressources
 
STRINGTABLE
BEGIN
  519, "Fichier ASCII (*.DAT)\0*.DAT\0Fichier CSV (*.CSV)\0*.CSV\0Fichier JCAMP (*.DX)\0*.DX\0"
END
 
On a le type .DAT, le .CSV et le .DX qui sont séparés => traités à part chacun.
 
En C, on fait un LoadString(hInst, 519, (LPSTR)szFiltre, sizeof(szFiltre)) pour charger la ressource dans la chaîne qu'on passe à m_ofn.lpstrFilter.
 
Au retour, m_ofn.nFilterIndex doit donner l'indice (>= 1 je crois) de l'extension utilisée (1 pour DAT, 2 pour CSV, 3 pour DX dans mon exemple).
 
Pour le C++, voir el_gringo...




 
Oula, j'crois que tu te complique la vie...

n°193041
olivier__
Posté le 09-08-2002 à 16:20:20  profilanswer
 

El_Gringo : tu vas rire
y pas de CFileDialog dans le bazar généré par appwizard.
Quand je fais Fichier->Ouvrir, il fait ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)...
Je précise que c'est mon premier prog en VC++...

n°193047
olivier__
Posté le 09-08-2002 à 16:22:05  profilanswer
 

correction :

Code :
  1. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)

n°193052
El_gringo
Posté le 09-08-2002 à 16:25:21  profilanswer
 

ça c pas pareil :
OnFileOpen, c'est le nom de la méthode appelée quand on ouvre un fichier. Mais à mon avis, cette méthode, elle est appelée une fois qu'on a validé le fichier à ouvrir, pas avant d'ouvrir la boite de dialogue de choix de fichier.
Va qd même voir ce qu'il y a ds cette méthode OnFileDialog...

n°193072
olivier__
Posté le 09-08-2002 à 16:34:04  profilanswer
 

Ben justement y pas de méthode OnFileOpen dans le code.
Je pense que le programme utilise la méthode par défaut de la classe CWinApp...
D'ailleurs j'ai trouvé ça dans MSDN :

Code :
  1. // The following message map, produced by AppWizard, binds the
  2. // File New, Open, and Print Setup menu commands to default
  3. // framework implementations of these commands.
  4. BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
  5.    //{{AFX_MSG_MAP(CMyApp)
  6.    ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  7.       // NOTE - the ClassWizard will add and remove mapping macros here.
  8.       //    DO NOT EDIT what you see in these blocks of generated code!
  9.    //}}AFX_MSG_MAP
  10.    // Standard file based document commands
  11.    ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  12.    ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  13.    // Standard print setup command
  14.    ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
  15. END_MESSAGE_MAP()


C'est exactement ce qu'il y a dans mon code.


Message édité par olivier__ le 09-08-2002 à 16:34:43
mood
Publicité
Posté le 09-08-2002 à 16:34:04  profilanswer
 

n°193074
El_gringo
Posté le 09-08-2002 à 16:37:50  profilanswer
 

Ms en fait y a une truc qui est pas possible :
t'as forcément, qq part dans le code qu'il t'a généré, une endroit ou est écrit :"uuu"
cherche cet endroit !
 
Menu "edit" --> "Find in files"


Message édité par El_gringo le 09-08-2002 à 16:38:31
n°193086
olivier__
Posté le 09-08-2002 à 16:45:37  profilanswer
 

Oui,
Dans la "string table", il y a la chaine nommée IDR_UUUTYPE:

Code :
  1. \nUUU\nUUU\nFichiers UUU (*.uuu)\n.uuu\nUUU\nUUU Image


Et dans un fichier cpp, il y a :

Code :
  1. pDocTemplate = new CMultiDocTemplate(
  2.  IDR_UUUTYPE,
  3.  RUNTIME_CLASS(CImageViewerDoc),
  4.  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  5.  RUNTIME_CLASS(CImageViewerView));


Et dans le fichier ressource.h il y a :

Code :
  1. #define IDR_UUUTYPE                     129


Message édité par olivier__ le 09-08-2002 à 16:46:23
n°193100
olivier__
Posté le 09-08-2002 à 16:59:36  profilanswer
 

Je crois que j'ai trouvé :
Oui,
Dans la "string table", j'ai rajouté la chaine nommée IDR_VVVTYPE définie comme IDR_UUUTYPE  
 
Et dans le fichier cpp, j'ai mis :
 

Code :
  1. pDocTemplate = new CMultiDocTemplate(
  2.     IDR_VVVTYPE,
  3.     RUNTIME_CLASS(CImageViewerDoc),
  4.     RUNTIME_CLASS(CChildFrame),// custom MDI child frame
  5.     RUNTIME_CLASS(CImageViewerView));

 
 
Le seul truc c'est qu'au démarrage y a une boite de dialogue qui s'ouvre pour me demander si le nouveau document qui est créé automatiquement au démarrage doit être un uuu ou un vvv...
 
Merci pour ta patience el_gringo :)


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

  Ouvrir plusieurs types de fichiers

 

Sujets relatifs
[VC++]Créer des fichiers d'une taille donnéeAccès Fichiers sous NT - Quelle méthode choisir ?
[PHP] - probleme d'encodage de types MIME pour mailscomment faire un upload de fichiers du client vers le serveur?
Transférer des répertoires de fichiers via http[ASP] Récupérer des champs sur plusieurs tables...
Listing de réponses d'une requête sur plusieurs pages[XML-XSLT] réunir plusieurs arborescences en une seule non redondante
[C] Comment ouvrir une connectioncomment faire un IF ( ){ } avec plusieurs conditions?
Plus de sujets relatifs à : Ouvrir plusieurs types de fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR