复选框
<p>超链CCheckBox,继承于CButton,支持CButton的所有属性和方法。</p>
<h2>属性和相关方法</h2>
<h4>设置复选框是否选中</h4>
<ul>
<li>通过XML属性控制如下:</li>
</ul>
<pre><code class="language-xml">Checked="true"</code></pre>
<ul>
<li>通过C++程序代码调用方法控制如下:</li>
</ul>
<pre><code class="language-c">virtual void SetChecked(BOOL bChecked);</code></pre>
<h4>设置复选框的选中状态</h4>
<p>复选框的选中状态有:完全选中状态、部分选中状态和未选中状态。</p>
<ul>
<li>通过C++程序代码调用方法控制如下:</li>
</ul>
<pre><code class="language-c">void SetCheckedState(CheckedState state);</code></pre>
<h2>消息处理</h2>
<h4>WM_COMMAND消息</h4>
<p>单击鼠标左键抬起时,如果复选框Id不为0,会给所在的窗口发送WM_COMMAND消息。</p>
<ul>
<li>参考下面的示例代码:</li>
</ul>
<pre><code class="language-cpp">void CCheckBox::HandleLButtonUp(CPoint point, BOOL& bHandle)
{
if(GetState() == PRESSED)
{
SetChecked(!IsChecked());
if(GetId() != 0)
{
GetOwner()->PostMessage(WM_COMMAND, GetId(), reinterpret_cast<LPARAM>(this));
}
}
SetState(HOVER);
Redraw();
}</code></pre>
<h4>WM_CHECKBOX_CHECKED_CHANGE消息</h4>
<p>复选框选中状态发生变化时,会给所在窗口发送自定义消息WM_CHECKBOX_STATE_CHANGE。</p>
<ul>
<li>参考下面的示例代码:</li>
</ul>
<pre><code class="language-cpp">void CCheckBox::SetChecked(BOOL bChecked)
{
BOOL bOldChecked = IsChecked();
if(bOldChecked != bChecked)
{
SetCheckedState(bChecked ? CHECKED : UNCHECKED);
GetOwner()->SendMessage(WM_CHECKBOX_CHECKED_CHANGE, GetId(), reinterpret_cast<LPARAM>(this));
}
}</code></pre>
<ul>
<li>消息处理示例:</li>
</ul>
<pre><code class="language-cpp">void OnComboBoxChange(LONG nId, CComboBox* pComboBox, BOOL& bHandle);
SKINUI_DECLARE_MESSAGE_MAP()</code></pre>
<pre><code class="language-cpp">SKINUI_BEGIN_MESSAGE_MAP(CDemoCheckBoxLayout, CScrollLayout)
ON_SKINUI_WM_COMBOBOX_CHANGE()
SKINUI_END_MESSAGE_MAP()
void CDemoCheckBoxLayout::OnCheckBoxChange(LONG nId, CCheckBox* pCheckBox, BOOL& bHandle)
{
bHandle = TRUE;
}</code></pre>
<h2>示例</h2>
<h4>效果图</h4>
<p><img src="http://www.skinui.cn/doc/img/5.0/3/CheckBox.png" alt="超链" /></p>
<h4>普通复选框</h4>
<pre><code class="language-xml"><CheckBox Id="1000" Width="WrapContent" Height="WrapContent" AlignParentLeft="0" AlignParentVertCenter="0"Layout="CheckBox.xml" ChildText11="普通复选框"/>
<CheckBox Id="1001" Width="WrapContent" Height="WrapContent" ToRightOf="1000,20" AlignParentVertCenter="0" Layout="CheckBox.xml" ChildText11="普通复选框" Checked="true"/></code></pre>
<h4>复选框不带文字</h4>
<pre><code class="language-xml"><CheckBox Id="1000" Width="WrapContent" Height="WrapContent" AlignParentLeft="0" AlignParentVertCenter="0"Layout="CheckBox.xml"/>
<CheckBox Id="1001" Width="WrapContent" Height="WrapContent" ToRightOf="1000,20" AlignParentVertCenter="0" Layout="CheckBox.xml" Checked="true"/></code></pre>
<h4>复选框带图标</h4>
<pre><code class="language-xml"><CheckBox Id="1000" Width="WrapContent" Height="WrapContent" AlignParentLeft="0" AlignParentVertCenter="0"Layout="CheckBoxWithIcon.xml" ChildImage11="Icon.png" ChildText12="复选框带图标"/>
<CheckBox Id="1001" Width="WrapContent" Height="WrapContent" ToRightOf="1000,20" AlignParentVertCenter="0" Layout="CheckBoxWithIcon.xml" ChildImage11="Icon.png" ChildText12="复选框带图标" Checked="true"/></code></pre>
<h4>复选框带图标不带文字</h4>
<pre><code class="language-xml"><CheckBox Id="1000" Width="WrapContent" Height="WrapContent" AlignParentLeft="0" AlignParentVertCenter="0"Layout="CheckBoxWithIcon.xml" ChildImage11="Icon.png"/>
<CheckBox Id="1001" Width="WrapContent" Height="WrapContent" ToRightOf="1000,20" AlignParentVertCenter="0" Layout="CheckBoxWithIcon.xml" ChildImage11="Icon.png" Checked="true"/></code></pre>