duilib提供的demo里面最大最小关闭按钮都是自己贴图片,参照demo每次写个小程序都要去实现这些按钮功能,所以想用系统自带功能按钮。
调试了很久,查找多方资料没找到原因。最后自己注册、创建窗口,比较,发现是copy示例demo里面将标题栏给屏蔽了,导致怎么操作标题栏都无效。
LRESULT CDuiSimpleWindow::HandleMessage( UINT uMsg, WPARAM wParam, LPARAM lParam )
{
LRESULT lRes = 0;
BOOL bHandled = TRUE;
switch( uMsg ) {
case WM_CREATE: lRes = OnCreate(uMsg, wParam, lParam, bHandled); break;
case WM_NCACTIVATE: lRes = OnNcActivate(uMsg, wParam, lParam, bHandled); break;
case WM_NCHITTEST: lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled); break;
case WM_SIZE: lRes = OnSize(uMsg, wParam, lParam, bHandled); break;
case WM_DESTROY: lRes = OnDestroy(uMsg, wParam, lParam, bHandled); break;
// 改变标题栏等的高度
case WM_NCCALCSIZE: lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled); break;
// 非客户区刷新
case WM_NCPAINT: lRes = OnNcPaint(uMsg, wParam, lParam, bHandled); break;
case WM_GETMINMAXINFO: lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled); break;
case WM_SYSCOMMAND: lRes = OnSysCommand(uMsg, wParam, lParam, bHandled); break;
default: bHandled = FALSE;
}
if( m_pm.MessageHandler(uMsg, wParam, lParam, lRes) ) return lRes;
return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
}
代码中WM_NCCALCSIZE和WM_NCPAINT将标题栏屏蔽,所以之前无论怎么调窗口风格都没用。