关于 Launch Button
就是面板上右下角那个小小的带箭头的小按钮
曾经刚学编程的时候,这个问题困扰了很久,直到有一天去看了 MFC Ribbon 源码。
因为这个按钮并不能直接在 Ribbon 编辑器里搞定, 应该有很多人会遇到跟我一样的问题
幸运的是 MFC Ribbon 提供了这个按钮,可以直接使用代码来启用它
启动方式一,以代码的方式
在 CMFCRibbonBar 控件初始化之后, 调用对应 CMFCRibbonPanel::EnableLaunchButton() 方法
// 找到 Panel
auto panel = m_wndRibbonBar.GetCategory(1)->GetPanel(0);
// 启用 LaunchButton
panel->EnableLaunchButton(ID_VIEW_OPTION);
必须要在 resource.h 里定义 ID_VIEW_OPTION
// 在 Resource.h 中
#define ID_VIEW_OPTION 308
启用方法二, 编辑界面定义文件
Ribbon XML 序列化,CMFCRibbonConstructor 和 CMFCRibbonInfo 也提供了完整的功能支持, 仅仅是编辑器没有提供编辑功能, 那我们可以通过编辑器背后的 Ribbon 资源定义文件中启用它
在解决方案资源管理器中找到 ribbon.mfcribbon-ms 文件,打开它, 是一个 XML 格式的文件, 但是所有的内容只有一行,在 Visual Studio 里按下 Ctrl + K, F 可以格式化换行, 然后找到对应的 Panel 元素节点
<PANELS>
<PANEL>
<ELEMENT_NAME>Panel</ELEMENT_NAME>
<NAME>剪贴板</NAME>
<KEYS>D</KEYS>
<INDEX>1</INDEX>
<JUSTIFY_COLUMNS>FALSE</JUSTIFY_COLUMNS>
<CENTER_COLUMN_VERT>FALSE</CENTER_COLUMN_VERT>
<ELEMENTS>
...
</ELEMENTS>
<PANELS>
增加 BUTTON_LAUNCH 元素
<PANELS>
<PANEL>
<ELEMENT_NAME>Panel</ELEMENT_NAME>
<NAME>剪贴板</NAME>
<KEYS>D</KEYS>
<INDEX>1</INDEX>
<JUSTIFY_COLUMNS>FALSE</JUSTIFY_COLUMNS>
<CENTER_COLUMN_VERT>FALSE</CENTER_COLUMN_VERT>
<ELEMENTS>
...
</ELEMENTS>
<BUTTON_LAUNCH>
<ELEMENT_NAME>Button_Launch</ELEMENT_NAME>
<ID>
<NAME>ID_VIEW_OPTION</NAME>
<VALUE>308</VALUE>
</ID>
<KEYS>S</KEYS>
</BUTTON_LAUNCH>
<PANELS>
同样必须在 resource.h 里定义 ID_VIEW_OPTION , 值必须和 XML 里的 VALUE 节点值一样
// 在 Resource.h 中
#define ID_VIEW_OPTION 308
如何响应按钮事件
和一般的按钮一样, 使用类向导添加就行了