社区
界面
帖子详情
为什么不相应右键菜单
zy0016
2004-07-06 08:21:12
打扰各位了,有个问题:
MFC里的,一个自定义类"ListBoxExt",继承自CListBox.
该MFC工程插入一个右键菜单,进入类向导之后提示为这个菜单选择一个类,选择"ListBoxExt",运行程序,菜单正常出现,在菜单上添加一项"删除",用类向导添加处理"删除"动作的处理过程,在这个过程中打断点,调试运行,菜单正常出现,包含"删除"这一项,单击这一项,断点不断,请问这是为什么?
...全文
115
8
打赏
收藏
为什么不相应右键菜单
打扰各位了,有个问题: MFC里的,一个自定义类"ListBoxExt",继承自CListBox. 该MFC工程插入一个右键菜单,进入类向导之后提示为这个菜单选择一个类,选择"ListBoxExt",运行程序,菜单正常出现,在菜单上添加一项"删除",用类向导添加处理"删除"动作的处理过程,在这个过程中打断点,调试运行,菜单正常出现,包含"删除"这一项,单击这一项,断点不断,请问这是为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zy0016
2004-07-07
打赏
举报
回复
给分
zy0016
2004-07-07
打赏
举报
回复
虽然问题还没有解决,但是我非常感谢大家的帮助,这个问题我已经有了一点眉目,谢谢诸位.
zy0016
2004-07-06
打赏
举报
回复
菜单相关代码如下:
BEGIN_MESSAGE_MAP(CListCtrlExt, CListCtrl)
ON_WM_CONTEXTMENU()
//{{AFX_MSG_MAP(CListCtrlExt)
ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
ON_NOTIFY_REFLECT(NM_SETFOCUS, OnSetfocus)
ON_NOTIFY_REFLECT(NM_KILLFOCUS, OnKillfocus)
ON_COMMAND(ID_EDIT_CUT, OnEditCut)//菜单处理函数,ID_EDIT_CUT是一个菜单项的ID
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
......
void CListCtrlExt::OnEditCut()
{
// TODO: Add your command handler code here
AfxMessageBox("test");//选择菜单的这一项,可是什么反映也没有.
}
fanfyj
2004-07-06
打赏
举报
回复
up
zy0016
2004-07-06
打赏
举报
回复
当时确实是调试状态,没有点错按钮,菜单也正常出现.MFC也自动生成了相关的代码:
void CListCtrlExt::OnContextMenu(CWnd*, CPoint point)
{
// CG: This block was added by the Pop-up Menu component
{
if (point.x == -1 && point.y == -1){
//keystroke invocation
CRect rect;
GetClientRect(rect);
ClientToScreen(rect);
point = rect.TopLeft();
point.Offset(5, 5);
}
CMenu menu;
VERIFY(menu.LoadMenu(CG_IDR_POPUP_LIST_CTRL_EXT));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CWnd* pWndPopupOwner = this;
while (pWndPopupOwner->GetStyle() & WS_CHILD)
pWndPopupOwner = pWndPopupOwner->GetParent();
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,
pWndPopupOwner);
}
}
欧 对了,这个菜单所在的控件放置在一个属性页上面,继承的是CPropertyPage类,
class FindChineseFold : public CPropertyPage
是不是和属性页有关系啊?
adamx
2004-07-06
打赏
举报
回复
可能使消息映射不正确吧
蒋晟
2004-07-06
打赏
举报
回复
Track的时候指定让哪个窗口处理菜单命令?你可能需要转发菜单命令到ListBoxExt对象
Pipi0714
2004-07-06
打赏
举报
回复
确定你的删除菜单里面的程序是否执行,没有执行影射不正确,否则调试的时候不要点击叹号哪个按钮
JQUERY
右键
菜单
操作
ContextMenu
右键
菜单
附带源码,js,css 及示例操作 很容易上手,添加一个web
右键
菜单
,并执行
相应
操作。
jquery
右键
弹出
菜单
右键
弹出
菜单
,点击
菜单
得到
相应
的值,填充到文本框中
恢复去除ATI显卡
右键
菜单
注册表项
恢复去除ATI显卡
右键
菜单
注册表项,只需要导入
相应
的注册表文件,就能轻松去除和恢复桌面
右键
中的ATI显卡的
菜单
!
DhtmlxTree-dhtmlxmenu实现在节点上
右键
弹出
菜单
对dhtmlXTree进行一个小的扩展 需求1: 动态生成树形
菜单
,每个节点都有各自的URL地址,单击不同的节点框架页的右侧跳转到该节点所对应的URL。(框架页说明:左边是树形
菜单
;右边是显示页面
相应
信息的页面) 分析: dhtmlXTree提供了很好的添加,删除节点的方法,故选择dhtmlXTree。 但是dhtmlXTree不能满足"每个节点都有各自的URL地址,单击不同的节点框架页的右侧跳转到该节点所对应的URL"这点需求,因次想到了对dhtmlXTree进行一个小的扩展,即在其节点对象原有属性的基础上,再添加两个扩展属性。具体操作如下: 1、找到定义节点对象的那个函数(或方法) function dhtmlXTreeItemObject(itemId,itemText,parentObject,treeObject,actionHandler,mode) 修改为 function dhtmlXTreeItemObject(itemId,itemText,parentObject,treeObject,actionHandler,mode,url,target) 并在方法体中添加赋值语句:this.itemURL=url;this.itemTarget=target; 2、然后修改所有与dhtmlXTreeItemObject有关(直接或者间接相关)的方法: _attachChildNode,insertNewItem,insertNewChild,insertNewNext,_recreateBranch,_parseXMLTree 注:_parseXMLTree方法是与loadXML,loadXMLString相关的。 在这些方法中生成节点的语句中添加
相应
的参数和语句,以支持新添加的属性itemURL,itemTarget。 需求2: 为dhtmlXTree树上的每一个节点添加
右键
菜单
。附:在树上的节点上点
右键
时才会生成
菜单
,空白区域单击时不会生成
菜单
。 分析: 1、用 dhtmlXTree + dhtmlxmenu 实现。 2、 用dhtmlxmenu生成
菜单
的部分代码: var menu = new dhtmlXMenuObject(); menu.setImagePath("imgs/"); menu.setIconsPath("images/"); menu.renderAsContextMenu(); menu.loadXML("dhtmlxmenu.xml?e="+new Date().getTime()); menu.addContextZone("treeboxbox_tree"); menu.addContextZone方法是为了把
菜单
添加到指定区域。 3、dhtmlXTreeObject.prototype._createItem方法是构造树形
菜单
上元素的具体实现方法。看这个方法的具体操作,可以发现它为每一个节点构建了一个table,节点的内容(即名字)放置在一个span中。 4、考虑到dhtmlxmenu实在指定的区域构建
菜单
,所以可以为dhtmlXTree树上的每一个节点添加
右键
事件,在这个
右键
事件里获得该节点对象所对应的区域,然后在这个区域内构建Menu
菜单
。 难点和解决方案: 1、怎样获得dhtmlXTree树上的每一个节点对象所对应的区域?(dhtmlXTreeObject.prototype._createItem方法没有为这个节点的span设置id) 解决方法: 在dhtmlXTreeObject.prototype._createItem方法中添加一个为span设置id的语句: 即: 在itemObject.span=document.createElement('span'); itemObject.span.className="standartTreeRow"; 后,新添加一句 itemObject.span.id="treeNode_"+itemObject.id;//为这个span新增一个Id属性 2、为dhtmlXTree树上的每一个节点添加
右键
事件,在这个
右键
事件里获得该节点对象所对应的区域,然后在这个区域内构建Menu
菜单
。 解决方法: a、为dhtmlXTree树上的每一个节点添加
右键
事件: tree.setOnRightClickHandler(treeOnRegihtClick);//
右键
事件 b、构建Menu
菜单
: var menu = new dhtmlXMenuObject(); function treeOnRegihtClick(id){ alert("
右键
"+" span.id:"+tree.getItem(id).span.id); menu.setImagePath("imgs/"); menu.setIconsPath("images/"); menu.renderAsContextMenu(); menu.loadXML("dhtmlxmenu.xml?e="+new Date().getTime()); menu.addContextZone(tree.getItem(id).span.id);alert("width:"+tree.getItem(id).span.clientWidth); //var X=tree.getItem(id).span.getBoundingClientRect().left; //var Y=tree.getItem(id).span.getBoundingClientRect().top; var X=document.getElementById('mouseXPosition').value;//获得鼠标的横坐标位置 var Y=document.getElementById('mouseYPosition').value;//获得鼠标的纵坐标位置 menu.showContextMenu(X,Y);//调用showContextMenu方法显示
菜单
说明:如果这儿不加上这条语句的话,第一次点击
右键
时只能生成
菜单
,但是显示不出
菜单
,下次点击
右键
Menu
菜单
才能弹出。 //menu._showContextMenu(X,Y,tree.getItem(id).span.id); } c、用 javascript 获取当页面上鼠标(光标)位置 <script type="text/javascript"> // 说明:获取鼠标位置 function mousePosition(ev){ if(ev.pageX || ev.pageY){ return {x:ev.pageX, y:ev.pageY}; } return { x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, y:ev.clientY + document.body.scrollTop - document.body.clientTop }; } document.onmousemove = mouseMove; function mouseMove(ev){ ev = ev || window.event; var mousePos = mousePosition(ev); document.getElementById('mouseXPosition').value = mousePos.x; document.getElementById('mouseYPosition').value = mousePos.y; }
PPTMenueForXML.rar_runningusp_利用vsto在PPT中添加
右键
菜单
利用Ribbonxml配置添加
右键
菜单
,关键是查找到
相应
的idMso,本例子中给出了大部分
右键
菜单
所需要的idMso,大家可以在应用时实验一下
界面
15,980
社区成员
115,900
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章