请问,我点右键弹出一个菜单,怎么才能得到我选择的那项的ID?谢谢!

baixiaojun 2003-10-18 10:59:42
我在一个视图里调用了,下面的函数
UINT uRetID = TrackPopupMenuEx(m_hMenu,TPM_LEFTBUTTON|TPM_RETURNCMD ,point.x,point.y,GetParent()->m_hWnd,0);
可uRetID的返回值总是0,
我用下面的函数
GetMenuString(m_hMenu,uRetID,string,20,MF_BYPOSITION);
得到的string总是菜单的第一项文本,不管我选择的是那项
...全文
43 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
beyondtkl 2003-10-20
  • 打赏
  • 举报
回复
楼主 这样问 应该不是通过向导来做的吧.
那就应该向 wangjinwang(王进) 说的那样做了.
wuxfBrave 2003-10-20
  • 打赏
  • 举报
回复
void CMy1Dlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;
menu.LoadMenu(IDR_MENU_TEST);
CMenu *pMenu = menu.GetSubMenu(0);
int nRet = TrackPopupMenuEx(pMenu->m_hMenu,TPM_LEFTBUTTON|TPM_RETURNCMD ,point.x,point.y, m_hWnd,0);
TRACE("You Select nRet %d\r\n", nRet);
}
我也试了一下,可以的,是不是其它的原因阿
maoxianwang 2003-10-19
  • 打赏
  • 举报
回复
还是用 TrackPopupMenu 吧

你看看是不是你没有 EnableMenuItem 吧??
孤必有邻 2003-10-19
  • 打赏
  • 举报
回复
1、选择项不会在弹出菜单函数调用时返回
2、如果菜单是在资源中定义的,直接通过ClassWizard添加对应的处理函数即可
3、如果不想或不能添加处理函数,可以重载OnCommand函数,其中的参数一wParam就是菜单ID
baixiaojun 2003-10-18
  • 打赏
  • 举报
回复
试了,不行
问题在于uRetID的值总为0,如果我将
GetMenuString(m_hMenu,uRetID,string,20,MF_BYPOSITION);
改为
GetMenuString(m_hMenu,5,string,20,MF_BYPOSITION);
就会得到第5项的值


flyelf 2003-10-18
  • 打赏
  • 举报
回复
GetMenuString(m_hMenu,uRetID,string,20,MF_BYPOSITION);--->
GetMenuString(m_hMenu,uRetID,string,20,MF_BYCOMMAND);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