CHeaderCtrl::HitTest
确定哪个标头项目,如果有,位于指定点。
int HitTest(
LPHDHITTESTINFO* phdhti
);
参数
Parameter |
说明 |
---|---|
[in,out] phdhti |
对指定点测试的 HDHITTESTINFO 结构的指针和接收测试的结果。 |
返回值
标头项的从零开始的索引,如果有,在指定的位置;否则,– 1。
备注
此方法发送 HDM_HITTEST 信息,在 Windows SDK所述。
要求
标头: afxcmn.h
此方法在Windows NT 3.51和更高版本支持。
示例
下面的代码示例定义任何变量,m_headerCtrl,用于访问当前标头控件。 此变量在下一个示例。
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
下面的代码示例演示 HitTest 方法。 此代码示例的早期节中,我们使用五列创建了一个标头控件。 但是,您可以拖动列分隔符,以便列不可见。 此示例报告列的索引,如果它可见和-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"));
}