CHeaderCtrl::HitTest
Determina qual item de cabeçalho, se houver, está localizado em um ponto especificado.
int HitTest(
LPHDHITTESTINFO* phdhti
);
Parâmetros
Parâmetro |
Descrição |
---|---|
[in, out] phdhti |
Ponteiro para um HDHITTESTINFO estrutura que especifica o ponto de teste e recebe resultados do teste. |
Valor de retorno
O índice baseado em zero do item de cabeçalho, se houver, na posição especificada; caso contrário, – 1.
Comentários
Esse método envia o HDM_HITTEST mensagem, que é descrita no Windows SDK.
Requisitos
Cabeçalho: afxcmn.h
Este método é suportado no Windows NT 3.51 e posterior.
Exemplo
O exemplo de código a seguir define a variável, m_headerCtrl, que é usado para acessar o controle de cabeçalho corrente. Essa variável é usada no exemplo a seguir.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
O exemplo de código a seguir demonstra o HitTest método. Em uma seção anterior deste exemplo de código, criamos um controle de cabeçalho com cinco colunas.No entanto, você pode arrastar um separador de coluna para que a coluna não fique visível.Este exemplo informa o índice da coluna se ele estiver visível e -1 se a coluna não estiver visível.
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"));
}