afx_msg void OnMeasureItem ( int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct );
Paramètres
nIDCtl
L'ID du contrôle.
lpMeasureItemStruct
Points à une structure de données MEASUREITEMSTRUCT qui contient les dimensions du contrôle owner-draw.
Remarques
L'infrastructure appelle cette fonction membre par le cadre pour le propriétaire d'un bouton owner-draw, zone de liste déroulante, zone de liste ou élément de menu lorsque le contrôle est créé.
Substituer cette fonction de membre et remplir la structure de données MEASUREITEMSTRUCT indiquée par lpMeasureItemStruct et retour ; Cela informe Windows des dimensions du contrôle et permet à Windows de traiter l'interaction utilisateur avec le contrôle correctement.
Si une zone de liste ou zone de liste déroulante est créé avec le style LBS_OWNERDRAWVARIABLE ou CBS_OWNERDRAWVARIABLE , l'infrastructure appelle cette fonction pour le propriétaire de chaque élément dans le contrôle ; sinon, cette fonction est appelée une fois.
Windows lance l'appel à OnMeasureItem pour le propriétaire de zones de liste modifiable et zones de liste créés avec le style OWNERDRAWFIXED avant d'envoyer la message WM_INITDIALOG . En conséquence, lorsque le propriétaire reçoit cet appel, Windows n'a pas encore déterminé la hauteur et la largeur de la police utilisée dans le contrôle ; appels de fonction et les calculs qui nécessitent ces valeurs devraient apparaître dans la fonction principale de l'application ou de la bibliothèque.
Si l'élément à mesurer est un CMenu, CListBox ou un objet CComboBox , la fonction virtuelle MeasureItem de la classe appropriée est appelée. Substituer la fonction membre MeasureItem de classe du contrôle approprié de calculer et de définir la taille de chaque élément.
OnMeasureItem sera appelée que si la classe du contrôle est créée au moment de l'exécution, ou il est créé avec le style LBS_OWNERDRAWVARIABLE ou CBS_OWNERDRAWVARIABLE . Si le contrôle est créé par l'éditeur de boîte de dialogue, ne sera pas appelée OnMeasureItem . C'est parce que le message WM_MEASUREITEM est envoyé très tôt dans le processus de création du contrôle. Si vous la sous-classe en utilisant DDX_Control, SubclassDlgItemou SubclassWindow, le sous-classement survient habituellement après le processus de création. Il n'y a donc aucun moyen de gérer le message WM_MEASUREITEM à la fonction du contrôle OnChildNotify , qui est le mécanisme que MFC utilise pour mettre en œuvre des ON_WM_MEASUREITEM_REFLECT.
&Notenbsp ; Cette fonction membre est appelée par le cadre pour permettre à votre application gérer un message Windows. Les paramètres passés à la fonction de reflètent les paramètres reçus par le cadre lorsque le message a été reçu. Si vous appelez l'implémentation de classe de base de cette fonction, que l'application utilisera les paramètres passés à l'origine avec le message et pas les paramètres que vous fournissez à la fonction.
Aperçu de CWnd |nbsp ; Membres de la classe | Graphique de la hiérarchie
Voir aussinbsp ;CMenu::MeasureItem, CListBox::MeasureItem, CComboBox::MeasureItem, WM_MEASUREITEM