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 régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    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 éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    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 régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    Par défaut
    Je vois pas ce que tu veux dire ?

  4. #4
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    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 régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    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 habitué
    Inscrit en
    Avril 2004
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Points : 138
    Points
    138
    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 régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    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 régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    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, 22h05
  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, 11h19
  3. Réponses: 4
    Dernier message: 05/05/2007, 19h12
  4. Mettre des fichier de type *.doc dans une variable
    Par Macandre dans le forum VBScript
    Réponses: 1
    Dernier message: 28/02/2007, 18h05
  5. Réponses: 3
    Dernier message: 16/10/2006, 11h06

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