duiLib 实现鼠标拖动标题栏时,窗口跟着拖动
1、布局文件,窗口需设置可拖动的标题栏区域:
2、HandleMessage函数中,处理WM_LBUTTONDOWN消息,判断鼠标在标题栏,让系统处理窗口移动。代码片段如下:
else if (uMsg == WM_LBUTTONDOWN) {// 获取鼠标点击坐标POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };//ScreenToClient(m_hWnd, &pt); // 已经是客户区坐标了,不需要这一步转换// 找到标题栏控件CControlUI* pTitleBar = m_pm.FindControl(_T("title_bar"));if (pTitleBar) {// 判断鼠标点击是否在标题栏控件范围内RECT rcTitle = pTitleBar->GetPos();if (PtInRect(&rcTitle, pt)) {// 发送消息让系统处理窗口移动::SendMessage(m_hWnd, WM_SYSCOMMAND, SC_MOVE | HTCAPTION, 0);return 0;}}
}
运行, 鼠标点击拖动窗口标题栏时, 窗口也跟着被拖动。测试ok.
但是发现,点击标题栏按钮不响应了,估计是事件冲突了,后面再研究下。