RSS
热门关键字:  计算机有关资料  33252  mkv  word  MKV_NT
当前位置 : 主页>vc编程>界面/窗口>列表

如何控制窗口框架的最大最小尺寸

来源:VCFAN 作者:佚名 时间:2006-11-30 点击:

要控制一个框架的的最大最小尺寸,你需要做两件事情.在CFrameWnd的继承类中
处理消息WM_GETMINMAXINFO,结构MINMAXINFO设置了整个窗口类的限制,因此记
住要考虑工具条,卷动条等等的大小.

// 最大最小尺寸的象素点 - 示例
#define MINX 200
#define MINY 300
#define MAXX 300
#define MAXY 400

void CMyFrameWnd::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
    CRect rectWindow;
    GetWindowRect(&rectWindow);

    CRect rectClient;
    GetClientRect(&rectClient);

      // get offset of toolbars, scrollbars, etc.
    int nWidthOffset = rectWindow.Width() - rectClient.Width();
    int nHeightOffset = rectWindow.Height() - rectClient.Height();

    lpMMI->ptMinTrackSize.x = MINX + nWidthOffset;
    lpMMI->ptMinTrackSize.y = MINY + nHeightOffset;
    lpMMI->ptMaxTrackSize.x = MAXX + nWidthOffset;
    lpMMI->ptMaxTrackSize.y = MAXY + nHeightOffset;
}
第二步,在CFrameWnd的继承类的PreCreateWindow函数中去掉WS_MAXIMIZEBOX消
息,否则在最大化时你将得不到预料的结果.

BOOL CMyFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
{
    cs.style &= ~WS_MAXIMIZEBOX;
    return CFrameWnd::PreCreateWindow(cs);
}

 

另添几个例子

操作系统发送一个WM-GETMAXMININFO消息来确定窗口的位置、大小以及追踪尺寸,
使用ClassWizard限制窗口的追踪尺寸,下面的例子将窗口的追踪尺寸限制为1/4屏幕大
小:
void CMainFrame : : OnGetMinMaxInfo (MINMAXINFO FAR *IpMMI)
{
IpMMI—>ptMaxTrackSize. x=GetSystemMetrics (SM_CXSCREEN) /2;
IpMMI—>ptMaxTrackSize. y =GetSystemMetrics (SM_CYSCREEN) /2;
CMDIFrameWnd: : OnGetMinMaxInfo(IpMMI);
}

对话框限制最小尺寸
void CMainDialog::OnGetMinMaxInfo(MINMAXINFO *lpMMI)
{
 lpMMI->ptMinTrackSize = CPoint(MINX,MINY);
}

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册