【MFC】-003 限制窗口最大或最小尺寸
2018-08-14 10:20
393 查看
【MFC】-003 限制窗口最大或最小尺寸
1、由来
MFC向导新建的程序的窗口尺寸是可以随意变化的,在实际应用过程中,可能需要限制窗口的最大尺寸或最小尺寸。
2、步骤
2.1 映射消息
窗口最大或最小尺寸是由
WM_GETMINMAXINFO消息进行控制的,因此,在需要控制窗口最大或最小尺寸的窗体中,需要对该消息进行映射。消息映射宏为
ON_WM_GETMINMAXINFO,对应的消息响应函数为
void OnGetMinMaxInfo(MINMAXINFO* lpMMI)。
2.2 消息响应函数
void CImgProcDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) { // TODO: 在此添加消息处理程序代码和/或调用默认值 int cx = GetSystemMetrics(SM_CXSCREEN); int cy = GetSystemMetrics(SM_CYSCREEN); int nShellHight = 0; //获取任务栏 CWnd* pTaskWnd = FindWindow(_T("Shell_TrayWnd"), NULL); if (pTaskWnd != NULL) { LONG lStyle = GetWindowLong(pTaskWnd->GetSafeHwnd(), GWL_STYLE); //如果任务栏存在且可见,要减去任务栏高度 if (lStyle & WS_VISIBLE) { //任务栏可见 RECT TastRect; pTaskWnd->GetWindowRect(&TastRect); //任务栏的尺寸 nShellHight = TastRect.bottom - TastRect.top; } else { //任务栏隐藏 不做处理 } } cy -= nShellHight; lpMMI->ptMaxSize.x = cx; // 设置窗口最大化时的宽度 lpMMI->ptMaxSize.y = cy; // 设置窗口最大化时的高度 lpMMI->ptMaxPosition.x = 0; // 设置窗口最大化时x坐标 lpMMI->ptMaxPosition.y = 0; // 设置窗口最大化时y坐标 lpMMI->ptMinTrackSize.x = 1920*0.5; // 设置窗口最小宽度 lpMMI->ptMinTrackSize.y = 1080*0.5; // 设置窗口最小高度 lpMMI->ptMaxTrackSize.x = cx; // 设置窗口最大宽度 lpMMI->ptMaxTrackSize.y = cy; // 设置窗口最大高度 CDialogEx::OnGetMinMaxInfo(lpMMI); }阅读更多
相关文章推荐
- MFC 程序限制窗口最小、最大大小
- MFC 控制窗口最大最小尺寸
- 限制窗口的最大尺寸和最小尺寸
- MFC 窗口最大尺寸与最小尺寸设置
- MFC,调整窗口大小限制大小,设置窗口的最大|最小宽度与高度
- 问题解决——限制窗口的最小尺寸
- 【框架MFC】限制单文档和多文档窗口范围最小值(设置窗口宽度和高度的下限)
- 问题解决——限制窗口的最小尺寸
- 控制窗口的最大最小尺寸
- 如何控制窗口框架的最大最小尺寸
- Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸
- WM_GETMINMAXINFO 设置窗口最大最小尺寸(无边框窗口不遮挡任务栏)
- Flex中窗口的最大尺寸限制(Bug)
- 如何控制窗口框架的最大最小尺寸
- MFC中静态与动态设置窗体最大与最小尺寸
- Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸
- WTL 设置主窗口最小/最大尺寸
- 设置窗口的最大最小尺寸
- Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸
- MFC 控件随窗口尺寸变化自动调整位置及大小