MFC 中WM_GETMINMAXINFO 是响应窗口变化的函数OnGetMinMaxInfo(MINMAXINFO* lpMMI)
WM_SIZE 对应的消息响应函数OnSize(UINT nType, int cx, int cy)
1.窗口缩放边框 先调用WM_GETMINMAXINFO消息,如果发生边框大小的改变,会有WM_SIZE的响应
以下是MINMAXINFO参数实际测试结果:
void CMFCuserctrlDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//可以得到桌面大小
//1.
CWnd* pwnd = GetDesktopWindow();
RECT rect;
pwnd->GetClientRect(&rect);
//2.
int nScreenWidth, nScreenHeight;
nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
//MINMAXINFO 几组点的实际使用测试
//ptReserved
// 保留以供内部使用。
// ptMaxSize
// 指定最大化窗口的宽度(point.x) 和高度 (point.y)。
// ptMaxPosition
// 最大化窗口的指定 左上角位置 (point.x)。
// ptMinTrackSize
// 指定窗口边框长宽变化最大值。
// ptMaxTrackSize
// 指定窗口边框长宽变化最大值(point.x) (point.y) 。
// ptMaxSize
lpMMI->ptMaxSize.x = 1800;
lpMMI->ptMaxSize.y = 900;
//ptMaxPosition
lpMMI->ptMaxPosition.x = 0;
lpMMI->

本文详细介绍了MFC中处理窗口最大最小化时的WM_GETMINMAXINFO消息及其响应函数OnGetMinMaxInfo,以及与WM_SIZE消息的关系。在窗口边框调整过程中,WM_GETMINMAXINFO先于WM_SIZE触发,并通过MINMAXINFO结构体控制窗口缩放限制。为了观察效果,建议将提供的代码实现添加到项目并运行。

7730

被折叠的 条评论
为什么被折叠?



