void CPPListCtrl::OnRButtonDown( UINT nFlags, CPoint ptt )
{
CRect rc;
GetWindowRect(&rc);
ScreenToClient(&rc);
CPoint pt = ptt;
//点在矩形中,并且里面有数据
int iItemCount = GetItemCount();
if (rc.PtInRect(pt) && 0 < iItemCount)
{
//判断点是否在每一项上面
CRect rectBound;
//点是否在该item上面
BOOL bIsIn= FALSE;
//获取选中的数量
int iSelNum = GetSelectedCount();
int iCurIndexItem = HitTest(pt);
//没有在item上
if (-1 != iCurIndexItem)
{
bIsIn = TRUE;
UINT uStatus = GetItemState(iCurIndexItem, LVIS_SELECTED);
//如果没有选中
if (!(uStatus&LVIS_SELECTED))
{
for (int i = 0; i < iItemCount; i++)
{
SetItemState(i, 0,LVIS_FOCUSED | LVIS_SELECTED);
}
SetItemState(iCurIndexItem, LVIS_FOCUSED | LVIS_SELECTED,LVIS_FOCUSED | LVIS_SELECTED);
}
}
//如果在这个item上面,那么就弹出菜单
if (bIsIn)
{
CMenu menuTest;
BOOL bTest = menuTest.CreatePopupMenu();
CString strTemp;
int iMenuID = IDM_POPUP_DEL_JOB;
for (int i =0 ; i < 4; i++)
{
g_LoadMenuStringsFromProfile(iMenuID, strTemp);
menuTest.AppendMenu(MF_POPUP, iMenuID++, strTemp);
}
ClientToScreen(&pt);
menuTest.TrackPopupMenu(TPM_LEFTALIGN , pt.x, pt.y, this);
menuTest.Detach();
}
}
}
重写clistctl中右键弹出菜单
最新推荐文章于 2023-07-13 12:00:00 发布