新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论.NET,C#,ASP,VB技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Dot NET,C#,ASP,VB 』 → VS 2010与Windows7共舞  又见Ribbon 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 9119 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: VS 2010与Windows7共舞  又见Ribbon 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 Dot NET,C#,ASP,VB 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客楼主
    发贴心情 

    现在我们就可以编译这个项目,我们会得到一个常规菜单式界面的普通Windows应用程序。这种呆板的界面是不是有些看得厌烦了呢?现在,我们就来为这个应用程序改头换面,添加上时尚的Ribbon界面。在上文中,我们已经介绍过Ribbon界面的描述是通过xml文件来实现的,所以我们新添加一个XML文件到项目中,然后将其编辑如下:

    <Application xmlns="http://schemas.microsoft.com/windows/2009/Ribbon">
      <Application.Commands>
        <Command Name="TabHome" Symbol="cmdTabHome" Id="30000" />
      </Application.Commands>
      <Application.Views>
        <Ribbon>
          <Ribbon.Tabs>
            <Tab CommandName="TabHome">
            </Tab>
          </Ribbon.Tabs>
        </Ribbon>
      </Application.Views>
    </Application>

      在这个XML文件中我们可以看到,整个XML文件被分成了两个部分:命令(Commands)和视图(Views)。命令部分会定义各个控件的属性,包括命令的名字(Name),符号(Symbol),标签文本,图标,命令提示等等。这里需要特别注意的是,控件的名字会在下面的视图部分用到,用来指示同一个控件,而控件的符号,则会在对控件消息进行处理时用到,用来指示消息来自哪一个控件。一个更加完整的命令部分看起来像下面这个样子:

    <Application.Commands>
      <!--Tab页面-->
      <Command Name="TabHome" Symbol="cmdTabHome" Id="30000" LabelTitle="主页" />
      <!--主要分组-->
      <Command Name="GroupMain" Symbol="cmdGroupMain" Id="30001" LabelTitle="组控件"/>
      <Command Name="MyButton" Symbol="cmdMyButton" Id="30002" LabelTitle="按钮控件">
        <Command.TooltipTitle>按钮控件</Command.TooltipTitle>
        <Command.TooltipDescription>点击这个按钮控件,获得当前系统时间。</Command.TooltipDescription>
        <Command.LargeImages>
          <Image Source="Button_Image.bmp"/>
        </Command.LargeImages>
        <Command.SmallImages>
          <Image Source="Button_Image.bmp"/>
        </Command.SmallImages>
      </Command>
    </Application.Commands>

      在这段代码中,我们定义了一个Tab分页TabHome,然后定义了一个分组GroupMain,最后,我们还定义了一个按钮MyButton,同时定义了这个按钮的标签文本,工具提示,大小图标等。

      XML文件的命令部分负责控件的定义,而在视图部分,则是将上面定义的各种命令进行布局,将他们组织到各种控件容器中去,比如分页,分组,工具栏和应用程序菜单等等。同时,视图部分还负责将控件跟各个具体的控件类型绑定起来。一个完整的视图部分看起来像这个样子:

    <Application.Views>
          <Ribbon>
            <Ribbon.Tabs>
              <Tab CommandName='TabHome'>
                <Group CommandName='GroupMain' SizeDefinition='OneButton'>
                  <Button CommandName='MyButton'/>
                </Group>
              </Tab>
            </Ribbon.Tabs>
          </Ribbon>
        </Application.Views>

      上面的XML文件很好地反映了控件之间的嵌套关系:Tab页面包含一个分组,而这个分组又包含一个按钮控件。这样,我们就将我们在命令部分定义的各个控件布局到了Ribbon面板上。

    编译Ribbon界面定义文件

      完成Ribbon界面定义文件的编辑后,我们需要用UICC.exe将其编译成一种优化后的二进制格式和一个我们通常所用的.rc文件。同时,一个包含了所有控件声明的头文件也会一并产生。这里需要说明的是,UICC.exe是随着Windows 7 SDK一同发布的,要正确地使用UICC.exe,你需要首先正确的安装Windows 7 SDK。

      为了完成Ribbon界面定义文件的编译,我们必须定义xml文件的自定义编译过程。在xml文件的属性对话框中,指定其自定义编译命令

    uicc.exe  ribbonmarkup.xml  ribbonmarkup.bml /header:ribbonres.h /res:ribbonres.rc

      同时,指定其编译输出为:

    ribbonmarkup.bml ribbonres.rc ribbonres.h

      按此在新窗口浏览图片
    图5 Ribbon界面定义文件的自定义编译

      这样,我们在编译解决方案的时候,UICC.exe会 将XML文件编译成二进制的BML文件和头文件.h和.rc资源文件的过程。而这些编译输出,都是我们将在后面用到的。

      按此在新窗口浏览图片
    图6 UICC.exe的编译输出

      最后,我们需要将编译生成的.rc资源文件引入到我们项目的资源文件中,在项目的资源文件中插入新编译生成的.rc文件,这就表示我们可以使用Ribbon界面定义文件中定义的各种控件作为界面资源了。

    /////////////////////////////////////////////////////////////////////////////
    //
    // 插入新的Ribbon界面资源定义文件
    #include "ribbonres.rc"
    // Icon

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/11/9 17:21:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Dot NET,C#,ASP,VB 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/21 4:10:50

    本主题贴数4,分页: [1]

     *树形目录 (最近20个回帖) 顶端 
    主题:  VS 2010与Windows7共舞  又见Ribbon(3764字) - 卷积内核,2009年11月9日
        回复:  在应用程序的主函数_tWinMain中,进行COM的初始化和调用完成后的释放: int A..(2215字) - 卷积内核,2009年11月9日
        回复:  [B]为Ribbon界面创建宿主对象[/B]   以上的步骤,我们只是完成了Ribbon界面资..(4201字) - 卷积内核,2009年11月9日
        回复:  现在我们就可以编译这个项目,我们会得到一个常规菜单式界面的普通Windows应用程序。这种呆板的界..(4015字) - 卷积内核,2009年11月9日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    56.641ms