SkinUI入门教程

SkinUI入门教程


3.11 进度条

<p>进度条由CSkinProgress类来代表,继承于CSkinView,支持CSkinView的所有属性和方法。</p> <p>通过给进度条设置不同的图片资源,可以得到各种形态的进度条。</p> <h2>1 属性和相关方法:</h2> <h4>1.1设置进度条的最大进度</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">Range=&amp;quot;100&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetRange(uint64 nRange);</code></pre></li> </ul> <h4>1.2设置进度条的当前进度</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">Pos=&amp;quot;1&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetPos(uint64 nPos);</code></pre></li> </ul> <h2>请看下面的示例</h2> <h4>效果图</h4> <p><img src="http://www.skinui.cn/doc/img/3/11/1.png" alt="进度条" /></p> <h4>布局文件</h4> <pre><code class="language-xml">&amp;lt;SkinDialog DefaultWidth=&amp;quot;800&amp;quot; DefaultHeight=&amp;quot;600&amp;quot; SysButton=&amp;quot;CLOSE&amp;quot; Icon=&amp;quot;128&amp;quot; Caption=&amp;quot;IDS_CONTROL_SHOW10&amp;quot; Animation=&amp;quot;SizeChange&amp;quot;&amp;gt; &amp;lt;SkinScrollBar Id=&amp;quot;100&amp;quot; LayoutWidth=&amp;quot;10&amp;quot; AlignParentRight=&amp;quot;5&amp;quot; AlignParentTop=&amp;quot;50&amp;quot; AlignParentBottom=&amp;quot;20&amp;quot; Layout=&amp;quot;VScrollBar.xml&amp;quot;/&amp;gt; &amp;lt;SkinScrollBar Id=&amp;quot;200&amp;quot; LayoutHeight=&amp;quot;10&amp;quot; AlignParentBottom=&amp;quot;5&amp;quot; AlignParentLeft=&amp;quot;20&amp;quot; AlignParentRight=&amp;quot;20&amp;quot; Layout=&amp;quot;HScrollBar.xml&amp;quot;/&amp;gt; &amp;lt;/SkinDialog&amp;gt;</code></pre> <h4>h文件</h4> <pre><code class="language-cpp">#pragma once class CProgressDialog : public CSkinDialog { public: enum { IDC_PROGRESS1 = 101, IDC_BUTTON1 = 201, IDC_PROGRESS2 = 102, IDC_BUTTON2 = 202, }; public: CProgressDialog(const tstring&amp;amp; strXml); public: virtual void OnInitDialog(); protected: void OnBtnClickedAddPosByStep4(UINT uNotifyCode, int nID, CSkinView* pView); void OnBtnClickedAddPosByStep10(UINT uNotifyCode, int nID, CSkinView* pView); SKINUI_DECLARE_MESSAGE_MAP() private: CSkinProgress* m_pProgress1; CSkinProgress* m_pProgress2; };</code></pre> <h4>cpp文件</h4> <pre><code class="language-cpp">#include &amp;quot;stdafx.h&amp;quot; #include &amp;quot;ProgressDialog.h&amp;quot; SKINUI_BEGIN_MESSAGE_MAP(CProgressDialog, CSkinDialog) ON_SKINUI_COMMAND(IDC_BUTTON1, OnBtnClickedAddPosByStep4) ON_SKINUI_COMMAND(IDC_BUTTON2, OnBtnClickedAddPosByStep10) SKINUI_END_MESSAGE_MAP() CProgressDialog::CProgressDialog(const tstring&amp;amp; strXml) : CSkinDialog(strXml) , m_pProgress1(NULL) , m_pProgress2(NULL) { } void CProgressDialog::OnInitDialog() { CSkinDialog::OnInitDialog(); m_pProgress1 = static_cast&amp;lt;CSkinProgress*&amp;gt;(GetChildById(IDC_PROGRESS1)); m_pProgress2 = static_cast&amp;lt;CSkinProgress*&amp;gt;(GetChildById(IDC_PROGRESS2)); } void CProgressDialog::OnBtnClickedAddPosByStep4(UINT uNotifyCode, int nID, CSkinView* pView) { if(m_pProgress1) { m_pProgress1-&amp;gt;SetPos(min(m_pProgress1-&amp;gt;GetPos() + 4, m_pProgress1-&amp;gt;GetRange())); m_pProgress1-&amp;gt;RedrawView(); } } void CProgressDialog::OnBtnClickedAddPosByStep10(UINT uNotifyCode, int nID, CSkinView* pView) { if(m_pProgress2) { m_pProgress2-&amp;gt;SetPos(min(m_pProgress2-&amp;gt;GetPos() + 10, m_pProgress2-&amp;gt;GetRange())); m_pProgress2-&amp;gt;RedrawView(); } }</code></pre>

页面列表

ITEM_HTML