再一个继承自CFormView的view中,加入了dlg.然后再该dlg上放了一个listctrl,该listctrl室report形式的然后我需要在该listctrl上响应右键弹出菜单
菜单已经做好了,我在资源管理中加入了一个菜单资源test,其下有三个子菜单void OnRclickListSection(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
int index = pNMLV->iItem;
if (index == -1)
return;
CPoint pt;
CRect rc;
GetWindowRect(&rc);
GetCursorPos(&pt); //鼠标位置
CMenu *pMenu = new CMenu;
pMenu->LoadMenu(IDR_MENU1);
CMenu* pMenu1 = pMenu->GetSubMenu(0);
pMenu1->TrackPopupMenu(TPM_LEFTALIGN|TPM_RETURNCMD,pt.x,pt.y,this);
*pResult = 0;
}
然后我对这三个子菜单都使用classwaizd加入了右键单击消息,但是没有响应阿
我使用
void OnContextMenu(CWnd* pWnd, CPoint point)
函数,但是这只能响应一个子菜单的消息阿,怎么样可以控制和响应这三个菜单的消息
谢谢
菜单已经做好了,我在资源管理中加入了一个菜单资源test,其下有三个子菜单void OnRclickListSection(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
int index = pNMLV->iItem;
if (index == -1)
return;
CPoint pt;
CRect rc;
GetWindowRect(&rc);
GetCursorPos(&pt); //鼠标位置
CMenu *pMenu = new CMenu;
pMenu->LoadMenu(IDR_MENU1);
CMenu* pMenu1 = pMenu->GetSubMenu(0);
pMenu1->TrackPopupMenu(TPM_LEFTALIGN|TPM_RETURNCMD,pt.x,pt.y,this);
*pResult = 0;
}
然后我对这三个子菜单都使用classwaizd加入了右键单击消息,但是没有响应阿
我使用
void OnContextMenu(CWnd* pWnd, CPoint point)
函数,但是这只能响应一个子菜单的消息阿,怎么样可以控制和响应这三个菜单的消息
谢谢
{
CPoint curpos,tmppos;
GetCursorPos(&curpos);
tmppos = curpos;
ScreenToClient(&tmppos);
if (GetListCtrl().HitTest(tmppos) != -1) {
CMenu lmenu;
CMenu* pmenu;
if (lmenu.LoadMenu(IDR_MENU_LIST)) {
pmenu = lmenu.GetSubMenu(0);
pmenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, curpos.x, curpos.y, this);
}
}
}
谢谢
{
CPoint curpos,tmppos;
GetCursorPos(&curpos);
tmppos = curpos;
ScreenToClient(&tmppos);
if (GetListCtrl().HitTest(tmppos) != -1) {
CMenu lmenu;
CMenu* pmenu;
if (lmenu.LoadMenu(IDR_MENU_LIST)) {
pmenu = lmenu.GetSubMenu(0);
pmenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, curpos.x, curpos.y, this);
}
}
}