有关Ribbon界面,如何让鼠标点击左上角那个圆形图标按钮不响应菜单

时间:2022-05-01 19:56:14
写一个SDI程序,比较喜欢尝鲜,所以用了Ribbon风格,对左上角那个圆形菜单按钮情有独衷,但程序较为简单,用不到那个,想让此按钮不响应菜单命令,即鼠标移动过去正常变色,但只能实现双击关闭程序单击无事件响应,这样的功能该重写哪个地方的代码呢?请教达人指点一下。

12 个解决方案

#1


没有做个这个,截取消息可以么?

#2


这个是CMFCRibbonApplicationButton , 你里面没有任何菜单或者添加任何项,AddMainCategory不要使用, 就不会有单击的出来了。

当然, 你也可以重载此类, 然后在它里面禁用。

#3


引用 2 楼 muzizongheng 的回复:
这个是CMFCRibbonApplicationButton , 你里面没有任何菜单或者添加任何项,AddMainCategory不要使用, 就不会有单击的出来了。

当然, 你也可以重载此类, 然后在它里面禁用。


谢谢,果然有效。 话说VS2008SP1里做Ribbon开发比较麻烦啊,是不是升级为vs2010要方便一些?

#4


引用 3 楼 nemyth 的回复:
引用 2 楼 muzizongheng 的回复:

这个是CMFCRibbonApplicationButton , 你里面没有任何菜单或者添加任何项,AddMainCategory不要使用, 就不会有单击的出来了。

当然, 你也可以重载此类, 然后在它里面禁用。


谢谢,果然有效。 话说VS2008SP1里做Ribbon开发比较麻烦啊,是不是升级为vs2010要方便一些?


这个话题我已经回复好多次了, lz可以google啊。
vs2010的ribbon添加了ribbon资源,有ribbon界面编辑器, 因此不用动态调用addcatory/addProperty类似的函数。 直接拖动ribbon元素就可以了。 和普通dlg的控件拖动没有区别, 因此很方便。

关键看你机器配置了。 建议你等vs2010 的 sp1出来后试用, 现在sp1正在beta, 不久就会出来。

#5


引用 4 楼 muzizongheng 的回复:
引用 3 楼 nemyth 的回复:
引用 2 楼 muzizongheng 的回复:

这个是CMFCRibbonApplicationButton , 你里面没有任何菜单或者添加任何项,AddMainCategory不要使用, 就不会有单击的出来了。

当然, 你也可以重载此类, 然后在它里面禁用。


谢谢,果然有效。 话说VS2008SP1里做Ribbon开发比较麻烦啊,……


还有一个问题,如何让程序启动时 RibbonBar是最小化状态呢,就是 功能区最小化 默认是打钩的。另外,如果想实现点击Category实现的是传统菜单的效果该如何做(目的也是禁止显示功能区,以防遮盖客户区子对话框。)?

#6


最后一个问题已经自行解决了。就是想知道如何设置程序启动时RibbonBar是最小化状态。

#7


引用 6 楼 nemyth 的回复:
最后一个问题已经自行解决了。就是想知道如何设置程序启动时RibbonBar是最小化状态。


新开个贴吧。 哈哈。

#8


m_wndRibbonBar.SetMaximizeMode(FALSE);

给你代码吧。 

#9


void ToggleMimimizeState();
 

#10


这个ToggleMinimizeState()我google查到了,没有我的MSDN里没有Ribbon相关的类,真不方便。但此函数试了一下,放在了MainFrm里的InitRibbon函数里,却没有效果。

#11


引用楼主 nemyth 的回复:
写一个SDI程序,比较喜欢尝鲜,所以用了Ribbon风格,对左上角那个圆形菜单按钮情有独衷,但程序较为简单,用不到那个,想让此按钮不响应菜单命令,即鼠标移动过去正常变色,但只能实现双击关闭程序单击无事件响应,这样的功能该重写哪个地方的代码呢?请教达人指点一下。



 你好 问一下 菜单按钮怎么设置的无响应呢 ?

#12


