1, WM_NCCALCSIZE 2, WM_GETMINMAXINFO
1-1 用于修改標題的高度 – 取消標題 消息綁定 ON_WM_NCCALCSIZE() 響應函數 OnNcCalcSize void xxxDlg::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp) { if (lpncsp != NULL && GetWindowLong(GetSafeHwnd(),GWL_STYLE) & WS_MAXIMIZE) lpncsp->rgrc[0].top -= ::GetSystemMetrics(SM_CYSMCAPTION); }
1-2 用于捕捉窗口最大化,中等 消息綁定 ON_WM_GETMINMAXINFO() 響應函數 OnGetMinMaxInfo void xxxDlg::OnGetMinMaxInfo(MINMAXINFO* pMMI) { // 使用主要以參數設置的方式進行 // MINMAXINFO 結構體分析
typedef struct tagMINMAXINFO { POINT ptReserved; POINT ptMaxSize; //最大長度,寬度 POINT ptMaxPosition; //起始位置 POINT ptMinTrackSize; POINT ptMaxTrackSize;} MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO;【所以設置的方式】 //最大化對話框 int iWidth = GetSystemMetrics(SM_CXSCREEN); int iHeight = GetSystemMetrics(SM_CYSCREEN); pMMI->ptMaxSize.x = iWidth; // 設置窗口最大化時的寬度 pMMI->ptMaxSize.y = iHeight - 32; // 設置窗口最大化時的高度 **-32 防止將下方的最下方的任務欄遮擋住** pMMI->ptMaxPosition.x = 0; // 設置窗口最大化時x坐標 pMMI->ptMaxPosition.y = 0; // 設置窗口最大化時y坐標 最小化同上}
新聞熱點
疑難解答