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 :

[MFC] des documents de TYPE différent dans une appli MDI


Sujet :

MFC

  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut [MFC] des documents de TYPE différent dans une appli MDI
    Bonjour,

    Je souhaite créer une application MDI dans laquelle il y a trois types différents de document.
    Je voudrais savoir comment, au moment de sélectionner le menu "Fichier->Nouveau", il est possible de fixer le type de document que l'on veut ouvrir suite à un choix de l'utilisateur par exemple.

    Explications:
    Dans le CWinApp::InitInstance, on a coutume de créer un CMultiDocTemplate et d'appeler la fonction AddDocTemplate() pour l'enregistrer.
    Si je fais 2 fois AddDocTemplate() avec 2 types de document différents, lorsque je fais "Fichier->Nouveau" au moment de l'exécution, rien ne se passe, pas même l'ouverture d'un document du premier CMultiDocTemplate.
    Ce que je voudrais, c'est pouvoir basculer d'un type de document à un autre à volonté et suite à un choix de l'utilisateur, au moment d'en créer un nouveau.

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Est ce que ce n'est pas plutôt le contraire.
    Le deuxième AddDocTemplate() doit intervenir avant ProcessShellCommand()

  3. #3
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Je vois pas ce que tu veux dire ?

  4. #4
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CprojectApp::InitInstance()
    {
     
          // ... 
          AddDocTemplate(pDocTemplate1);
          AddDocTemplate(pDocTemplate2);
          //...
          ProcessShellCommand(cmd);  // il ouvre la boite de dialogue de sélection de modèle de document
          // ...
    }

  5. #5
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Bah en fait, ça donne rien.
    pour résumer, imaginons l'exemple suivant ( que j'aimerais obtenir ):
    -Dans l'appli MDI, il y a un menu "Documents" avec 3 sous menu "doc1","doc2","doc3"
    -Quand on fait menu "Documents->doc1", ca crée un document de type doc1.
    Si on fait menu "Documents->doc2", ca crée un document de type doc2.
    et Si on fait menu "Documents->doc3", ca crée un document de type doc3.
    Si on refait menu "Documents->doc3",ça crée un second document de type doc3.
    et ce, de manière directe sans passer par une boîte de dialogue qui demande de choisir.

    En général:
    Quand il n'y a qu'un seul type de document et que l'on fait "Fichier->nouveau", à chaque
    fois, l'appli ouvre une fenêtre associé à un type de document et ce autant de fois que l'on fait "Fichier->Nouveau" et on se retrouve par exemple avec 5 documents différents mais de même type. Moi ce que je voudrais, c'est 5 documents différents ET de nature différente, je
    sais pas si je me fais bien comprendre..?

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par défaut
    Salut,
    Suivant le type de document que tu veux ouvrir, il faut que tu récupère le DocTemplate et que tu appelles la fonction OpenDocumentFile dessus.

  7. #7
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Salut,

    Bah en fait quand je fais ça, ça cherche à m'ouvrir un document déjà existant alors que je veux en créer un nouveau.
    Est-ce qu'il ne faudrait pas surcharger la méthode "OnFileNew()"de CWinApp ou un truc dans le genre.
    Est-ce qu'il n'y aurait pas un concept de base incontournable à connaître à propos des modèles de document pour se sortir de cette affaire?

  8. #8
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Rectification:

    Si si,ça marche bien, il faut mettre le paramètre NULL dans l'argument de la fonction OpenFileDocument.

    Merci à toi Brouzouf !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/08/2007, 23h05
  2. Remplir des input de type text dans une page HTML
    Par Rodrick dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/06/2007, 12h19
  3. Réponses: 4
    Dernier message: 05/05/2007, 20h12
  4. Mettre des fichier de type *.doc dans une variable
    Par Macandre dans le forum VBScript
    Réponses: 1
    Dernier message: 28/02/2007, 19h05
  5. Réponses: 3
    Dernier message: 16/10/2006, 12h06

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