Template de dialog/fenetre (vc++)

Soyez le premier à donner votre avis sur cette source.

Vue 6 013 fois - Téléchargée 443 fois

Description

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.

Source / Exemple :


un exemple dans le zip

DListeIndirW étant la fameuse fenetre...

DListeIndir             étant la classe virtuelle, 
dérivant de BListeIndir, une gestion de liste d'objets (et oui, un template....)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.