偶觉得挺难的一个右键菜单的问题,有兴趣的请看看

unicode 2006-06-04 01:28:34
有一个函数OnRButtonDown,用于弹出右键菜单,现在的问题是,在该函数调用还没有结束前,有什么简单的方法能判断用户有没有执行右键菜单里的功能?谢谢
...全文
310 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
unicode 2006-06-06
  • 打赏
  • 举报
回复
to striking(硬撑者) :多谢了
目前我就是这样来调用的,不过我的消息流程很复杂,还是有点问题。
but anyway, thanks a lot.
striking 2006-06-05
  • 打赏
  • 举报
回复
unicode(衣不如新,人不如故)
你要根据返回值,判断返回的是菜单的哪个id, 然后相应调用函数。

如 CMenu * pSubmenu = menu.GetSubMenu(0);
int nRet = pSubmenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON|TPM_RETURNCMD,
point.x,point.y, this);
switch(nRet)
{
case ID_MENU1:
OnMenu1();
break;
default:
break;
}
miladuo 2006-06-05
  • 打赏
  • 举报
回复
设置一变量,执行过就将变量改变,在执行前判断该变量。
vcPlayer 2006-06-05
  • 打赏
  • 举报
回复
我观LZ的意思好像是一个菜单响应的问题啊!何不在MFC中直接映射消息就得了?非得搞一个“二传手”不可么?

ID of "Add" in pop-up-menu: POPMENU_ADD

In your application's framework, select "Class wizard"->"Message Map" page, choose

which class would translate the message, select POPMENU_ADD, double-

click "COMMAND", this will add OnPopmenuAdd() function in the class which you just

selected, put your code in this function.
unicode 2006-06-05
  • 打赏
  • 举报
回复
to striking(硬撑者):
加了参数TPM_RETURNCMD后,就不执行菜单功能了
striking 2006-06-04
  • 打赏
  • 举报
回复
If you specify TPM_RETURNCMD in the uFlags parameter, the return value is the menu-item identifier of the item that the user selected. If the user cancels the menu without making a selection, or if an error occurs, then the return value is zero.
striking 2006-06-04
  • 打赏
  • 举报
回复
弹出参数加上TPM_RETURNCMD, 如

CMenu * pSubmenu = menu.GetSubMenu(0);
int nRet = pSubmenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON|TPM_RETURNCMD,
point.x,point.y, this);

根据nRet判断是否有点击菜单,如果有点击菜单, nRet返回菜单的ID值
unicode 2006-06-04
  • 打赏
  • 举报
回复
楼上的理解错了,这个变量要求在进行功能函数前设好,如
CSampleView::OnRButtonDown()
{
.....

pMenu->TrackPopupMenu();

if( 用户点击执行了功能Add())
m_bFlag = true;
else
m_bFlag = false;

''''
}
CSampleView::Add()
{
if( m_bFlag)
.....
else
......
}
gudulyn 2006-06-04
  • 打赏
  • 举报
回复
定义一个标记
BOOL flag;
在菜单选项功能函数中:
flag = TRUE;
OnRButtonDown中在菜单没有弹出的地方flag = FALSE;
函数结束时判断flag 就可以了。
最简单的逻辑了。
superhero162 2006-06-04
  • 打赏
  • 举报
回复
用一个变量记录操作右键菜单的状态
unicode 2006-06-04
  • 打赏
  • 举报
回复
请问syy64(太平洋) ( ) 信誉:145 :
该怎么判断?我在OnRButtonDown里设置了一个变量,该变量会根据有没有执行菜单功能来相应设置,并且要在执行前设置好
syy64 2006-06-04
  • 打赏
  • 举报
回复
加一个BOOL类的变量判断就行。
lyl_rabbit 2006-06-04
  • 打赏
  • 举报
回复
弹出菜单后,程序会自动向下执行,与点击菜单并响应是两回事

15,975

社区成员

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

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