CHeaderCtrl::HitTest
更新 : 2007 年 11 月
指定した点にヘッダー項目がある場合に、その項目を判定します。
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"));
}