Présentation de la méthodologie pour réaliser un template de fenetre (basée sur Dialog Box)
en utilisant au début le classwizard
1
commencez à créer votre fenetre comme d'habitude
ses controles
actions associées aux boutons
...
(ce qui n'est pas fait à cette étape pourra etre repris manuellement)
2
séparer la gestion de la fenetre dans une source spécifique
les fonctions de la fenetre faisant appel à ces derniere
3
faire une classe virtuelle d'ou dériveront les classes utilisées pour notre template
(cela facilitera et imposera le fait que toutes les sous fonctions aient une instance)
4
créer ou
faire dériver la classe désirée de notre classe virtuelle
5
modifier toutes les fonctions pour introduire le template
remplacer la gestion de messages par une adaptation de ce qui suit:
(ce que j'appelle la gestion de messages c'est
BEGIN_MESSAGE_MAP(DListeIndirW, CDialog)
)
'
template<class TYPE_ELTS> const AFX_MSGMAP* DListeIndirW<TYPE_ELTS>
::GetMessageMap() const
{
return &DListeIndirW::messageMap;
}
template<class TYPE_ELTS> AFX_COMDAT AFX_DATADEF const AFX_MSGMAP DListeIndirW<TYPE_ELTS>
::messageMap =
{
&CDialog::messageMap, &DListeIndirW<TYPE_ELTS>::_messageEntries[0]
};
template<class TYPE_ELTS> AFX_COMDAT const AFX_MSGMAP_ENTRY DListeIndirW<TYPE_ELTS>
::_messageEntries[] =
{
'
6
ne plus inclure le cpp dans le linkage
mais faire un include à la fin du header
(cf méthode employée dans BListeIndir)
7
créer des instance tester
voilà et ça marche
Magicalement
Nono.