CHeaderCtrl::HitTest
Determina la voce di intestazione, se presente, si trova in un determinato punto.
int HitTest(
LPHDHITTESTINFO* phdhti
);
Parametri
Parametro |
Descrizione |
---|---|
[in, out] phdhti |
Il puntatore a una struttura HDHITTESTINFO che specifica il punto da testare e riceve i risultati del test. |
Valore restituito
L'indice in base zero voce di intestazione, se presente, nella posizione specificata; in caso contrario, a 1.
Note
Questo metodo invia il messaggio HDM_HITTEST, come descritto in Windows SDK.
Requisiti
intestazione: afxcmn.h
Questo metodo è supportato in Windows NT 3,51 e versioni successive.
Esempio
Nell'esempio di codice seguente viene definita la variabile, m_headerCtrl, utilizzata per accedere al controllo intestazione corrente.Questa variabile viene utilizzata nell'esempio seguente.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Nell'esempio di codice riportato di seguito viene illustrato l'utilizzo del metodo HitTest.In una sezione precedente di questo esempio di codice, creato un controllo intestazione con cinque colonne.Tuttavia, è possibile trascinare un separatore di colonna in modo che la colonna non sia visibile.L'esempio fornisce l'indice della colonna se visibile e -1 se non è visibile.
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"));
}