引用 10 楼 nemyth 的回复:
这个ToggleMinimizeState()我google查到了,没有我的MSDN里没有Ribbon相关的类,真不方便。但此函数试了一下,放在了MainFrm里的InitRibbon函数里,却没有效果。

放在OnCreate最后面即可了

#1


没有做个这个,截取消息可以么?

#2


这个是CMFCRibbonApplicationButton , 你里面没有任何菜单或者添加任何项,AddMainCategory不要使用, 就不会有单击的出来了。

当然, 你也可以重载此类, 然后在它里面禁用。

#3


引用 2 楼 muzizongheng 的回复:
这个是CMFCRibbonApplicationButton , 你里面没有任何菜单或者添加任何项,AddMainCategory不要使用, 就不会有单击的出来了。

当然, 你也可以重载此类, 然后在它里面禁用。


谢谢,果然有效。 话说VS2008SP1里做Ribbon开发比较麻烦啊,是不是升级为vs2010要方便一些?

#4


引用 3 楼 nemyth 的回复:
引用 2 楼 muzizongheng 的回复:

这个是CMFCRibbonApplicationButton , 你里面没有任何菜单或者添加任何项,AddMainCategory不要使用, 就不会有单击的出来了。

当然, 你也可以重载此类, 然后在它里面禁用。


谢谢,果然有效。 话说VS2008SP1里做Ribbon开发比较麻烦啊,是不是升级为vs2010要方便一些?


这个话题我已经回复好多次了, lz可以google啊。
vs2010的ribbon添加了ribbon资源,有ribbon界面编辑器, 因此不用动态调用addcatory/addProperty类似的函数。 直接拖动ribbon元素就可以了。 和普通dlg的控件拖动没有区别, 因此很方便。

关键看你机器配置了。 建议你等vs2010 的 sp1出来后试用, 现在sp1正在beta, 不久就会出来。

#5


引用 4 楼 muzizongheng 的回复:
引用 3 楼 nemyth 的回复:
引用 2 楼 muzizongheng 的回复:

这个是CMFCRibbonApplicationButton , 你里面没有任何菜单或者添加任何项,AddMainCategory不要使用, 就不会有单击的出来了。

当然, 你也可以重载此类, 然后在它里面禁用。


谢谢,果然有效。 话说VS2008SP1里做Ribbon开发比较麻烦啊,……


还有一个问题,如何让程序启动时 RibbonBar是最小化状态呢,就是 功能区最小化 默认是打钩的。另外,如果想实现点击Category实现的是传统菜单的效果该如何做(目的也是禁止显示功能区,以防遮盖客户区子对话框。)?

#6


最后一个问题已经自行解决了。就是想知道如何设置程序启动时RibbonBar是最小化状态。

#7


引用 6 楼 nemyth 的回复:
最后一个问题已经自行解决了。就是想知道如何设置程序启动时RibbonBar是最小化状态。


新开个贴吧。 哈哈。

#8


m_wndRibbonBar.SetMaximizeMode(FALSE);

给你代码吧。 

#9


void ToggleMimimizeState();
 

#10


这个ToggleMinimizeState()我google查到了,没有我的MSDN里没有Ribbon相关的类,真不方便。但此函数试了一下,放在了MainFrm里的InitRibbon函数里,却没有效果。

#11


引用楼主 nemyth 的回复:
写一个SDI程序,比较喜欢尝鲜,所以用了Ribbon风格,对左上角那个圆形菜单按钮情有独衷,但程序较为简单,用不到那个,想让此按钮不响应菜单命令,即鼠标移动过去正常变色,但只能实现双击关闭程序单击无事件响应,这样的功能该重写哪个地方的代码呢?请教达人指点一下。



 你好 问一下 菜单按钮怎么设置的无响应呢 ?

#12


引用 10 楼 nemyth 的回复:
这个ToggleMinimizeState()我google查到了,没有我的MSDN里没有Ribbon相关的类,真不方便。但此函数试了一下,放在了MainFrm里的InitRibbon函数里,却没有效果。

放在OnCreate最后面即可了