添加CListCtrl的右键响应事件(NM_RCLICK)
void CCardInfoDlg::OnNMRClickListCard(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
//防止在空白区点击弹出菜单
if (m_LstCtrl.GetSelectedCount() <= 0)
{
return;
}
//下面的这段代码, 不单单适应于ListCtrl
CMenu menu, *pPopup;
menu.LoadMenu(IDR_MENU_CARD_INFO);
pPopup = menu.GetSubMenu(0);
CPoint myPoint;
ClientToScreen(&myPoint);
GetCursorPos(&myPoint); //鼠标位置
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, myPoint.x, myPoint.y,GetParent());
}
这里需要注意一个地方, TrackPopupMenu的最后一个参数, 按钮如果想要响应事件, 则必须指定为 事件所在类, 一般指定为this,如果用GetParent的话, ListCtrl只能弹出菜单, 但却响应不了事件, 当然, 除非你为ListCtrl创建类, 并在类里边实现菜单的各个事件