MFC之CMFCToolBar 使用ReplaceButton替换CMFCToolBarMenuButton控件 点击按钮弹出菜单问题

26 篇文章 47 订阅 ¥29.90 ¥99.00
在MFC单文档项目中,为了优化CMFCToolBar,将多个相同功能的按钮整合到一个按钮下。通过点击按钮弹出合并选项,遇到点击位置限制和选中子菜单图标同步的问题。解决方案包括:点击按钮任何位置都能弹出菜单,通过按钮ID获取索引并调用OpenPopupMenu()方法;选中子菜单时,根据ID找到对应按钮,替换其图标以保持一致。
摘要由CSDN通过智能技术生成

简述

        最近使用MFC单文档做了一个项目,需要用到CMFCToolBar由于自己的按钮是在太多了,所以又把相同的按钮归类也就是把相同的按钮放在一个按钮下,在点击这个按钮的时候弹出合并的所有选项。

问题

        问题1:在我点击有下拉项的按钮右侧(三角符号部分)时才会弹出菜单,我现在需要的是只要在这个按钮内不管我点击哪里都可以弹出这个菜单项,查了很久终于让我无意间测试出来了,具体为:通过当前下拉项的ID获取当前按钮在工具栏的索引,然后通过索引获取到Button,需要转换为CMFCToolBarMenuButton 类型,然后条用函数OpenPopupMenu()则可以弹出按钮。

    int index = m_wndToolBar.CommandToIndex(ID_TOOLBAR_FIVE);
    ((CMFCToolBarMenuButton *)m_wndToolBar.GetButton(index))->OpenPopupMenu();

        问题2:在选中第几项子菜单时我需要把当前的子菜单的图标设置为当前按钮的图标,具体为:这里也是通过当前下拉项的I

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ilson_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值