SkinUI入门教程

SkinUI入门教程


3.8 编辑框

<p>编辑框由CSkinEditView类来代表,分为单行编辑框和多行编辑框,继承于CSkinScrollView,支持CSkinScrollView的所有属性和方法。</p> <h2>1 属性和相关方法</h2> <h4>1.1 设置是否为多行编辑框</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">MultiLine=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetMultiLine(BOOL bMultiLine);</code></pre></li> </ul> <h4>1.2 设置是否为富文本编辑框</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">RichEdit=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetRichEdit(BOOL bRichEdit);</code></pre></li> </ul> <h4>1.3 设置是否自动大写</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">UpperCase=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetUpperCase(BOOL bUpperCase);</code></pre></li> </ul> <h4>1.4 设置是否自动小写</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">LowerCase=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetLowerCase(BOOL bLowerCase);</code></pre></li> </ul> <h4>1.5 设置是否密码框</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">Password=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetPassword(BOOL bPassword);</code></pre></li> </ul> <h4>1.6 设置是否为只读编辑框</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">ReadOnly=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetReadOnly(BOOL bReadOnly);</code></pre></li> </ul> <h4>1.7 设置是否只允许输入数字</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">Number=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetNumber(BOOL bNumber);</code></pre></li> </ul> <h4>1.8 设置字符数限制</h4> <ul> <li>通过XML属性控制如下: <pre><code class="language-xml">Limit=&amp;quot;true&amp;quot;</code></pre></li> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void SetLimit(LONG nLimit);</code></pre></li> </ul> <h4>1.9 插入文本、图片和链接</h4> <ul> <li>通过C++程序代码插入文本、图片和链接如下: <pre><code class="language-c">void InsertText(const tstring&amp;amp; strText, BOOL bHighlight = FALSE); void InsertText(const tstring&amp;amp; strText, LONG nAfter, BOOL bHighlight = FALSE); void AppendText(const tstring&amp;amp; strText, BOOL bHighlight = FALSE); void InsertImage(const tstring&amp;amp; strImage); void InsertImage(const tstring&amp;amp; strImage, LONG nAfter); void AppendImage(const tstring&amp;amp; strImage); void InsertHyperlink(const tstring&amp;amp; strHyperlink, UINT nCommandId, BOOL bHighlight = FALSE); void InsertHyperlink(const tstring&amp;amp; strHyperlink, LONG nAfter, UINT nCommandId, BOOL bHighlight = FALSE); void AppendHyperlink(const tstring&amp;amp; strHyperlink, UINT nCommandId, BOOL bHighlight = FALSE);</code></pre></li> </ul> <h2>2 消息处理</h2> <h4>2.1 WM_EDIT_TEXT_CHANGE消息</h4> <p>编辑框文本发生变化时,会给所在窗口发送自定义消息WM_EDIT_TEXT_CHANGE。</p> <p>参考下面的示例代码:</p> <pre><code class="language-cpp">void CSkinEditViewImpl::NotifyEditTextChange() { CSkinEditView* pEditView = GetEditView(); if(pEditView) { CSkinDialog* pOwner = pEditView-&amp;gt;GetOwner(); if(pOwner &amp;amp;&amp;amp; pOwner-&amp;gt;IsInitDialogFinish()) { pOwner-&amp;gt;PostMessage(WM_EDIT_TEXT_CHANGE, pEditView-&amp;gt;GetId(), reinterpret_cast&amp;lt;LPARAM&amp;gt;(pEditView)); } } }</code></pre> <h2>请看下面的示例</h2> <h4>效果图</h4> <p><img src="http://www.skinui.cn/doc/img/3/8/1.png" alt="编辑框" /></p> <h4>布局文件</h4> <pre><code class="language-xml">&amp;lt;SkinDialog DefaultWidth=&amp;quot;400&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_SHOW8&amp;quot; Animation=&amp;quot;SizeChange&amp;quot;&amp;gt; &amp;lt;SkinEditView LayoutHeight=&amp;quot;28&amp;quot; Image=&amp;quot;Edit.png&amp;quot; Tips=&amp;quot;UpperCase&amp;quot; UpperCase=&amp;quot;true&amp;quot; AlignParentLeft=&amp;quot;50&amp;quot; AlignParentRight=&amp;quot;50&amp;quot; AlignParentTop=&amp;quot;50&amp;quot;/&amp;gt; &amp;lt;SkinEditView LayoutHeight=&amp;quot;28&amp;quot; Image=&amp;quot;Edit.png&amp;quot; Tips=&amp;quot;LowerCase&amp;quot; LowerCase=&amp;quot;true&amp;quot; AlignParentLeft=&amp;quot;50&amp;quot; AlignParentRight=&amp;quot;50&amp;quot; AlignParentTop=&amp;quot;90&amp;quot;/&amp;gt; &amp;lt;SkinEditView LayoutHeight=&amp;quot;28&amp;quot; Image=&amp;quot;Edit.png&amp;quot; Tips=&amp;quot;Password&amp;quot; Password=&amp;quot;true&amp;quot; AlignParentLeft=&amp;quot;50&amp;quot; AlignParentRight=&amp;quot;50&amp;quot; AlignParentTop=&amp;quot;130&amp;quot;/&amp;gt; &amp;lt;SkinEditView LayoutHeight=&amp;quot;28&amp;quot; Image=&amp;quot;Edit.png&amp;quot; Tips=&amp;quot;ReadOnly&amp;quot; ReadOnly=&amp;quot;true&amp;quot; AlignParentLeft=&amp;quot;50&amp;quot; AlignParentRight=&amp;quot;50&amp;quot; AlignParentTop=&amp;quot;170&amp;quot;/&amp;gt; &amp;lt;SkinEditView LayoutHeight=&amp;quot;28&amp;quot; Image=&amp;quot;Edit.png&amp;quot; Tips=&amp;quot;Number&amp;quot; Number=&amp;quot;true&amp;quot; AlignParentLeft=&amp;quot;50&amp;quot; AlignParentRight=&amp;quot;50&amp;quot; AlignParentTop=&amp;quot;210&amp;quot;/&amp;gt; &amp;lt;SkinEditView LayoutHeight=&amp;quot;28&amp;quot; Image=&amp;quot;Edit.png&amp;quot; Tips=&amp;quot;Limit&amp;quot; Limit=&amp;quot;10&amp;quot; AlignParentLeft=&amp;quot;50&amp;quot; AlignParentRight=&amp;quot;50&amp;quot; AlignParentTop=&amp;quot;250&amp;quot;/&amp;gt; &amp;lt;SkinEditView LayoutHeight=&amp;quot;68&amp;quot; Image=&amp;quot;Edit.png&amp;quot; Tips=&amp;quot;MultiLine&amp;quot; MultiLine=&amp;quot;true&amp;quot; AlignParentLeft=&amp;quot;50&amp;quot; AlignParentRight=&amp;quot;50&amp;quot; AlignParentTop=&amp;quot;290&amp;quot; VScrollBar=&amp;quot;VScrollBar.xml&amp;quot;/&amp;gt; &amp;lt;SkinEditView Id=&amp;quot;100&amp;quot; AlignParentBottom=&amp;quot;120&amp;quot; Image=&amp;quot;Edit.png&amp;quot; Tips=&amp;quot;RichEdit&amp;quot; MultiLine=&amp;quot;true&amp;quot; RichEdit=&amp;quot;true&amp;quot; AlignParentLeft=&amp;quot;50&amp;quot; AlignParentRight=&amp;quot;50&amp;quot; AlignParentTop=&amp;quot;370&amp;quot; VScrollBar=&amp;quot;VScrollBar.xml&amp;quot;/&amp;gt; &amp;lt;SkinButton Id=&amp;quot;101&amp;quot; LayoutWidth=&amp;quot;WrapContent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; ChildText1=&amp;quot;追加文本&amp;quot; Image=&amp;quot;Button.png&amp;quot; Layout=&amp;quot;Button.xml&amp;quot; AlignParentLeft=&amp;quot;50&amp;quot; AlignParentBottom=&amp;quot;70&amp;quot; PressDownOffset=&amp;quot;1&amp;quot;/&amp;gt; &amp;lt;SkinButton Id=&amp;quot;102&amp;quot; LayoutWidth=&amp;quot;WrapContent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; ChildText1=&amp;quot;追加链接&amp;quot; Image=&amp;quot;Button.png&amp;quot; Layout=&amp;quot;Button.xml&amp;quot; AlignParentHorizontalCenter=&amp;quot;0&amp;quot; AlignParentBottom=&amp;quot;70&amp;quot; PressDownOffset=&amp;quot;1&amp;quot;/&amp;gt; &amp;lt;SkinButton Id=&amp;quot;103&amp;quot; LayoutWidth=&amp;quot;WrapContent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; ChildText1=&amp;quot;追加图片&amp;quot; Image=&amp;quot;Button.png&amp;quot; Layout=&amp;quot;Button.xml&amp;quot; AlignParentRight=&amp;quot;50&amp;quot; AlignParentBottom=&amp;quot;70&amp;quot; PressDownOffset=&amp;quot;1&amp;quot;/&amp;gt; &amp;lt;SkinButton Id=&amp;quot;104&amp;quot; LayoutWidth=&amp;quot;WrapContent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; ChildText1=&amp;quot;插入文本&amp;quot; Image=&amp;quot;Button.png&amp;quot; Layout=&amp;quot;Button.xml&amp;quot; AlignParentLeft=&amp;quot;50&amp;quot; AlignParentBottom=&amp;quot;20&amp;quot; PressDownOffset=&amp;quot;1&amp;quot;/&amp;gt; &amp;lt;SkinButton Id=&amp;quot;105&amp;quot; LayoutWidth=&amp;quot;WrapContent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; ChildText1=&amp;quot;插入链接&amp;quot; Image=&amp;quot;Button.png&amp;quot; Layout=&amp;quot;Button.xml&amp;quot; AlignParentHorizontalCenter=&amp;quot;0&amp;quot; AlignParentBottom=&amp;quot;20&amp;quot; PressDownOffset=&amp;quot;1&amp;quot;/&amp;gt; &amp;lt;SkinButton Id=&amp;quot;106&amp;quot; LayoutWidth=&amp;quot;WrapContent&amp;quot; LayoutHeight=&amp;quot;30&amp;quot; ChildText1=&amp;quot;插入图片&amp;quot; Image=&amp;quot;Button.png&amp;quot; Layout=&amp;quot;Button.xml&amp;quot; AlignParentRight=&amp;quot;50&amp;quot; AlignParentBottom=&amp;quot;20&amp;quot; PressDownOffset=&amp;quot;1&amp;quot;/&amp;gt; &amp;lt;/SkinDialog&amp;gt;</code></pre> <h4>h文件</h4> <pre><code class="language-cpp">#pragma once class CEditViewDialog : public CSkinDialog { public: enum { IDC_EDITVIEW = 100, IDC_BUTTON1 = 101, IDC_BUTTON2 = 102, IDC_BUTTON3 = 103, IDC_BUTTON4 = 104, IDC_BUTTON5 = 105, IDC_BUTTON6 = 106, ID_COMMAND_BEGIN = 1001, ID_COMMAND_END = 10000, }; public: CEditViewDialog(const tstring&amp;amp; strXml); public: virtual void OnInitDialog(); protected: void OnBtnClickedAppendText(UINT uNotifyCode, int nID, CSkinView* pView); void OnBtnClickedAppendHyperlink(UINT uNotifyCode, int nID, CSkinView* pView); void OnBtnClickedAppendImage(UINT uNotifyCode, int nID, CSkinView* pView); void OnBtnClickedInsertText(UINT uNotifyCode, int nID, CSkinView* pView); void OnBtnClickedInsertHyperlink(UINT uNotifyCode, int nID, CSkinView* pView); void OnBtnClickedInsertImage(UINT uNotifyCode, int nID, CSkinView* pView); void OnHyperlinkClicked(UINT uNotifyCode, int nID, CSkinView* pView); SKINUI_DECLARE_MESSAGE_MAP() private: CSkinEditView* m_pRichEditView; LONG m_nCommandId; };</code></pre> <h4>cpp文件</h4> <pre><code class="language-cpp">#include &amp;quot;stdafx.h&amp;quot; #include &amp;quot;EditViewDialog.h&amp;quot; SKINUI_BEGIN_MESSAGE_MAP(CEditViewDialog, CSkinDialog) ON_SKINUI_COMMAND(IDC_BUTTON1, OnBtnClickedAppendText) ON_SKINUI_COMMAND(IDC_BUTTON2, OnBtnClickedAppendHyperlink) ON_SKINUI_COMMAND(IDC_BUTTON3, OnBtnClickedAppendImage) ON_SKINUI_COMMAND(IDC_BUTTON4, OnBtnClickedInsertText) ON_SKINUI_COMMAND(IDC_BUTTON5, OnBtnClickedInsertHyperlink) ON_SKINUI_COMMAND(IDC_BUTTON6, OnBtnClickedInsertImage) ON_SKINUI_COMMAND_RANGE(ID_COMMAND_BEGIN, ID_COMMAND_END, OnHyperlinkClicked) SKINUI_END_MESSAGE_MAP() CEditViewDialog::CEditViewDialog(const tstring&amp;amp; strXml) : CSkinDialog(strXml) , m_pRichEditView(NULL) , m_nCommandId(ID_COMMAND_BEGIN) { } void CEditViewDialog::OnInitDialog() { CSkinDialog::OnInitDialog(); m_pRichEditView = static_cast&amp;lt;CSkinEditView*&amp;gt;(GetChildById(IDC_EDITVIEW)); } void CEditViewDialog::OnBtnClickedAppendText(UINT uNotifyCode, int nID, CSkinView* pView) { if(m_pRichEditView) { m_pRichEditView-&amp;gt;AppendText(_T(&amp;quot; 我是文本 &amp;quot;)); } } void CEditViewDialog::OnBtnClickedAppendHyperlink(UINT uNotifyCode, int nID, CSkinView* pView) { if(m_pRichEditView) { m_pRichEditView-&amp;gt;AppendHyperlink(_T(&amp;quot; 试试点击我 &amp;quot;), m_nCommandId++); } } void CEditViewDialog::OnBtnClickedAppendImage(UINT uNotifyCode, int nID, CSkinView* pView) { if(m_pRichEditView) { m_pRichEditView-&amp;gt;AppendImage(_T(&amp;quot;Emotion.gif &amp;quot;)); } } void CEditViewDialog::OnBtnClickedInsertText(UINT uNotifyCode, int nID, CSkinView* pView) { if(m_pRichEditView) { m_pRichEditView-&amp;gt;InsertText(_T(&amp;quot; 我是文本 &amp;quot;)); } } void CEditViewDialog::OnBtnClickedInsertHyperlink(UINT uNotifyCode, int nID, CSkinView* pView) { if(m_pRichEditView) { m_pRichEditView-&amp;gt;InsertHyperlink(_T(&amp;quot; 试试点击我 &amp;quot;), m_nCommandId++); } } void CEditViewDialog::OnBtnClickedInsertImage(UINT uNotifyCode, int nID, CSkinView* pView) { if(m_pRichEditView) { m_pRichEditView-&amp;gt;InsertImage(_T(&amp;quot;Emotion.gif&amp;quot;)); } } void CEditViewDialog::OnHyperlinkClicked(UINT uNotifyCode, int nID, CSkinView* pView) { MsgBox(SkinUI::StringFormat(_T(&amp;quot;OnHyperlinkClicked,Command Id=%d!&amp;quot;), nID)); }</code></pre>

页面列表

ITEM_HTML