1.4 视图
<p>所有的视图都提供了两种方式来控制视图的行为。</p>
<ul>
<li>在XML布局中通过XML属性进行控制</li>
<li>在C++程序代码中通过调用方法进行控制</li>
</ul>
<p>SkinUI推荐使用XML布局文件,而不是C++代码来定义用户界面。实际上,不管使用哪种方式,它们控制SkinUI用户界面行为的本质是一样的。大部分时候,控制UI组件的XML属性都有对应的方法。</p>
<p>CSkinView是所有视图的基类,包含的XML属性和方法所有视图都可以使用。
下面是CSkinView类常用的XML属性和相关方法:</p>
<h3>1 设置组件 Id</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Id=&quot;1001&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetId(LONG nId);</code></pre></li>
</ul>
<h3>2 设置组件文本</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Text=&quot;IDS_OK&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetText(const tstring&amp; strText);</code></pre></li>
</ul>
<h3>3 设置组件简单提示信息</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Tips=&quot;IDS_CLOSE_TIPS&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetTips(const tstring&amp; strTips);</code></pre></li>
</ul>
<h3>4 设置组件复杂提示信息</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">SkinTips=&quot;SkinTips.xml&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetSkinTipsLayout(const tstring&amp; strLayout);</code></pre></li>
</ul>
<h3>5 设置组件复杂提示信息的偏移量</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">SkinTipsOffset=&quot;-10,-10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetSkinTipsOffset(const CPoint&amp; point);</code></pre></li>
</ul>
<h3>6 设置组件是否可见</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Visible=&quot;false&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetVisible(BOOL bVisible);</code></pre></li>
</ul>
<h3>7 设置组件是否可用</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Enable=&quot;false&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetEnable(BOOL bEnabled);</code></pre></li>
</ul>
<h3>8 设置组件是否获得焦点</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Focused=&quot;true&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetFocus(BOOL bFocus);</code></pre></li>
</ul>
<h3>9 设置组件前景图像</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Image=&quot;CheckBox.png&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetImage(const tstring&amp; strImage);</code></pre></li>
</ul>
<h3>10 设置组件前景颜色</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Color=&quot;ID_COLOR_RED&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetColor(const tstring&amp; strColor);</code></pre></li>
</ul>
<h3>11 设置组件边框颜色</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Border=&quot;ID_COLOR_BORDER&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetBorderColor(const tstring&amp; strColor);</code></pre></li>
</ul>
<h3>12 设置组件背景图片</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">BkgImage=&quot;bkg.png&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetBkgImage(const tstring&amp; strImage);</code></pre></li>
</ul>
<h3>13 设置组件背景颜色</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">BkgColor=&quot;ID_COLOR_BKG&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetBkgColor(const tstring&amp; strColor);</code></pre></li>
</ul>
<h3>14 设置组件菜单</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Menu=&quot;EditMenu.xml&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetMenu(const tstring&amp; strMenu);</code></pre></li>
</ul>
<h3>15 设置组件最大宽度</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">MaxWidth=&quot;800&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetMaxWidth(LONG nMaxWidth);</code></pre></li>
</ul>
<h3>16 设置组件最大高度</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">MaxHeight=&quot;600&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetMaxHeight(LONG nMaxHeight);</code></pre></li>
</ul>
<h3>19 设置组件模式</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Mode=&quot;1&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetMode(LONG nMode);</code></pre></li>
</ul>
<h3>20 设置组件接受的拖放类型</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Drag=&quot;File&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetDrag(const vector&lt;UINT&gt;&amp; vecDrag);</code></pre></li>
</ul>
<h3>21 设置组件是否允许被拖动</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">AllowDrag=&quot;true&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetAllowDrag(BOOL bAllow);</code></pre></li>
</ul>
<h3>22 设置组件外边距</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Margin=&quot;5,5,5,5&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutMargin(LayoutMargin layoutMargin);</code></pre></li>
</ul>
<h3>23 设置组件光标</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Cursor=&quot;32513&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetCursor(LONG nCursor);</code></pre></li>
</ul>
<h3>24 设置组件重绘时是否需要重绘整个窗口</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">RedrawOwner=&quot;true&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetRedrawOwner(BOOL bRedrawOwner);</code></pre></li>
</ul>
<h3>25 设置组件重绘时是否需要重绘父组件</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">RedrawParent=&quot;true&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetRedrawParent(BOOL bRedrawParent);</code></pre></li>
</ul>
<h3>26设置该组件的子组件重绘时是否需要重绘该组件</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">RedrawAllChild=&quot;true&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetRedrawAllChild(BOOL bRedrawAllChild);</code></pre></li>
</ul>
<h3>27 设置组件的布局XML文件</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">Layout=&quot;Button.xml&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayout(const tstring&amp; strLayout);</code></pre></li>
</ul>
<h3>28 设置组件布局宽度</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">LayoutWidth=&quot;WrapContent&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutWidth(LONG nLayoutWidth);</code></pre></li>
</ul>
<h3>29 设置组件布局高度</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">LayoutHeight=&quot;FillParent&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutHeight(LONG nLayoutHeight);</code></pre></li>
</ul>
<h3>30 设置组件相对于父组件的对齐方式</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">LayoutAlignment=&quot;Left,Top&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutAlignment(LayoutAlignment layoutAlignment);</code></pre></li>
</ul>
<h3>31 设置组件右边距兄弟组件左边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">ToLeftOf=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutToLeftOf(LONG nId, LONG nOffset);</code></pre></li>
</ul>
<h3>32 设置组件下边距兄弟组件上边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">ToTopOf=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutToTopOf(LONG nId, LONG nOffset);</code></pre></li>
</ul>
<h3>33 设置组件左边距兄弟组件右边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">ToRightOf=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutToRightOf(LONG nId, LONG nOffset);</code></pre></li>
</ul>
<h3>34 设置组件上边距兄弟组件下边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">ToBottomOf=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutToBottomOf(LONG nId, LONG nOffset);</code></pre></li>
</ul>
<h3>35 设置组件左边距兄弟组件左边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">AlignLeftOf=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutAlignLeftOf(LONG nId, LONG nOffset);</code></pre></li>
</ul>
<h3>36 设置组件上边距兄弟组件上边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">AlignTopOf=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutAlignTopOf(LONG nId, LONG nOffset);</code></pre></li>
</ul>
<h3>37 设置组件右边距兄弟组件右边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">AlignRightOf=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutAlignRightOf(LONG nId, LONG nOffset);</code></pre></li>
</ul>
<h3>38 设置组件下边距兄弟组件下边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">AlignBottomOf=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutAlignBottomOf(LONG nId, LONG nOffset);</code></pre></li>
</ul>
<h3>39 设置组件左边距父组件左边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">AlignParentLeft=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutAlignParentLeft(LONG nOffset);</code></pre></li>
</ul>
<h3>40 设置组件上边距父组件上边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">AlignParentTop=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutAlignParentTop(LONG nOffset);</code></pre></li>
</ul>
<h3>41 设置组件右边距父组件右边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">AlignParentRight=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutAlignParentRight(LONG nOffset);</code></pre></li>
</ul>
<h3>42 设置组件下边距父组件下边的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">AlignParentBottom=&quot;1001,10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutAlignParentBottom(LONG nOffset);</code></pre></li>
</ul>
<h3>43 设置组件中心与父组件中心水平方向的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">AlignParentHorizontalCenter=&quot;10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutAlignParentHorizontalCenter(LONG nOffset);</code></pre></li>
</ul>
<h3>44 设置组件中心与父组件中心垂直方向的距离</h3>
<ul>
<li>通过XML属性控制如下:
<pre><code class="language-xml">AlignParentVerticalCenter=&quot;10&quot;</code></pre></li>
<li>通过C++程序代码调用方法控制如下:
<pre><code class="language-c">virtual void SetLayoutAlignParentVerticalCenter(LONG nOffset);</code></pre></li>
</ul>