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坐标
最小化同上
}