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.?
但是發現,點擊標題欄按鈕不響應了,估計是事件沖突了,后面再研究下。