Partager via


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

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

Voir aussi

Référence

CComboBox, classe

Graphique de la hiérarchie

CComboBox::CompareItem

CComboBox::DrawItem

WM_MEASUREITEM

CComboBox::DeleteItem