IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MDI / Visual 2008] Ouverture de plusieurs fichiers simultanément


Sujet :

MFC

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 75
    Par défaut [MDI / Visual 2008] Ouverture de plusieurs fichiers simultanément
    Je développe une application MFC Multi documents, avec support de l'architecture document/vue sous visual 2008.

    Le but de cette appli est d'ouvrir simultanément plusieurs fichiers csv afin de les regrouper, de manière transparente pour l'utilisateur, dans une base de donnée et de traiter toutes les infos comme s'il s'agissait d'un seul fichier.

    Après de longues années sous Visual C++ 6.0 je suis passé à 2008 la semaine dernière te je perd mes repères : sous visual 6 il suffisait d'intercepter le message ID_FILE_OPEN dans l'application, sans forcément écrire du code dans :
    pour que n'apparaissent plus automatiquement la boite de dialogue d'ouverture de fichier. Libre alors de créer soit même une boite pour ouvrir plusieurs type de fichiers ou plusieurs fichiers à la fois

    Avec Visual 2008 on ne passe apparement jamais dans la fonction
    et je n'arrive pas à me passer de la boite de dialogue par défaut.

    Quelqu'un a une idée ?

    Merci !

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 75
    Par défaut
    Personne ?
    Pas grave j'ai touvé tout seul !!!
    il suffisait de mettre en commentaires la ligne ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen) dans la boucle de message de l'application pour se débarrasser de la malheureuse boite de dialogue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
    	ON_COMMAND(ID_APP_ABOUT, &CMyApp::OnAppAbout)
    	// Standard file based document commands
    	ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)
    	//ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
    	ON_COMMAND(ID_FILE_OPEN, &CMyApp::OnFileOpen)
    END_MESSAGE_MAP()
    Ainsi on rentre bien dans CMyApp::OnFileOpen, fonction sur laquelle on a la main.

    Pour ceux qui veulent aller plus loin, pour ouvrir plusieurs CSV en même temps on procède de la manière suivante :

    Dans CTempLogApp::InitInstance() mettre en commentaire la ligne CMultiDocTemplate* pDocTemplate; :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //CMultiDocTemplate* pDocTemplate;
    pDocTemplate = new CMultiDocTemplate(
    	IDR_INOVIETYPE,
    	RUNTIME_CLASS(CInoViewDoc),
    	RUNTIME_CLASS(CChildFrame), // custom MDI child frame
    	RUNTIME_CLASS(CInoViewView));
    	AddDocTemplate(pDocTemplate);
    et déclarez pDocTemplate dans le .h

    De cette manière on aura accès à pDocTemplate dans CMyApp::OnFileOpen :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    void CMyApp::OnFileOpen()
    {
    	// Création du nouveau document
    	CMyDoc* pDoc = (CMyDoc*) pDocTemplate->CreateNewDocument();
     
    	if(pDoc->OpenCSV()==0)
    	{
    		// Création de la nouvelle fenetre fille
    		CFrameWnd *pFrame = pDocTemplate->CreateNewFrame(pDoc, NULL); 
    		// Initialisation du cadre fille
    		pDocTemplate->InitialUpdateFrame(pFrame, pDoc);
    	}
    	else
    		pDocTemplate->RemoveDocument(pDoc);
    }
    La méthode CMyDoc::OpenCSV() s'occuppe du reste !!!

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par SERTNM Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
    	ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
    	ON_COMMAND(ID_FILE_OPEN, &CMyApp::OnFileOpen)
    END_MESSAGE_MAP()
    Effectivement tu avais déclaré deux handler pour l'évènement ID_FILE_OPEN : CWinApp::OnFileOpen et CMyApp::OnFileOpen. La recherche s'arrêtant au premier, c'était la version CWinApp::OnFileOpen qui était appelé. Il faut faire attention dans un message map de n'avoir qu'un seul handler par notification. Il n'y a pas de chaînage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouverture de plusieurs fichiers en boucle
    Par Didi34 dans le forum Langage
    Réponses: 9
    Dernier message: 28/11/2008, 15h57
  2. Ouverture de plusieurs fichiers en même temps ?
    Par nicolas.sitbon dans le forum POSIX
    Réponses: 42
    Dernier message: 07/08/2008, 23h35
  3. ouvrir plusieurs fichiers simultanément
    Par palcoquoz dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 28/06/2007, 17h07
  4. [VB6] Ouverture de plusieurs fichiers textes
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/09/2006, 10h45
  5. Eclipse : ouverture de plusieurs fichiers
    Par menuge dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 15/05/2006, 09h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo