Ribbon是类似于office2007样式的界面,它替代了传统的MFC程序里的菜单和工具栏

MFC默认生成的Ribbon功能少,需要我们自己添加一些控件和图片等元素使界面好看

看下面的一个界面,是VC2010示例里的

看到它与默认Ribbon样式的区别:

工具自己设计,MFC提供的Ribbon控件基本都用上了;图片(位图)也是原资源没有的

那到底怎么实现呢?

可以注意到的是:类别由面板组成,面板由按钮或文本编辑框或进度条等控件组成

按钮都是有图片和文字组成,按钮通过按钮集合可以产生类似于下拉菜单的作用

观察这些按钮,可以发现有两类:小图标的按钮和大图标的按钮

小图标:像素16×16,32位

大图标:像素32×32,32位

关键问题是如何制作这些BitMap以及如何将他们加载到Ribbon界面中。

1.制作工具栏BitMap

在网上找了IconWorkshop这个软件,很好用,可以制作icon图标,也可以用多个icon图标制作位图BitMap。这正是我想要的功能

自己不会美工,所以在网上找了些素材,做了以下一个工具栏样的32×32像素32位的BitMap

看到木有,跟程序默认生成的几个位图很像啊,内牛满面啊

将这个位图加载到资源中,ID改为IDB_BIG

2.修改Ribbon内的按钮图标

首先,修改类别属性,Large Images和Small Images,Large Images就是大图标,Small Images是小图标。在Large Images中的下拉菜单中选择IDB_BIG

然后修改面板中的按钮属性,在Large Images属性选项中选择一个合适的图标即可

小图标也是一样的道理,修改各自Small Images属性即可

3.实现下拉菜单

按钮属性中有个行为的属性,在里面添加相应的菜单(或间隔符)即完成了类似下拉菜单

还有一些快捷方式的按键(两个向下的箭头、最左上角的图标按钮)也可以设置它们的功能项

我做出来的界面如下所示

4.将按钮ID和菜单上的ID匹配

Ribbon中的菜单ID是不能自己设置的,必须绑定在某个菜单上,对菜单的事件响应就是对响应的Ribbon上按钮的响应,所以按了Ribbon界面上的某个按钮就等同于按钮对应的某个菜单

所以必须将菜单栏也制作完整,给其添加事件消息,将Ribbon中按钮的ID改为对应菜单的ID。菜单不在界面中显示出来不代表它就没用,没它还不行,不知道以后能不能摆脱菜单直接在Ribbon按钮上添加事件。

5.修改最小化工具栏上的图标

上图虽然修改了左上角的按钮图标,但是电脑工具栏上还是现实的MFC图标,使用下面代码进行修改

HICON m_hIcon;
m_hIcon = AfxGetApp()->LoadIcon(IDI_HAHA);
SetIcon(m_hIcon, TRUE); // Set small icon
//SetIcon(m_hIcon, FALSE); // Set big icon

