怎么显示右键弹出菜单?

tjroamer 2003-02-01 04:10:22
1。我在用appwizard自动生成了一个单文档程序,怎么显示一个右键弹出菜单啊,我试了一下,可是显示不出来,只显示出来我自己建立的菜单的边缘。

程序如下:
void CMfcSDocView::OnRButtonDown(UINT nFlags, CPoint point)
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CPoint pt;
GetCursorPos(&pt);
menu.TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
menu.DestroyMenu();

CView::OnRButtonDown(nFlags, point);
}

2。在上面这个命令处理函数中,point这个参数为什么是针对全屏幕的?如果屏幕不是全屏的,出现的位置就不对,只有自己得到当前的光标的位置,这样这个函数这个参数是不是就失去了它本身的意义?
...全文
322 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhuohua 2003-02-01
  • 打赏
  • 举报
回复
做成这种弹出菜单
---------|
文件->,,,|
编辑->,,,|
帮助->...|
---------|
tjroamer 2003-02-01
  • 打赏
  • 举报
回复
望赐教!
tjroamer 2003-02-01
  • 打赏
  • 举报
回复
kingcom_xu(我的刀是杀不了人的) ,不好意思,你的也是对的,不过好像处理上下文菜单就是响应WM_CONTEXTMENU消息的吧,那用右键的消息是不是有点不大专业啊?
tjroamer 2003-02-01
  • 打赏
  • 举报
回复
small_wei(small) 谢谢你,可以的!
我再请问一个问题,那上下文菜单应该设置成什么形式,我试了一下,好像第一个弹出菜单的文本没有办法显示,只是显示了这个弹出菜单下面的弹出项而已。我想应该有标准的弹出菜单的设置方法的,请问是什么?是不是弹出菜单不应该写文本啊,只要下面弹出项就可以了,谢谢!
kingcom_xu 2003-02-01
  • 打赏
  • 举报
回复

2。在上面这个命令处理函数中,point这个参数为什么是针对全屏幕的?如果屏幕不是全屏的,出现的位置就不对,只有自己得到当前的光标的位置,这样这个函数这个参数是不是就失去了它本身的意义?

这个问题可用 ClientToScreen(&point);来解决
CMenu menu;
menu.LoadMenu(IDR_MENU1);
ClientToScreen(&point);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON, point.x, point.y, this);
menu.DestroyMenu();
CView::OnRButtonDown(nFlags, point);

kingcom_xu 2003-02-01
  • 打赏
  • 举报
回复
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CPoint pt;
GetCursorPos(&pt);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
menu.DestroyMenu();

可以的...绝对没问题...看看你的资源里有没有ID为IDR_MENU1的菜单
small_wei 2003-02-01
  • 打赏
  • 举报
回复
响应WM_CONTEXTMENU消息:
void youview::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu pMenu1;
pMenu1.LoadMenu(IDR_MENU1);

CMenu* pMenu = pMenu1.GetSubMenu(0);
//pMenu->AppendMenu(MF_POPUP,0,"aaa");
pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
}
tjroamer 2003-02-01
  • 打赏
  • 举报
回复
试了一下,不行啊,一般右键弹出菜单试怎么编程的啊?我照书上说的编的,出不来啊,急!!!
kingcom_xu 2003-02-01
  • 打赏
  • 举报
回复
try this:

CMenu menu;
menu.LoadMenu(IDR_MENU1);
CPoint pt;
GetCursorPos(&pt);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
menu.DestroyMenu();

tjroamer 2003-02-01
  • 打赏
  • 举报
回复
怎么没有人啊,给我解答,我多给分噢

15,979

社区成员

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

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