您的位置:首页 > 其它

MFC中静态与动态设置窗体最大与最小尺寸

2012-07-23 16:08 435 查看
动态:需要使用的东西,消息: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;
}

 
参考文献:【1】http://blog.csdn.net/sqcfj/article/details/7245568

                   【2】http://www.chenj.in/2011/10/31/%E9%99%90%E5%AE%9AMFC%E7%AA%97%E5%8F%A3%E5%A4%A7%E5%B0%8F%E7%9A%84%E7%AE%80%E5%8D%95%E6%96%B9%E6%B3%95
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mfc styles dialog struct class
相关文章推荐