SkinUI5.0官方文档

SkinUI5.0官方文档


消息处理

<h2>命令消息处理</h2> <h3>单命令消息处理</h3> <p>一个控件Id绑定一个消息处理函数,如下所示:</p> <ul> <li>头文件</li> </ul> <pre><code class="language-c">void OnBtnClickedCommand(UINT uNotifyCode, int nID, CView* pView); SKINUI_DECLARE_MESSAGE_MAP()</code></pre> <ul> <li>源文件</li> </ul> <pre><code class="language-c">SKINUI_BEGIN_MESSAGE_MAP(CMainDialog, CDialog) ON_SKINUI_COMMAND(IDC_BUTTON, OnBtnClickedCommand) SKINUI_END_MESSAGE_MAP() void CMainDialog::OnBtnClickedCommand(UINT uNotifyCode, int nID, CView* pView) { }</code></pre> <h3>范围命令消息处理</h3> <p>一个控件Id范围绑定一个消息处理函数,如下所示:</p> <ul> <li>头文件</li> </ul> <pre><code class="language-c">void OnBtnClickedCommand(UINT uNotifyCode, int nID, CView* pView); SKINUI_DECLARE_MESSAGE_MAP()</code></pre> <ul> <li>源文件</li> </ul> <pre><code class="language-c">SKINUI_BEGIN_MESSAGE_MAP(CMainDialog, CDialog) ON_SKINUI_COMMAND_RANGE(IDC_BUTTON1, IDC_BUTTON2, OnBtnClickedCommand) SKINUI_END_MESSAGE_MAP() void CMainDialog::OnBtnClickedCommand(UINT uNotifyCode, int nID, CView* pView) { }</code></pre> <h3>更新UI命令消息处理</h3> <p>SkinUI会在需要的时候发送更新UI命令消息用来更新UI组件的状态。主要存在以下几种情况:</p> <ul> <li>按钮的禁用;</li> <li>菜单的禁用;</li> <li>菜单的选中;</li> </ul> <h4>按钮的禁用:</h4> <ul> <li>头文件</li> </ul> <pre><code class="language-c">void OnUpdateCommandUI(CView* pView); SKINUI_DECLARE_MESSAGE_MAP()</code></pre> <ul> <li>源文件</li> </ul> <pre><code class="language-c">SKINUI_BEGIN_MESSAGE_MAP(CMainDialog, CDialog) ON_SKINUI_UPDATE_COMMAND_UI(IDC_BUTTON, OnUpdateCommandUI) SKINUI_END_MESSAGE_MAP() void CMainDialog::OnUpdateCommandUI(CView* pView) { pView-&gt;SetEnable(FALSE); }</code></pre> <h4>菜单的禁用:</h4> <ul> <li>头文件</li> </ul> <pre><code class="language-c">void OnUpdateCommandUI(CView* pView); SKINUI_DECLARE_MESSAGE_MAP()</code></pre> <ul> <li>源文件</li> </ul> <pre><code class="language-c">SKINUI_BEGIN_MESSAGE_MAP(CMainDialog, CDialog) ON_SKINUI_UPDATE_COMMAND_UI(IDC_MENU, OnUpdateCommandUI) SKINUI_END_MESSAGE_MAP() void CMainDialog::OnUpdateCommandUI(CView* pView) { pView-&gt;SetEnable(FALSE); }</code></pre> <h4>菜单的选中:</h4> <ul> <li>头文件</li> </ul> <pre><code class="language-c">void OnUpdateCommandUI(CView* pView); SKINUI_DECLARE_MESSAGE_MAP()</code></pre> <ul> <li>源文件</li> </ul> <pre><code class="language-c">SKINUI_BEGIN_MESSAGE_MAP(CMainDialog, CDialog) ON_SKINUI_UPDATE_COMMAND_UI(IDC_MENU, OnUpdateCommandUI) SKINUI_END_MESSAGE_MAP() void CMainDialog::OnUpdateCommandUI(CView* pView) { pView-&gt;SetSelected(TRUE); }</code></pre> <h3>系统消息处理</h3> <p>SkinUI内置了一些系统消息,可以自动解析消息的参数。</p> <ul> <li>参考下面的消息映射宏:</li> </ul> <pre><code class="language-c">ON_SKINUI_WM_CREATE() ON_SKINUI_WM_PAINT() ON_SKINUI_WM_NCPAINT() ON_SKINUI_WM_NCACTIVATE() ON_SKINUI_WM_ERASEBKGND() ON_SKINUI_WM_SETCURSOR() ON_SKINUI_WM_DESTROY() ON_SKINUI_WM_SETFOCUS() ON_SKINUI_WM_NCDESTROY() ON_SKINUI_WM_NCLBUTTONDOWN() ON_SKINUI_WM_NCCALCSIZE() ON_SKINUI_WM_NCLBUTTONUP() ON_SKINUI_WM_PARENTNOTIFY() ON_SKINUI_WM_KILLFOCUS() ON_SKINUI_WM_SIZE() ON_SKINUI_WM_SYSKEYDOWN() ON_SKINUI_WM_SYSKEYUP() ON_SKINUI_WM_KEYDOWN() ON_SKINUI_WM_KEYUP() ON_SKINUI_WM_CHAR() ON_SKINUI_WM_SIZING() ON_SKINUI_WM_LBUTTONDOWN() ON_SKINUI_WM_LBUTTONUP() ON_SKINUI_WM_RBUTTONDOWN() ON_SKINUI_WM_RBUTTONUP() ON_SKINUI_WM_LBUTTONDBLCLK() ON_SKINUI_WM_MOUSEMOVE() ON_SKINUI_WM_MOUSEHOVER() ON_SKINUI_WM_MOUSELEAVE() ON_SKINUI_WM_MOUSEWHEEL() ON_SKINUI_WM_NCHITTEST() ON_SKINUI_WM_GETMINMAXINFO() ON_SKINUI_WM_TIMER() ON_SKINUI_WM_SYSCOMMAND() ON_SKINUI_WM_CLOSE() ON_SKINUI_WM_MOVE() ON_SKINUI_WM_MOVING() ON_SKINUI_WM_COPYDATA() ON_SKINUI_WM_WINDOWPOSCHANGED() ON_SKINUI_WM_ACTIVATE() ON_SKINUI_WM_HOTKEY() ON_SKINUI_WM_QUERYENDSESSION() ON_SKINUI_WM_IME_STARTCOMPOSITION() ON_SKINUI_WM_IME_ENDCOMPOSITION() ON_SKINUI_WM_IME_COMPOSITION() ON_SKINUI_WM_DISPLAYCHANGE()</code></pre> <p>参考下面的示例:</p> <ul> <li>头文件</li> </ul> <pre><code class="language-c">void OnLButtonDown(UINT nFlags, CPoint point, BOOL&amp; bHandle); SKINUI_DECLARE_MESSAGE_MAP()</code></pre> <ul> <li>源文件</li> </ul> <pre><code class="language-c">SKINUI_BEGIN_MESSAGE_MAP(CMainDialog, CDialog) ON_SKINUI_WM_RBUTTONDOWN() SKINUI_END_MESSAGE_MAP() void CMainDialog::OnLButtonDown(UINT nFlags, CPoint point, BOOL&amp; bHandle) { }</code></pre> <h3>SkinUI消息处理</h3> <p>SkinUI内置了一些系统消息,可以自动解析消息的参数。</p> <ul> <li>参考下面的消息映射宏:</li> </ul> <pre><code class="language-c">ON_SKINUI_WM_DROP_TEXT() ON_SKINUI_WM_DROP_BITMAP() ON_SKINUI_WM_DROP_FILE() ON_SKINUI_WM_DROP_VIEW() ON_SKINUI_WM_LOAD_START() ON_SKINUI_WM_LOAD_END() ON_SKINUI_WM_LOAD_ERROR() ON_SKINUI_WM_SCROLL_TOP() ON_SKINUI_WM_SCROLL_BOTTOM() ON_SKINUI_WM_DATE_VIEW_CHANGE() ON_SKINUI_WM_DATE_LAYOUT_CHANGE() ON_SKINUI_WM_HOTKEY_CHANGE() ON_SKINUI_WM_COMBOBOX_CHANGE() ON_SKINUI_WM_EDIT_TEXT_CHANGE() ON_SKINUI_WM_SCROLL_POS_CHANGE() ON_SKINUI_WM_SLIDER_POS_CHANGE() ON_SKINUI_WM_SPLITTER_POS_CHANGE() ON_SKINUI_WM_WEBVIEW_TITLE_CHANGE() ON_SKINUI_WM_CHECKBOX_CHECKED_CHANGE() ON_SKINUI_WM_LISTVIEW_CHECKED_CHANGE() ON_SKINUI_WM_RADIO_GROUP_CHECKED_CHANGE() ON_SKINUI_WM_RADIO_BUTTON_CHECKED_CHANGE() ON_SKINUI_WM_LISTITEM_DOUBLE_CLICKED()</code></pre> <p>参考下面的示例:</p> <ul> <li>头文件</li> </ul> <pre><code class="language-c">void OnComboBoxChange(LONG nId, CComboBox* pComboBox, BOOL&amp; bHandle); SKINUI_DECLARE_MESSAGE_MAP()</code></pre> <ul> <li>源文件</li> </ul> <pre><code class="language-c">SKINUI_BEGIN_MESSAGE_MAP(CDemoComboBoxLayout, CScrollLayout) ON_SKINUI_WM_COMBOBOX_CHANGE() SKINUI_END_MESSAGE_MAP() void CDemoComboBoxLayout::OnComboBoxChange(LONG nId, CComboBox* pComboBox, BOOL&amp; bHandle) { bHandle = TRUE; }</code></pre> <h3>其他消息处理</h3> <p>处理其他系统消息或者自定义消息,需要自己手动解析消息的参数,参考下面的示例:</p> <ul> <li>头文件</li> </ul> <pre><code class="language-c">enum { WM_THREAD_NOTIFY = WM_USER + 20000, WM_START_LOAD, WM_RESOURCE_RELOAD, };</code></pre> <pre><code class="language-cpp">LRESULT OnResourceReload(WPARAM wParam, LPARAM lParam); LRESULT OnThreadNotify(WPARAM wParam, LPARAM lParam); LRESULT OnStartLoad(WPARAM wParam, LPARAM lParam); SKINUI_DECLARE_MESSAGE_MAP()</code></pre> <ul> <li>源文件</li> </ul> <pre><code class="language-c">SKINUI_BEGIN_MESSAGE_MAP(CDemoComboBoxLayout, CScrollLayout) ON_SKINUI_MESSAGE(WM_RESOURCE_RELOAD, OnResourceReload) ON_SKINUI_MESSAGE(WM_THREAD_NOTIFY, OnThreadNotify) ON_SKINUI_MESSAGE(WM_START_LOAD, OnStartLoad) SKINUI_END_MESSAGE_MAP() LRESULT CMainDialog::OnResourceReload(WPARAM wParam, LPARAM lParam) { return 1L; } LRESULT CMainDialog::OnThreadNotify(WPARAM wParam, LPARAM lParam) { return 1L; } LRESULT CMainDialog::OnStartLoad(WPARAM wParam, LPARAM lParam) { return 1L; }</code></pre>

页面列表

ITEM_HTML