Partager via


Tables des messages dérivées

Lors de la gestion de messages, activer la propre table des messages d'une classe n'est pas la fin de le récit de table des messages.Que se produit si la classe CMyView (dérivé d' CView) n'a aucune entrée correspondante d'un message ?

N'oubliez pas que CView, la classe de base d' CMyView, est dérivé ensuite d' CWnd.Par conséquent CMyViewestCView et estCWnd.Chacune de ces classes possède sa propre table des messages.L'illustration « une hiérarchie de vue » ci-dessous montre la relation hiérarchique des classes, mais la tient à l'esprit qu'un objet d' CMyView est un objet unique qui a les caractéristiques de les trois classes.

Une hiérarchie de vue

Hiérarchie d'affichage VC

Si un message ne peut pas être mise en correspondance dans la table des messages des CMyView de classe, l'infrastructure recherche également la table des messages de sa classe de base immédiate.La macro d' BEGIN_MESSAGE_MAP au début de la table des messages spécifie deux noms de classe comme arguments :

BEGIN_MESSAGE_MAP(CMyView, CFormView)

Le premier argument nomme la classe à laquelle la table des messages appartient.Le deuxième argument fournit une connexion la classe de base immédiate — CView ici — afin que l'infrastructure peut rechercher sa table des messages, et.

Les gestionnaires de messages fournis dans une classe de base sont donc hérités par la classe dérivée.Il est très similaire aux fonctions membres virtuelles normales sans devoir rendre toutes les fonctions membres de gestionnaire virtuelles.

Si aucun gestionnaire n'est trouvée dans les tables des messages l'une des de classe de base, le traitement par défaut du message est exécuté.Si le message est une commande, l'infrastructure l'itinéraire à la cible de la commande suivante.S'il s'agit d'un message windows standard, le message est passé à la procédure de fenêtre par défaut appropriée.

Pour accélérer la correspondance de table des messages, l'infrastructure met en cache les correspondances récentes sur la probabilité qu'elle reçoit le même message à nouveau.Une il s'ensuit que l'infrastructure traite les messages non pris en charge assez efficace.Les tables des messages sont également espace-efficaces que les implémentations qui utilisent des fonctions virtuelles.

Voir aussi

Concepts

Comment l'infrastructure recherche des tables des messages