CHeaderCtrl::HitTest
Bestimmt, HeaderItem ggf. an einem angegebenen Punkt befindet.
int HitTest(
LPHDHITTESTINFO* phdhti
);
Parameter
Parameter |
Description |
---|---|
[in, out] phdhti |
Zeiger auf eine HDHITTESTINFO-Struktur, die den Punkt angibt, um zu testen und empfängt die Ergebnisse des Tests. |
Rückgabewert
Der nullbasierte Index des Headerelements ggf. an der angegebenen Position; andernfalls - 1.
Hinweise
Diese Methode sendet die HDM_HITTEST Meldung, die im Windows SDK beschrieben wird.
Anforderungen
Header: afxcmn.h
Diese Methode wird in Windows NT 3.51 unterstützt.
Beispiel
Im folgenden Codebeispiel wird die Variable, m_headerCtrl, die verwendet wird, um auf das aktuelle Header-Steuerelement zuzugreifen.Diese Variable wird im folgenden Beispiel verwendet.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Im folgenden Codebeispiel wird die HitTest-Methode veranschaulicht.In einem früheren Abschnitt dieses Codebeispiels erstellt haben, wird ein Header-Steuerelement mit fünf Spalten.Sie können jedoch ein Spaltentrennzeichen ziehen, damit die Spalte nicht sichtbar ist.In diesem Beispiel gibt der Index der Spalte, wenn es sichtbar und -1 ist, wenn die Spalte nicht sichtbar ist.
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"));
}