duilib其实没有区分标题栏和客户区,它的实现方式是屏蔽了系统自带的标题栏,用客户区来模拟标题栏
屏蔽系统自带的标题栏,这里需要屏蔽三个系统消息
WM_NCACTIVATE
WM_NCCALCSIZE
WM_NCPAINT
修改上个日记中HandleMessage代码:
virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
LRESULT lRes = 0;
if (uMsg == WM_CREATE)
{
CControlUI *pWnd = new CButtonUI;
pWnd->SetName(_T("btnHello"));//设置控件唯一ID
pWnd->SetText(_T("HelloWord"));
pWnd->SetBkColor(0x00000000);
m_PaintManager.Init(m_hWnd);
m_PaintManager.AttachDialog(pWnd);
//添加控件消息响应,这样消息就会传到duilib的消息循环,我们可以在Notify函数做消息处理
m_PaintManager.AddNotifier(this);
return lRes;
}
//屏蔽系统标题栏
else if (uMsg == WM_NCACTIVATE)
{
if (!IsIconic(m_hWnd))
{
return (wParam == 0) ? TRUE : FALSE;
}
}
else if (uMsg &