MFC Ribbon界面设计相关推荐

  1. MFC Ribbon界面开发

    转载自: http://msdn.microsoft.com/zh-cn/library/ee851836.aspx 概述 本教程适用于正在开发桌面应用程序并希望利用新的 MFC 功能区框架优势的 M ...

  2. 关于MFC中Ribbon界面如何修改标题属性问题

    最近在工作中,遇到了需要将软件从中文转成英文的问题.通常来说,MFC界面上的控件均可以用SetWindowText来解决.但对于Ribbon,往往不怎么好使.也是从网上找了很多资料,最终总结如下. 先 ...

  3. (转载)VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)...

    上一节中鸡啄米讲了GDI对象之画刷CBrush,至此图形图像的入门知识就讲完了.从本节开始鸡啄米将为大家带来Ribbon界面开发的有关内容.本文先来说说如何创建Ribbon样式的应用程序框架. Rib ...

  4. 计算机网络课程设计,使用MFC实现界面化创建ARP发送与接受程序(一)

    计算机网络课程设计,使用MFC实现界面化创建ARP发送与接受程序(一) 1.实验内容: 利用WinpCap开源库函数,编写程序实现ARP报文的发送和接收 2.实验要求: 利用WINPCAP给出的API ...

  5. 【MFC】Ribbon界面开发(一)

    01.目录 目录 01.目录 02.Ribbon介绍 03.创建第一个Ribbon界面 04.本文小结 02.Ribbon介绍 Ribbon界面就是微软从Office2007开始引入的一种为了使应用程 ...

  6. VS2010/MFC编程入门之一(Ribbon界面开发:创建Ribbon样式的应用程序框架)

    Ribbon界面就是微软从Office2007开始引入的一种为了使应用程序的功能更加易于发现和使用.减少了点击鼠标的次数的新型界面,从实际效果来看,不仅外观漂亮,而且功能直观,用户操作简洁方便. 鸡啄 ...

  7. (转载)VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)...

    上一节中鸡啄米讲了为Ribbon Bar添加控件的方法.本节教程鸡啄米将继续完善前面的实例,讲解一些稍复杂的控件的添加方法,及如何为它们添加消息处理函数. 一.为Ribbon Bar添加更多Ribbo ...

  8. VS2010/MFC编程入门之五十三(Ribbon界面开发:为Ribbon Bar添加控件)

    前面一节中鸡啄米为大家简单介绍了如何创建Ribbon样式的应用程序框架,本节教程就来初步讲讲怎样为Ribbon Bar添加Ribbon控件. VS2010为Ribbon界面开发提供了Ribbon De ...

  9. MFC 基于VLC的视频播放器(三)---界面设计以及对话框接受文件的拖拽

    北京时间23点11分 2018年12月20日 前面已经完成了vlc的环境的搭建,下面便开始真正的编程. 前面的界面是这样的: 理想的界面应该是这样的: 所以添加按钮.进度条和播放列表控件,并且修改好I ...

  10. 【MFC】Ribbon界面开发(二)

    01.目录 目录 01.目录 02.本文内容 03.Ribbon实例 04.本文小结 02.本文内容 前面一节中为大家简单介绍了如何创建Ribbon样式的应用程序框架,本节就来初步聊聊怎样为Ribbo ...

最新文章

  1. 发布新模板-画情画心
  2. Android-Lifecycle超能解析-生命周期的那些事儿
  3. Android 通过http协议数据交互
  4. 3.1.7 封装的应用
  5. tinyMce在线编辑器内JavaScript实现按Ctrl+S无刷新保存
  6. 君士坦丁堡分叉引起的安全问题
  7. mongodb内存映射原理
  8. strcpy,memcpy,memset函数实现
  9. 【记录】idea创建springboot多模块项目
  10. DateTimeFormatter,时间格式化与解析日期或时间
  11. NLP简报(Issue#6)
  12. 配置IIS支持PHP
  13. Oracle查询优化改写技巧与案例总结二
  14. 在线ERD工具DrawERD
  15. IT资源书籍999999999本
  16. 【计算机网络】第九章:应用层
  17. 最新emoji表情代码大全_2020最新霜降早上好祝福语动态表情图片大全带字 温馨的霜降问候语免打字图片...
  18. R语言文本挖掘展示:画词云图
  19. Online Tools
  20. 考研小作文万能模板——17篇

热门文章

  1. LayUI文档和技术支持网站
  2. Json工具 将对象转换为json格式字符串
  3. 镜像光盘如何刻录到U盘
  4. 利用Python的PyPDF2库,根据论文标题批量修改pdf的文件名
  5. 怎么把安装包挂在HTML,怎么把安装包拷贝到u盘
  6. c语言qq聊天刷屏代码大全,QQ聊天刷屏脚本 达人分享技巧
  7. 从零开始的FPGA学习(2)(用三八译码器实现一位全加器)
  8. 北大《人民日报》语料库标准
  9. 《Windows游戏编程大师技巧》一、学海无涯
  10. Shell脚本学习指南(一)——基本概念