SkinUI5.0官方文档

SkinUI5.0官方文档


菜单

<h2>弹出菜单</h2> <ul> <li>调用以下接口弹出资源菜单:</li> </ul> <pre><code class="language-c">HWND CDialog::PopupMenu(const String&amp; strMenu, const CPoint&amp; ptPopup, const CSize&amp; szButton, CView* pNotifyView);</code></pre> <ul> <li>调用以下接口弹出动态菜单:</li> </ul> <pre><code class="language-c">HWND CDialog::PopupMenu(CXMLNode&amp; xmlNode, const CPoint&amp; ptPopup, const CSize&amp; szButton, CView* pNotifyView);</code></pre> <p>弹出菜单时,可以自适应方向弹出,也可以指定弹出方向。</p> <ul> <li>弹出方向</li> </ul> <pre><code class="language-c">//自适应弹出 PopupDirection="" //左上弹出 PopupDirection="LeftTop" //右上弹出 PopupDirection="RightTop" //左下弹出 PopupDirection="LeftBottom" //右下弹出 PopupDirection="RightBottom"</code></pre> <ul> <li>示例</li> </ul> <pre><code class="language-xml">&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;Menu PopupDirection="RightBottom"&gt; &lt;MenuItem Id="1005" Text="IDS_WEBSITE"/&gt; &lt;MenuItem Id="1006" Text="IDS_ABOUT"/&gt; &lt;MenuSeparator/&gt; &lt;MenuItem Id="1007" Text="IDS_QUIT"/&gt; &lt;/Menu&gt;</code></pre> <ul> <li>下面是弹出菜单的代码的示例代码:</li> </ul> <pre><code class="language-c">void CMainDialog::OnBtnClickedPopMenu(UINT uNotifyCode, int nID, CSkinView* pView) { CPoint ptPopup; GetCursorPos(&amp;ptPopup); GetOwner()-&gt;PopupMenu(_T("MainMenu.xml"), ptPopup, CSize(0, 0), this); }</code></pre> <h2>响应消息</h2> <h4>h文件</h4> <pre><code class="language-c">#pragma once class CDemoMenuLayout : public CFlexLayout { public: enum { IDC_ITEM_HIDED = 10000, IDC_ITEM_CHECKED = 10001, IDC_ITEM_DISABLED = 10002, IDC_ITEM_WITH_ICON = 10003, }; public: CDemoMenuLayout(CView* pParent); protected: void OnUpdateCommandHided(CView* pView); void OnUpdateCommandChecked(CView* pView); void OnUpdateCommandDisabled(CView* pView); void OnCommand(UINT uNotifyCode, int nID, CView* pView); SKINUI_DECLARE_MESSAGE_MAP() SKINUI_DECLARE_DYNCREATE(CDemoMenuLayout, CFlexLayout) };</code></pre> <h4>cpp文件</h4> <pre><code class="language-c">#include &lt;stdafx.h&gt; #include "DemoMenuLayout.h" #include "MainDialog.h" SKINUI_BEGIN_MESSAGE_MAP(CDemoMenuLayout, CFlexLayout) ON_SKINUI_UPDATE_COMMAND_UI(IDC_ITEM_HIDED, OnUpdateCommandHided) ON_SKINUI_UPDATE_COMMAND_UI(IDC_ITEM_CHECKED, OnUpdateCommandChecked) ON_SKINUI_UPDATE_COMMAND_UI(IDC_ITEM_DISABLED, OnUpdateCommandDisabled) ON_SKINUI_COMMAND_RANGE(IDC_ITEM_CHECKED, IDC_ITEM_WITH_ICON, OnCommand) SKINUI_END_MESSAGE_MAP() CDemoMenuLayout::CDemoMenuLayout(CView* pParent) : CFlexLayout(pParent) { } void CDemoMenuLayout::OnUpdateCommandHided(CView* pView) { pView-&gt;SetVisible(FALSE); } void CDemoMenuLayout::OnUpdateCommandChecked(CView* pView) { CListItem* pMenuItem = dynamic_cast&lt;CListItem*&gt;(pView); if(pMenuItem) { pMenuItem-&gt;SetCheckBoxState(CHECKED); } } void CDemoMenuLayout::OnUpdateCommandDisabled(CView* pView) { pView-&gt;SetEnable(FALSE); } void CDemoMenuLayout::OnCommand(UINT uNotifyCode, int nID, CView* pView) { CMainDialog::s_inst-&gt;Toast(SkinUI::Format(_T("您点击了Id=%d的菜单项"), nID)); }</code></pre> <h2>普通菜单</h2> <ul> <li>效果图</li> </ul> <p><img src="http://www.skinui.cn/doc/img/5.0/4/Menu1.png" alt="菜单" /></p> <ul> <li>菜单文件</li> </ul> <pre><code class="language-xml">&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;Menu PopupDirection="RightBottom"&gt; &lt;MenuItem Id="1005" Text="IDS_WEBSITE"/&gt; &lt;MenuItem Id="1006" Text="IDS_ABOUT"/&gt; &lt;MenuSeparator/&gt; &lt;MenuItem Id="1007" Text="IDS_QUIT"/&gt; &lt;/Menu&gt;</code></pre> <ul> <li>布局文件</li> </ul> <pre><code class="language-xml">&lt;Button Width="18%" Height="WrapContent" ChildText11="自适应弹出" Background="Button.png" Layout="Button.xml" Menu="TestMenu.xml"/&gt;</code></pre> <h2>自定义菜单</h2> <ul> <li>效果图</li> </ul> <p><img src="http://www.skinui.cn/doc/img/5.0/4/Menu2.png" alt="菜单" /></p> <ul> <li>菜单文件,自定义高度为60,自定义布局为DemoMenuItem.xml</li> </ul> <pre><code class="language-xml">&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;Menu&gt; &lt;MenuItem Text="消息免打扰" Height="60" Layout="DemoMenuItem.xml"/&gt; &lt;MenuItem Id="1005" Text="IDS_WEBSITE"/&gt; &lt;MenuItem Id="1006" Text="IDS_ABOUT"/&gt; &lt;MenuSeparator/&gt; &lt;MenuItem Id="1007" Text="IDS_QUIT"/&gt; &lt;/Menu&gt;</code></pre> <ul> <li>菜单Item布局文件</li> </ul> <pre><code class="language-xml">&lt;RelativeLayout&gt; &lt;DemoMenuItemLayout Width="MatchParent" Height="MatchParent" AlignItems="Center"&gt; &lt;RelativeLayout Id="30" Width="16" Height="16" Margin="10,0,0,0"&gt; &lt;MenuImageView Id="10" Width="WrapContent" Height="WrapContent" AlignParentHorzCenter="0" AlignParentVertCenter="0"/&gt; &lt;MenuStateView Width="WrapContent" Height="WrapContent" AlignParentHorzCenter="0" AlignParentVertCenter="0"/&gt; &lt;/RelativeLayout&gt; &lt;MenuTextView Id="11" Width="WrapContent" Height="MatchParent" Margin="10,0,0,0"/&gt; &lt;CheckBox Id="31" Width="40" Height="20" Margin="10,0,10,0" Background="CheckBox2.xml"/&gt; &lt;/DemoMenuItemLayout&gt; &lt;/RelativeLayout&gt;</code></pre> <h4>h文件</h4> <pre><code class="language-c">#pragma once class CDemoMenuItemLayout : public CFlexLayout { public: CDemoMenuItemLayout(CView* pParent); protected: void OnCheckBoxCheckedChange(LONG nId, CCheckBox* pCheckBox, BOOL&amp; bHandle); SKINUI_DECLARE_MESSAGE_MAP() SKINUI_DECLARE_DYNCREATE(CDemoMenuItemLayout, CFlexLayout) };</code></pre> <h4>cpp文件</h4> <pre><code class="language-c">#include &lt;stdafx.h&gt; #include "DemoMenuItemLayout.h" #include "MainDialog.h" SKINUI_BEGIN_MESSAGE_MAP(CDemoMenuItemLayout, CFlexLayout) ON_SKINUI_WM_CHECKBOX_CHECKED_CHANGE() SKINUI_END_MESSAGE_MAP() CDemoMenuItemLayout::CDemoMenuItemLayout(CView* pParent) : CFlexLayout(pParent) { } void CDemoMenuItemLayout::OnCheckBoxCheckedChange(LONG nId, CCheckBox* pCheckBox, BOOL&amp; bHandle) { CMainDialog::s_inst-&gt;Toast(pCheckBox-&gt;IsChecked() ? _T("消息免打扰已打开") : _T("消息免打扰已关闭")); }</code></pre>

页面列表

ITEM_HTML