运用 VC++ 2010 创建高级 Ribbon 界面详解,包括 Ribbon 界面的结构层次、Ribbon 控件的使用等,ribbon 用户界面,ribbon interface ,ribbon 高级界面,ribbon 界面创建。

在 Ribbon 界面的优势、构成及其创建 中,我们简单地介绍了开发Ribbon界面的一般流程,同时演示了如何创建包含命令按钮(CMFCRibbonButton)的简单Ribbon界面,相信很多朋友都跃跃欲试,想为自己的软件创建专业的Ribbon界面。

但是,仅仅使用命令按钮是远远不能满足软件界面的交互需求的,同时也没有完全发挥Ribbon界面的强大威力。为了支持Ribbon界面,Visual Studio 2010为我们提供了很多控件,除了我们上回介绍的命令按钮(CMFCRibbonButton)之外,还有工具廊(CMFCRibbonGallery),颜色按钮(CMFCRibbonColorButton),编辑框(CMFCRibbonEdit),进度条(CMFCRibbonProgressBar)等。

合理地使用这些控件,我们可以创建丰富的Ribbon界面,增强软件的可用性,本文我们将介绍如何使用这些控件,创建更加复杂的Ribbon界面,完成更加复杂的交互任务。

Ribbon界面的结构层次

1、分类(CMFCRibbonCategory)


图1 分类

很明显,“分类”就是作用相近的一类命令的组合。例如在Word 2007的Ribbon界面中,微软将跟插入元素相关的命令都放在“Insert”这个页面中,当用户想在Word文档中插入其他元素时,只要切换到这一页就可以找到他需要的命令。在形式上,“分类”表现为Ribbon面板上的一个Tab页面。我们可以使用函数AddCategory()在Ribbon面板上添加一个新的“分类”:

<!--
code by 'http://www.desteps.com'
-->以下为引用内容:
// 添加一个命令分组(Category)“RibbonUI Category”
CMFCRibbonCategory *pRibbonUICategory =m_wndRibbonBar.AddCategory(_T("RibbonUI Category"),IDB_WRITESMALL, IDB_WRITELARGE);

2、面板(CMFCRibbonPanel)


图2 面板

“面板”是“分类”的下一个层次。它是联系更加紧密的一组命令的组合。面板总是被放置在某个“分类”中,被“分类”所包含。同时,“面板”又是一个容器,它包含着它的下一个层次“元素”。我们可以通过AddPanel()函数在“分类”中添加新的“面板”:

<!--
code by 'http://www.desteps.com'
-->以下为引用内容:
// 添加一个面板(Panel)
CMFCRibbonPanel *pTestPanel = pRibbonUICategory->AddPanel(_T("RibbonUI Panel"),m_PanelImages.ExtractIcon(1));

3、元素(CMFCRibbonBaseElement)


图3 元素

“元素”就是我们通常意义上的控件、这些控件根据各自的功能,被分组放置在各个“面板”上,负责完成具体的交互任务。Visual Studio 2010提供的Ribbon界面“元素”主要包括命令按钮(CMFCRibbonButton)、工具廊(CMFCRibbonGallery)、颜色按钮(CMFCRibbonColorButton)、编辑框(CMFCRibbonEdit)、进度条(CMFCRibbonProgressBar)等。这些类都派生自CMFCRibbonBaseElement。

