Шаг 949 - CListBox::MeasureItem

virtual void MeasureItem( LPMEASUREITEMSTRUCT lpMeasureItemStruct );

Параметры
lpMeasureItemStruct
Длинный указатель на структуру MEASUREITEMSTRUCT.

Замечания
Вызванный рамкой, когда список владельцем создан со стилем отрисовки владельцем.
По умолчанию, эта функция не делает ничего. Перегрузите эту функцию и внесите структуру MEASUREITEMSTRUCT, чтобы сообщить Windows относительно размерностей списка. Если список создан с LBS_OWNERDRAWVARIABLE стилем, рамка вызывает эту функцию для каждого элемента в списке. Иначе, это вызван только один раз.

Пример

// CMyListBox - мой выведенный владельцем список, полученный из CListBox. Этот 
// пример измеряет элемент и устанавливает высоту элемента  вдвое 
// вертикальной протяженность текста. Управление списка было создано  
// следующим кодом:
//   pmyListBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
void CMyListBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct) 
{
	ASSERT(lpMeasureItemStruct->CtlType == ODT_LISTBOX);
	LPCTSTR lpszText = (LPCTSTR) lpMeasureItemStruct->itemData;
	ASSERT(lpszText != NULL);
	CSize sz;
	CDC* pDC = GetDC();

	sz = pDC->GetTextExtent(lpszText);

	ReleaseDC(pDC);

	lpMeasureItemStruct->itemHeight = 2*sz.cy;
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 12.02.2002