CListCtrl::GetItemRect
Возвращает ограничивающий прямоугольник для всех или части элемента в текущем представлении.
BOOL GetItemRect(
int nItem,
LPRECT lpRect,
UINT nCode
) const;
Параметры
nItem
Индекс элемента, индекс которого требуется извлечь.lpRect
Адрес структуры RECT, которая возвращает ограничивающий прямоугольник.nCode
Часть элемента списка, для которого нужно извлечь ограничивающий прямоугольник. Он может быть одно из следующих значений:LVIR_BOUNDS возвращает ограничивающий прямоугольник для всего элемента, включая значок и метку.
LVIR_ICON возвращает ограничивающий прямоугольник значка или мелкого значка.
LVIR_LABEL возвращает ограничивающий прямоугольник текста элемента.
Возвращаемое значение
Ненулевой, если успешно; в противном случае – нуль.
Пример
// OnClick is the handler for the NM_CLICK notification
void CListCtrlDlg::OnClick(NMHDR* pNMHDR, LRESULT* pResult)
{
UNREFERENCED_PARAMETER(pResult);
LPNMITEMACTIVATE pia = (LPNMITEMACTIVATE)pNMHDR;
// Get the current mouse location and convert it to client
// coordinates.
CPoint pos( ::GetMessagePos() );
ScreenToClient(&pos);
// Get indexes of the first and last visible items in
// the listview control.
int index = m_myListCtrl.GetTopIndex();
int last_visible_index = index + m_myListCtrl.GetCountPerPage();
if (last_visible_index > m_myListCtrl.GetItemCount())
last_visible_index = m_myListCtrl.GetItemCount();
// Loop until number visible items has been reached.
while (index <= last_visible_index)
{
// Get the bounding rectangle of an item. If the mouse
// location is within the bounding rectangle of the item,
// you know you have found the item that was being clicked.
CRect r;
m_myListCtrl.GetItemRect(index, &r, LVIR_BOUNDS);
if (r.PtInRect(pia->ptAction))
{
UINT flag = LVIS_SELECTED | LVIS_FOCUSED;
m_myListCtrl.SetItemState(index, flag, flag);
break;
}
// Get the next item in listview control.
index++;
}
}
Требования
Header: afxcmn.h