zoukankan      html  css  js  c++  java
  • 2013 duilib入门简明教程 -- 简单控件介绍 (12)

        前面的教程应该让大家对duilib的整体有所映像了,下面就来介绍下duilib具体控件的使用。
        由于官方没有提供默认的控件样式,所以我就尽量使用win7或者XP自带的按钮样式了,虽然界面比较土鳖,但是想要换成百度杀毒那样的界面,只需要更换图片即可,如果有哪位小伙伴能够提供一些控件样式,那就再好不过啦~
        首先利用一下前面教程的框架,效果图如下:
     
    main.cpp的代码如下:
    class CDuiFrameWnd : public WindowImplBase
    {
    public:
        virtual LPCTSTR    GetWindowClassName() const   {   return _T("DUIMainFrame");  }
        virtual CDuiString GetSkinFile()                {   return _T("duilib.xml");    }
        virtual CDuiString GetSkinFolder()              {   return _T("");  }
    };
     
    int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
    {
        CPaintManagerUI::SetInstance(hInstance);
     
        CDuiFrameWnd duiFrame;
        duiFrame.Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
        duiFrame.CenterWindow();
        duiFrame.ShowModal();
        return 0;
    }

    XML代码如下(由于前面的教程里都一一介绍了各种属性,所以以后的XML就不一一注释了):

    <?xml version="1.0" encoding="UTF-8"?>
    <Window size="800,600" mininfo="600,400" caption="0,0,0,32" sizebox="4,4,4,4">
      <VerticalLayout bkcolor="#FFF0F0F0" bkcolor2="#FFAAAAA0">
        <!-- 标题栏区 -->
        <HorizontalLayout height="32" bkcolor="#FFE6E6DC" bkcolor2="#FFAAAAA0">   
          <VerticalLayout /> 
          <VerticalLayout width="77"> 
              <Button name="minbtn"   tooltip="最小化" float="true" pos="0,5,22,24"  width="23" normalimage=" file='SysBtnMinNormal.bmp' " hotimage=" file='SysBtnMinFocus.bmp' " pushedimage=" file='SysBtnMinFocus.bmp' "/>
              <Button name="maxbtn"   tooltip="最大化" float="true" pos="22,5,44,24" width="23" normalimage=" file='SysBtnMaxNormal.bmp' " hotimage=" file='SysBtnMaxFocus.bmp' " pushedimage=" file='SysBtnMaxFocus.bmp' " />
              <Button name="restorebtn" visible="false" tooltip="还原" float="true" pos="22,5,44,24" width="23" normalimage=" file='SysBtnStoreNormal.bmp' " hotimage=" file='SysBtnStoreFocus.bmp' " pushedimage=" file='SysBtnStoreFocus.bmp' " />
              <Button name="closebtn" tooltip="关闭"   float="true" pos="44,5,74,24" width="28" normalimage=" file='SysBtnCloseNormal.bmp' " hotimage=" file='SysBtnCloseFocus.bmp' " pushedimage=" file='SysBtnCloseFocus.bmp' "/>
            </VerticalLayout>      
        </HorizontalLayout>
      </VerticalLayout>
    </Window>

        前面教程的Hello World就是一个大大的按钮,大家对按钮应该很熟悉了,下面我们来几个按钮样式吧:

    XP默认按钮        
    win7默认按钮     
    百度杀毒                    
    百度卫士                    
      
     
          上述图片资源请点击这里下载,下载后解压到exe目录即可,此时Debug文件夹如下(别忘了前面教程的SysBtn文件夹哦):
      我们先用DuiDesigner添加一些按钮,并且把他们排整齐,如图:
      保存之后就可以看到这几个按钮的pos等属性了,再手动将这几个Button节点加到前面的XML中,并添加图片属性,如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <Window size="800,600" mininfo="600,400" caption="0,0,0,32" sizebox="4,4,4,4">
        <VerticalLayout bkcolor="#FFF0F0F0" bkcolor2="#FFAAAAA0">
            <!-- 标题栏区 -->
            <HorizontalLayout height="32" bkcolor="#FFE6E6DC" bkcolor2="#FFAAAAA0">   
                <VerticalLayout /> 
                <VerticalLayout width="77"> 
                    <Button name="minbtn"   tooltip="最小化" float="true" pos="0,5,22,24"  width="23" normalimage=" file='SysBtnMinNormal.bmp' " hotimage=" file='SysBtnMinFocus.bmp' " pushedimage=" file='SysBtnMinFocus.bmp' "/>
                    <Button name="maxbtn"   tooltip="最大化" float="true" pos="22,5,44,24" width="23" normalimage=" file='SysBtnMaxNormal.bmp' " hotimage=" file='SysBtnMaxFocus.bmp' " pushedimage=" file='SysBtnMaxFocus.bmp' " />
                    <Button name="restorebtn" visible="false" tooltip="还原" float="true" pos="22,5,44,24" width="23" normalimage=" file='SysBtnStoreNormal.bmp' " hotimage=" file='SysBtnStoreFocus.bmp' " pushedimage=" file='SysBtnStoreFocus.bmp' " />
                    <Button name="closebtn" tooltip="关闭"   float="true" pos="44,5,74,24" width="28" normalimage=" file='SysBtnCloseNormal.bmp' " hotimage=" file='SysBtnCloseFocus.bmp' " pushedimage=" file='SysBtnCloseFocus.bmp' "/>
                </VerticalLayout>      
            </HorizontalLayout>
     
            <!-- 客户区 -->
            <HorizontalLayout>
                <Button text="XP"       float="true" pos="20,14,0,0" width="60" height="25" normalimage=" file='BtnStyleXPutton_nor.png' " hotimage=" file='BtnStyleXPutton_over.png' " pushedimage=" file='BtnStyleXPutton_down.png' " focusedimage=" file='BtnStyleXPutton_focus.png' " />
                <Button text="win7"     float="true" pos="20,50,0,0" width="60" height="25" normalimage=" file='BtnStylewin7utton_nor.png' " hotimage=" file='BtnStylewin7utton_over.png' " pushedimage=" file='BtnStylewin7utton_down.png' " focusedimage=" file='BtnStylewin7utton_focus.png' " />
                <Button text="百度杀毒" float="true" pos="20,86,0,0" width="102" height="35" normalimage=" file='BtnStyleBDKVutton_nor.png' " hotimage=" file='BtnStyleBDKVutton_over.png' " pushedimage=" file='BtnStyleBDKVutton_down.png' " />
                <Button                 float="true" pos="20,132,0,0" width="171" height="46" normalimage=" file='BtnStyleBDKV2utton_nor.png' " hotimage=" file='BtnStyleBDKV2utton_over.png' " pushedimage=" file='BtnStyleBDKV2utton_down.png' " />
            </HorizontalLayout>
        </VerticalLayout>
    </Window>

         效果如下:

     
        用鼠标移上去,或者点击一下,看看是不是和系统按钮一样呢^_^
        下面我们介绍一下duilib的另一种特性,那就是可以定制默认样式,这样做有什么好处呢?
        假如我们有10个按钮,按钮样式都一样,如果用之前介绍的方式,则需要在每个Button节点都指定图片背景、宽度、高度等信息,一旦需要改动任何一个属性,则需要在10个按钮里面都改一次,所以为了方便修改,我们可以指定一个默认样式,就算有100个按钮,我们也只需要改一次属性。方法如下:
        给<Window>节点添加一个Default节点即可,其中name属性填写控件的名字,value属性添加控件的属性的值,不过需要将双引号【"】换成【&quot;】,单引号【'】换成【&apos;】,单引号也可以不转换。
    XML如下(由于标题栏基本不再变化,所以后面的教程将省略<!-- 标题栏区 -->那一段XML):
    <Window size="800,600" mininfo="600,400" caption="0,0,0,32" sizebox="4,4,4,4">
        <Default name="Button" value="  height=&quot;25&quot; width=&quot;60&quot; normalimage=&quot;file=&apos;BtnStyleXPutton_nor.png&apos;&quot; hotimage=&quot;file=&apos;BtnStyleXPutton_over.png&apos;&quot; pushedimage=&quot;file=&apos;BtnStyleXPutton_down.png&apos;&quot; focusedimage=&quot;file=&apos;BtnStyleXPutton_focus.png&apos;&quot; " />
        <VerticalLayout bkcolor="#FFF0F0F0" bkcolor2="#FFAAAAA0">
            <!-- 客户区 -->
            <HorizontalLayout>
                <Button text="XP"       float="true" pos="20,14,0,0"  height="25" />
                <Button text="win7"     float="true" pos="20,50,0,0"  height="25" />
                <Button text="百度杀毒" float="true" pos="20,86,0,0"  height="25" />
                <Button                 float="true" pos="20,132,0,0" height="25" />
            </HorizontalLayout>
        </VerticalLayout>
    </Window>

        XML是不是清爽多了呢^_^  注意,这里面要指定height属性,不然会看不到按钮,估计是因为放在了HorizontalLayout水平布局里。(如果是VerticalLayout ,应该是指定width属性,这个只是猜测,暂未验证~(^o^)/~)
        不过你会发现,启动的时候,最小化按钮图片不对了,那是因为最小化按钮没有指定focusedimage属性,所以就用了默认的focusedimage属性,只需要指定一下就行了。
     
        按钮的用法就介绍完啦,大家可以看到UI设计器里面还有下面这些控件,
        其中:
        Control是所有控件的基类,一般放图片啥的就用它了。
        Label和Text是用于放文字的,其中Label的对齐功能比Text要好一些,所以我一般用Label,这个对应于MFC的Static控件。
        Edit显然就是编辑框啦,Button就不用多说了吧~
        上面提到的控件都是简单控件,拖到设计器上就能直观的看到效果,绝大部分属性都和Button一样,就不赘述了,所有控件的所有属性都在【duilib控件 XML属性列表】里有详细说明(不过有一点点遗漏,需要去看源码),下一节将介绍复杂控件。





  • 相关阅读:
    Asp.Net Web API 2第八课——Web API 2中的属性路由
    Asp.Net Web API 2第七课——Web API异常处理
    Asp.Net Web API 2第六课——Web API路由和动作选择
    Asp.Net Web API 2第五课——Web API路由
    开始学习python
    BMI 小程序 购物车
    深浅copy 文件操作
    字典 dict 集合set
    基本数据类型 (str,int,bool,tuple,)
    python 运算符
  • 原文地址:https://www.cnblogs.com/Alberl/p/3344936.html
Copyright © 2011-2022 走看看