制作com接口的ie工具栏有下拉按钮,点击按钮弹出菜单,如何响应菜单消息? 制作com接口的ie工具栏有下拉按钮,点击按钮弹出菜单,如何响应菜单消息? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ::TrackPopupMenu(hOldMenu,TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD, rc.left , rc.bottom ,0,m_hWnd,NULL); 请问和这个函数有关系吗?该工具栏中的按钮,下拉小箭头的消息我都可以处理,,就是没不知道怎么处理弹出菜单? CPoint ptDown;HMENU hMenu;hMenu=CreatePopupMenu();AppendMenu(hMenu, MF_STRING, 1, "添加");AppendMenu(hMenu, MF_SEPARATOR, 0, "");AppendMenu(hMenu, MF_STRING, 2, "删除");GetCursorPos(&ptDown);reval=TrackPopupMenu(hMenu,TPM_TOPALIGN | TPM_RETURNCMD,ptDown.x,ptDown.y,NULL,m_hWnd,NULL); switch(reval) { case 1: //添加 break; case 2: //删除 break; } 原来是TrackPopupMenu的问题。学习一下,作个记号。 可能我没说明白,,菜单是可以正常弹出来的,关键是如何响应菜单项的消息,TrackPopupMenu都没问题我这是用com接口做的一个停靠在ie里的工具栏,是一个浏览器插件,,查了一下资料,说是atl的消息映射和mfc不一样,那么atl该用什么做菜单的消息映射?我试过COMMAND_ID_HANDLER(ID_MENUITEM32768,Onmenuchick)但是在没有响应,,,,,,,,,,,,大家有没有了解这个的??? 菜单右键菜单有两种方式,一种是直接通过TrackPopupMenu的返回值,一种是通过菜单消息。我上面说的是第一种方式,直接通过返回值来判断选择了哪一个菜单单项。 如果想使用响应消息的方式(即第二种),那在使用TrackPopupMenu函数时不能设置TPM_RETURNCMD参数,而要设置TPM_NONOTIFY参数,且m_hWnd不能为空。 fengrx::你说的完全正确,谢谢。我这里返回的是资源ID,,,应该是一样的稍后就结贴,,,我研究一下怎么给分再次感谢 如何将时间保存入数据库中 vc进度条数据处理时间不确定,该如何控制进度条 MFC高手进来看看怎么实现这个功能???? datagrid只能设置表格的背景色和前景色,想改变边框的颜色怎么办? ATL/WTL中如何进行网络编程? 哪位大侠知道修改(替换,移动)别人程序中图片的方法!! 指教 如何使CListCtrl中的分割线可以用鼠标拖动?高手请教 DLL调用DLL的问题 vector是否有回收机制 vc群,30112476,欢迎加入,暂时还没有人。人会越来越多 怎么学好编程?
rc.left , rc.bottom ,0,m_hWnd,NULL); 请问和这个函数有关系吗?该工具栏中的按钮,下拉小箭头的消息我都可以处理,,就是没不知道怎么处理弹出菜单?
HMENU hMenu;
hMenu=CreatePopupMenu();
AppendMenu(hMenu, MF_STRING, 1, "添加");
AppendMenu(hMenu, MF_SEPARATOR, 0, "");
AppendMenu(hMenu, MF_STRING, 2, "删除");
GetCursorPos(&ptDown);
reval=TrackPopupMenu(hMenu,TPM_TOPALIGN | TPM_RETURNCMD,ptDown.x,ptDown.y,NULL,m_hWnd,NULL);
switch(reval)
{
case 1:
//添加
break;
case 2:
//删除
break;
}
我试过COMMAND_ID_HANDLER(ID_MENUITEM32768,Onmenuchick)
但是在没有响应,,,,,,,,,,,,大家有没有了解这个的???
我上面说的是第一种方式,直接通过返回值来判断选择了哪一个菜单单项。
再次感谢