void CrvtFaultRodDlg::OnNMClickListrod(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
CheckPtrDet(pNMItemActivate);
if (pNMItemActivate->iItem == -1) return;
UINT nFlag;
int nItem = mList.HitTest(pNMItemActivate->ptAction, &nFlag);
mbCtrlDown = KeyDown(VK_CONTROL);
mbShiftDown = KeyDown(VK_SHIFT);
if (!mbCtrlDown && !mbShiftDown)
{
//判断是否点在checkbox上
if (nFlag == LVHT_ONITEMSTATEICON)
{
BOOL fCheck = mList.GetCheck(pNMItemActivate->iItem) ? FALSE : TRUE;
ListView_SetCheckState(mList.m_hWnd, TVIS_OVERLAYMASK, fCheck);
UINT staMsk = fCheck ? LVIS_FOCUSED | LVIS_SELECTED : LVIS_FOCUSED;
mList.SetItemState(pNMItemActivate->iItem, staMsk, staMsk);
StdId id3d = GetId3d(pNMItemActivate->iItem);
InsertIdSel(id3d, fCheck);
}
else
{
bool bCheck = !mList.GetCheck(pNMItemActivate->iItem);
mList.SetCheck(pNMItemActivate->iItem, bCheck);
UINT staMsk = bCheck ? LVIS_FOCUSED | LVIS_SELECTED : LVIS_FOCUSED;
mList.SetItemState(pNMItemActivate->iItem, staMsk, staMsk);
StdId id3d = GetId3d(pNMItemActivate->iItem);
InsertIdSel(id3d, bCheck);
}
nRowFrist = pNMItemActivate->iItem;
nRowSecond = -1;
mnTime = 0;
}
if (mbCtrlDown)
{
// 重复点击不考虑以后再说不重要
StdId id3d = GetId3d(pNMItemActivate->iItem);
SetRowBackCol(id3d);
nRowFrist = -1;
nRowSecond = -1;
}
if (mbShiftDown)
{
if (nRowSecond == -1)
mnTime = 1;
else
mnTime++;
int nStart = min(nRowFrist, nRowSecond);
int nEnd = max(nRowFrist, nRowSecond);
if (nStart != -1)
for (int nRow = nStart; nRow <= nEnd; nRow++)
{
BOOL bCheck = FALSE;
mList.SetCheck(nRow, bCheck);
}
nRowSecond = nRowFrist != -1 ? pNMItemActivate->iItem : nRowSecond;
nRowFrist = nRowFrist == -1 ? pNMItemActivate->iItem : nRowFrist;
nStart = min(nRowFrist, nRowSecond);
nEnd = max(nRowFrist, nRowSecond);
if (nStart != -1)
for (int nRow = nStart; nRow <= nEnd; nRow++)
{
BOOL bCheck = TRUE;
mList.SetCheck(nRow, bCheck);
}
}
else
{
if (mnTime != 0)
{
nRowFrist = -1;
nRowSecond = -1;
}
}
HightRod(pNMItemActivate->iItem);
mList.ShowWindow(SW_SHOW);
*pResult = 0;
}
CTabCtrl Ctrl单机选中 shift点击批量选
于 2023-12-19 20:23:51 首次发布