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 :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 RUNTIME_CLASS(CMaVue)Or moi, je préfèrerais avoir à écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MaMethodeQuiOuvreUneVue(RUNTIME_CLASS(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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MaMethodeQuiOuvreUneVue("CMaVue", ...)
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 !
Partager