Merlyn

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

关于 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

如何响应按钮事件

和一般的按钮一样, 使用类向导添加就行了

posted on 2019-06-24 18:40  Merlyn  阅读(357)  评论(0编辑  收藏  举报