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 :

Création dynamique de vues (RUNTIME_CLASS)


Sujet :

MFC

Vue hybride

PetitPapaNoël Création dynamique de vues... 31/07/2008, 14h46
farscape salut, tu as utilisé la... 31/07/2008, 14h50
PetitPapaNoël Toutes mes classes de vues... 31/07/2008, 14h54
farscape remplace par DECLARE_SERIAL... 31/07/2008, 14h59
PetitPapaNoël Tu as raison, Farscape. En... 31/07/2008, 15h21
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut Création dynamique de vues (RUNTIME_CLASS)
    Bonjour à tous,

    Étant en environnement MDI, j'utilise la classe CMultiDocTemplate pour ouvrir mes documents/vues. Le constructeur de cette classe prend plusieurs paramètres dont la classe de la vue à ouvrir sous forme de CRuntimeClass*. Jusque là, rien d'extraordinaire.

    Donc à chaque fois que je veux ouvrir une nouvelle vue, je dois donc utiliser la macro RUNTIME_CLASS avec le nom de ma classe de vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RUNTIME_CLASS(CMaVue)
    J'ai centralisé l'ouverture de mes vues dans une méthode qui accepte en paramètre un CRuntimeClass*, issu de l'utilisation de la macro RUNTIME_CLASS. Ça marche très bien, mais à chaque fois que je veux utiliser ma méthode (de très nombreuses fois car j'ai plein de vues différentes) je suis obligé d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaMethodeQuiOuvreUneVue(RUNTIME_CLASS(CMaVue), ...)
    Or moi, je préfèrerais avoir à écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaMethodeQuiOuvreUneVue("CMaVue", ...)
    Pour cela, il faudrait que je trouve le moyen d'obtenir mon pointeur CRuntimeClass* à partir du nom de la classe sous forme de chaîne de caractères. Et c'est ça que je n'arrive pas à faire.

    J'ai essayé d'utiliser la méthode CRuntimeClass::FromName, mais elle me renvoie systématiquement un pointeur à NULL...

    Quelqu'un aurait-il une piste ?


    NB 1 : Mon problème n'est pas bloquant puisque ça marche très bien en appelant RUNTIME_CLASS à chaque fois. C'est juste que je ne comprends pas pourquoi je ne pourrais pas intégrer l'appel à cette macro dans ma méthode qui gère les vues.

    NB 2 : Je précise que j'ai pensé à faire une macro pour remplacer ma méthode, mais ce n'est pas possible car celle-ci a plusieurs surcharges avec des paramètres optionnels à chaque fois...


    Merci de votre aide !

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    tu as utilisé la macro DECLARE_SERIAL dans ta classe ?

  3. #3
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Toutes mes classes de vues sont créées avec DECLARE_DYNCREATE (elles ont été créées avec l'assistant de Studio)...

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    remplace par DECLARE_SERIAL pour une classe pour voir ...

  5. #5
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Tu as raison, Farscape. En utilisant DECLARE_SERIAL et IMPLEMENT_SERIAL en lieu et place de DECLARE_DYNCREATE et IMPLEMENT_DYNCREATE, la méthode CRuntimeClass::FromName fonctionne bien.

    Mais il faudrait que je modifie toutes mes classes de vues... Au final, je préfère encore utiliser RUNTIME_CLASS à chaque fois.

    N'y a-t-il pas un autre moyen ?

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    non,
    mais tu peux remplacer dans tous les sources très facilement (dès fois un peu trop ) en 1 seule fois avec VC 2008...

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

Discussions similaires

  1. [Plugin] Création d'une vue dynamiquement
    Par The Bonze dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 15/06/2004, 13h23
  2. [D7] Création dynamique de Form
    Par jer64 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/08/2003, 12h20
  3. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07
  4. TWebBrowser et création dynamique
    Par BakaOnigiri dans le forum Web & réseau
    Réponses: 2
    Dernier message: 01/09/2002, 10h53
  5. Création dynamique de TImages
    Par Dric dans le forum C++Builder
    Réponses: 10
    Dernier message: 08/07/2002, 12h36

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