CComboBox::MeasureItem
Appelé par l'infrastructure lorsqu'une zone de liste déroulante avec un style owner draw est créée.
virtual void MeasureItem(
LPMEASUREITEMSTRUCT lpMeasureItemStruct
);
Paramètres
- lpMeasureItemStruct
Un long pointeur vers une structure de MEASUREITEMSTRUCT .
Notes
Par défaut, cette fonction membre ne fait rien. Remplacez cette fonction membre et remplissez la structure d' MEASUREITEMSTRUCT pour informer les fenêtres des dimensions de la zone de liste dans la zone de liste déroulante. Si la zone de liste déroulante est créée avec le style de CBS_OWNERDRAWVARIABLE , l'infrastructure appelle cette fonction membre pour chaque élément de la zone de liste. Sinon, ce membre est appelé qu'une seule fois.
À l'aide de le style de CBS_OWNERDRAWFIXED dans une zone de liste déroulante owner-draw créée avec la fonction membre de SubclassDlgItem d' CWnd implique des considérations davantage de programmation. Consultez la description dans note technique 14.
Consultez CWnd::OnMeasureItem pour obtenir une description de la structure d' MEASUREITEMSTRUCT .
Exemple
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example measures an item and sets the height of the item to twice the
// vertical extent of its text. The combo box control was created with
// the following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
void CMyComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
ASSERT(lpMeasureItemStruct->CtlType == ODT_COMBOBOX);
if (lpMeasureItemStruct->itemID != (UINT) -1)
{
LPCTSTR lpszText = (LPCTSTR) lpMeasureItemStruct->itemData;
ASSERT(lpszText != NULL);
CSize sz;
CDC* pDC = GetDC();
sz = pDC->GetTextExtent(lpszText);
ReleaseDC(pDC);
lpMeasureItemStruct->itemHeight = 2*sz.cy;
}
}
Configuration requise
Header: afxwin.h