次の方法で共有


CHeaderCtrl::HitTest

指定した点にヘッダー項目がある場合に、その項目を判定します。

int HitTest(
    LPHDHITTESTINFO* phdhti
);

パラメーター

パラメーター

説明

[入力、出力] phdhti

調べる点を指定して結果を受け取る HDHITTESTINFO 構造体へのポインター。

戻り値

指定した位置にヘッダー項目がある場合はその項目の 0 から始まるインデックス。それ以外の場合は -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"));
}

参照

参照

CHeaderCtrl クラス

階層図

HDM_HITTEST

HDHITTESTINFO

その他の技術情報

CHeaderCtrl のメンバー