CHeaderCtrl::HitTest
Определяет, какой элемент заголовка, если таковые имеются, поиск в заданной точке.
int HitTest(
LPHDHITTESTINFO* phdhti
);
Параметры
Параметр |
Описание |
---|---|
[in, out] phdhti |
Указатель на структуру HDHITTESTINFO, которая определяет точку для тестирования и возвращает результаты теста. |
Возвращаемое значение
Индекс, начинающийся с нуля элемента заголовка, при наличии таковой, в указанной позиции; в противном случае – значение - 1.
Заметки
Этот метод отправляет сообщение HDM_HITTEST, которое описано в Windows SDK.
Требования
заголовок: afxcmn.h
Этот метод поддерживается в Windows NT 3,51 и более поздних версий.
Пример
В следующем примере кода определяется переменной m_headerCtrl, которая используется для доступа к текущий элемент управления заголовка.Эта переменная используется в следующем примере.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
В следующем примере кода демонстрируется применение метода HitTest.В предыдущем шаге этого примера кода, мы создали элемент управления заголовка с 5 столбцами.Однако можно перетаскивать разделители столбцов так, чтобы столбец не будет отображаться.В этом примере информирует индекс столбца, если он видим и -1, если столбец не является видимым.
void CNVC_MFC_CHeaderCtrl_s4Dlg::OnXHittest()
{
if (controlCreated == FALSE) {
MessageBox(_T("Header control has not been created yet."));
return;
}
// Initialize HDHITTESTINFO structure.
HDHITTESTINFO hdHitIfo;
memset(&hdHitIfo, 0, sizeof(HDHITTESTINFO));
CString str;
CRect rect;
int iRetVal = -1;
for(int i = 0; i < m_headerCtrl.GetItemCount(); i++)
{
m_headerCtrl.GetItemRect(i, &rect);
hdHitIfo.pt = rect.CenterPoint();
// The hit test depends on whether the header item is visible.
iRetVal = m_headerCtrl.HitTest(&hdHitIfo);
str.AppendFormat(_T("Item = %d, Hit item = %d\n"), i, iRetVal);
}
MessageBox(str, _T("Hit test results"));
}