Ouvrir plusieurs types de fichiers - C++ - Programmation
Marsh Posté le 09-08-2002 à 15:32:31
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 ) ?
Marsh Posté le 09-08-2002 à 15:40:04
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à...
Marsh Posté le 09-08-2002 à 15:55:53
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.
Marsh Posté le 09-08-2002 à 16:13:36
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...
Marsh Posté le 09-08-2002 à 16:16:20
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...
Marsh Posté le 09-08-2002 à 16:20:20
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++...
Marsh Posté le 09-08-2002 à 16:22:05
correction :
Code :
|
Marsh Posté le 09-08-2002 à 16:25:21
ç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...
Marsh Posté le 09-08-2002 à 16:34:04
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 :
|
C'est exactement ce qu'il y a dans mon code.
Marsh Posté le 09-08-2002 à 16:37:50
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"
Marsh Posté le 09-08-2002 à 16:45:37
Oui,
Dans la "string table", il y a la chaine nommée IDR_UUUTYPE:
Code :
|
Et dans un fichier cpp, il y a :
Code :
|
Et dans le fichier ressource.h il y a :
Code :
|
Marsh Posté le 09-08-2002 à 16:59:36
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 :
|
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
Marsh Posté le 09-08-2002 à 15:15:48
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?