VC++ 2010 创建高级Ribbon界面详解(1)的更多相关文章

  1. VC++ 2010 创建高级Ribbon界面详解(4)

    5.辅助控件 除了前面我们介绍的按钮,工具栏,编辑框等基本控件外,为了支持现代软件对丰厚的界面交互方式的要求,Visual Studio 2010还提供了很多其他的辅助控件,例如我们通常会用到的“上一 ...

  2. VC++ 2010 创建高级Ribbon界面详解(3)

    3.工具栏 在传统的菜单式界面中,工具栏作为菜单的有益补充,被广泛使用.我们通过将一些常用命令放置到工具栏上,可以让用户直观而快速地访问到常用功能,提高了效率.在Ribbon界面中,工具栏得到了进一步 ...

  3. VC++ 2010 创建高级Ribbon界面详解(2)

    Ribbon 控件的使用 1.命令按钮 命令按钮可以说是我们最常用的Ribbon控件了,我们通常都是通过命令按钮来发送某个命令,执行某个动作.它代替了过去的菜单命令,成为使用最频繁的Ribbon控件. ...

  4. 【Solr】索引库查询界面详解

    目录 索引库查询界面详解 回到顶部 索引库查询界面详解 q:主查询条件.完全支持lucene语法.还进行了扩展. fq:过滤查询.是在主查询条件查询结果的基础上进行过滤.例如:product_pric ...

  5. NoSQL之Redis高级实用命令详解--安全和主从复制

    Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim ...

  6. EA创建用例图步骤详解

    EA创建用例图步骤详解 1 创建一个项目 2 选择需要的模型 3 新建模型包 4 新建图表 5 新建模型包 6 创建用户角色Actor 7 新建用例 8 关联用户和用例 9 最后整个项目浏览器目录结构 ...

  7. Java线程创建形式 Thread构造详解 多线程中篇(五)

    Thread作为线程的抽象,Thread的实例用于描述线程,对线程的操纵,就是对Thread实例对象的管理与控制. 创建一个线程这个问题,也就转换为如何构造一个正确的Thread对象. 构造方法列表 ...

  8. 通过Cloudera Manager部署CDH5.15.1的webUI界面详解

    通过Cloudera Manager部署CDH5.15.1的webUI界面详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客CDH的部署完全通过Cloudera Mana ...

  9. DB2创建数据库常用参数详解

    转自http://czmmiao.iteye.com/blog/1335801 DB2创建数据库常用参数详解 本文只介绍DB2 create database语法中的常用参数http://publib ...

随机推荐

  1. c# networkcomms 3.0实现模拟登陆总结 转载https://www.cnblogs.com/zuochanzi/p/7039636.html

    最近项目需要做一个客户查询状态系统,当前上位机缺少服务功能,于是找到了networkcomms 开源框架,作为项目使用. 最新版networkcomms 下载地址:https://github.com ...

  2. 自定义npm命令行工具,并发布到www.npmjs.com

    1.自定义一个npm脚本 - 1.新建一个项目(在任何路径都可以); - 2.使用`npm init -y`初始化项目 - 3.新建一个index.js文件,在文件的第一行添加 `#!/usr/bin ...

  3. AVL树,C语言实现,完整代码,先贴上,讲解稍后

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #de ...

  4. PHP定界符<<<的使用方法

    在web编程过程中难免会遇到用echo来输出大段的html和javascript脚本的情况,如果用传统的输出方法——按字符串输出的话,使用PHP肯定要有大量的转义符来对字符串中的引号''/" ...

  5. Neo4j高级应用技术专题系列 - APOC存储过程库-【1】概述

    Neo4j高级应用技术专题系列 - APOC存储过程库-[1]概述 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://bl ...

  6. linux终端命令行缩短显示路径

    1,修改.bashrc文件(用户根目录下) vim 打开.bashrc文件,找到如下这行: else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ...

  7. java 文件读取写入

    public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileB ...

  8. teb教程8

    融合动态障碍物 简介:考虑怎样把其他节点发布的动态障碍物考虑进来 1.本部分演示了动态障碍物该如何被包含到teb_local_planner中. 2.写一个简单的动态障碍物的发布器publish_dy ...

  9. NetCore利用CsvHelper解析支付宝对账单

    支付宝账单是zip压缩文件流,里面包含了两个.csv文件. 1.请求支付宝账单下载链接,获取到zip文件流. var httpClient = _clientFactory.CreateClient( ...

  10. SNAT 和 DNAT

    SNAT是原地址转换,DNAT是目标地址转换. SNAT 内部地址要访问公网上的服务时,内部地址会主动发起连接,将内部地址转换成公有ip.网关这个地址转换称为SNAT 企业内部的主机A想访问互联网上的 ...