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"));
}

请参见

参考

CHeaderCtrl选件类

层次结构图

HDM_HITTEST

HDHITTESTINFO