动态:需要使用的东西,消息:WM_GETMINMAXINFO,映射函数:OnGetMinMaxInfo(),结构体:MINMAXINFO
在消息WM_GETMINMAXINFO的映射函数下填写代码:
void CNewBNCDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{CPoint pt(400,400);
lpMMI->ptMinTrackSize=pt;CDialog::OnGetMinMaxInfo(lpMMI);
}
即可实现限制窗体最小尺寸的功能。
结构体:
typedef struct tagMINMAXINFO { POINT ptReserved; POINT ptMaxSize; POINT ptMaxPosition; POINT ptMinTrackSize; POINT ptMaxTrackSize; } MINMAXINFO;参数说明:
ptReserved:预留给内部使用,即预留值
ptMaxSize: 设置窗口最大化时的宽度、高度
ptMaxPosition: 设置窗口最大化时x坐标、y坐标
ptMinTrackSize: 设置窗口最小宽度、高度
ptMaxTrackSize:设置窗口最大宽度、高度实例:
void CTestDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
lpMMI->ptMaxSize.x = 800; // 设置窗口最大化时的宽度
lpMMI->ptMaxSize.y = 600; // 设置窗口最大化时的高度
lpMMI->ptMaxPosition.x = 100; // 设置窗口最大化时x坐标
lpMMI->ptMaxPosition.y = 100; // 设置窗口最大化时y坐标
lpMMI->ptMinTrackSize.x = 400; // 设置窗口最小宽度
lpMMI->ptMinTrackSize.y = 400; // 设置窗口最小高度
lpMMI->ptMaxTrackSize.x = 600; // 设置窗口最大宽度
lpMMI->ptMaxTrackSize.y = 500; // 设置窗口最大高度
CDialog::OnGetMinMaxInfo(lpMMI);
}
静态:在CMainFrame中,在PreCreateWindow中添加静态代码;在DIALOG中,在OnInitDialog函数中添加静态代码。
例如在CMainFrame中:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return false;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style &= ~WS_MAXIMIZEBOX; //禁用最大化按钮
cs.style &= ~WS_THICKFRAME; //禁止调整窗口大小
cs.cx = 800; //固定窗口宽度
cs.cy = 600; //固定窗口高度(包括菜单栏等)
return true;
}