消息映射
<p>SkinUI通过消息映射宏组成一张消息映射表,并跟基类的消息映射表联合起来。
一个对话框类如果要自己处理某些消息,需要在头文件和源文件分别加上消息映射宏,如下所示:</p>
<ul>
<li>头文件</li>
</ul>
<pre><code class="language-c"> void OnCommandWebsite(UINT uNotifyCode, int nID, CView* pView);
void OnCommandAbout(UINT uNotifyCode, int nID, CView* pView);
void OnCommandQuit(UINT uNotifyCode, int nID, CView* pView);
void OnNcDestroy(BOOL& bHandle);
void OnClose(BOOL& bHandle);
SKINUI_DECLARE_MESSAGE_MAP()</code></pre>
<ul>
<li>源文件</li>
</ul>
<pre><code class="language-c">SKINUI_BEGIN_MESSAGE_MAP(CMainDialog, CDialog)
ON_SKINUI_COMMAND(ID_WEBSITE, OnCommandWebsite)
ON_SKINUI_COMMAND(ID_ABOUT, OnCommandAbout)
ON_SKINUI_COMMAND(ID_QUIT, OnCommandQuit)
ON_SKINUI_WM_NCDESTROY()
ON_SKINUI_WM_CLOSE()
SKINUI_END_MESSAGE_MAP()</code></pre>
<pre><code class="language-c">void CMainDialog::OnCommandWebsite(UINT uNotifyCode, int nID, CView* pView)
{
SkinUI::OpenURL(_T("http://www.skinui.cn/"));
}
void CMainDialog::OnCommandAbout(UINT uNotifyCode, int nID, CView* pView)
{
CAboutDialog dialog;
dialog.DoModal(GetHWND());
}
void CMainDialog::OnCommandQuit(UINT uNotifyCode, int nID, CView* pView)
{
PostMessage(WM_COMMAND, IDCANCEL);
}
void CMainDialog::OnClose(BOOL& bHandle)
{
bHandle = TRUE;
ShowWindow(SW_HIDE);
}
void CMainDialog::OnNcDestroy(BOOL& bHandle)
{
PostQuitMessage(0);
}</code></pre>