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 !