CListCtrl::HitTest
Determina qual item de lista modo de exibição, se houver, está na posição especificada.
int HitTest(
LVHITTESTINFO* pHitTestInfo
) const;
int HitTest(
CPoint pt,
UINT* pFlags = NULL
) const;
pHitTestInfo
Endereço de uma estrutura de LVHITTESTINFO que contém a posição fazer teste e que recebe informações sobre os resultados de teste de clique.pt
Ponto a ser testado.pFlags
Ponteiro para um número inteiro que recebe informações sobre os resultados do teste.Consulte a explicação o membro de flags estrutura de LVHITTESTINFO em Windows SDK.
O índice do item na posição especificada por pHitTestInfo, se houver, ou por -1 do contrário.
Você pode usar LVHT_ABOVE, LVHT_BELOW, LVHT_TOLEFT, e valores de LVHT_TORIGHT de membro de flag da estrutura para determinar se rolar o conteúdo de um controle de exibição de lista.Dois de esses sinalizadores podem ser combinados, por exemplo, se a posição é acima e à esquerda da área cliente.
Você pode testar o valor de LVHT_ONITEM de membro de flag da estrutura para determinar se uma posição determinada está sobre um item de exibição de lista.Esse valor é a operação OU bit a bits em LVHT_ONITEMICON, em LVHT_ONITEMLABEL, e valores de LVHT_ONITEMSTATEICON de membro de flag estrutura.
void CListCtrlDlg::OnRClick(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE pia = (LPNMITEMACTIVATE)pNMHDR;
CPoint point(pia->ptAction);
// Select the item the user clicked on.
UINT uFlags;
int nItem = m_myListCtrl.HitTest(point, &uFlags);
if (uFlags & LVHT_ONITEMLABEL)
{
m_myListCtrl.SetItem(nItem, 0, LVIF_STATE, NULL, 0, LVIS_SELECTED,
LVIS_SELECTED, 0);
}
*pResult = 0;
}
Cabeçalho: afxcmn.h