打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用EasySize实现控件随窗口的大小变化
userphoto

2010.08.22

关注
        要让对话框中的控件随着对话框大小的变化进行自动调整,是一件很头疼的事情,需要在WM_SIZE的响应函数中对所有的控件用MoveWindow()或者SetWindowPos()设置其变化比例,极其繁琐。EasySize是一个很好解决方案,用一些宏封装了内部的实现机制,使用起来方便快捷。原文地址:http://www.codeproject.com/KB/dialog/easysize.aspx(注册即可下载)
 
1.首先将EasySize.h拷贝到工程文件夹中,然后在stdafx.h中包含该头文件:
#include "EasySize.h"
 
2.类似于消息映射机制的方式,在对话框类声明中添加DECLARE_EASYSIZE宏:
class CEasySizeDemoDlg : public CDialog
{
DECLARE_EASYSIZE
...
 
3.在OnInitDialog()函数中添加INIT_EASYSIZE宏(注意有分号):
BOOL CEasySizeDemoDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
...
   
    INIT_EASYSIZE;
    return TRUE; // return TRUE  unless you set the focus to a control
}
 
4.响应WM_SIZE消息,在响应函数中添加UPDATE_EASYSIZE宏(注意有分号):
void CEasySizeDemoDlg::OnSize(UINT nType, int cx, int cy)
{
    CDialog::OnSize(nType, cx, cy);

    UPDATE_EASYSIZE;
}
 
5.如果需要限制对话框有一个最小尺寸,首先在资源视图中为对话框添加上最大化最小化按钮,然后Class Wizard中选择Class Info标签,在Message fileter下拉列表中选择Window,然后再点击Message Maps标签,就出现WM_SIZING消息了,添加该消息的响应函数:
void CEasySizeDemoDlg::OnSizing(UINT fwSide, LPRECT pRect)
{
    CDialog::OnSizing(fwSide, pRect);
    EASYSIZE_MINSIZE(600,400,fwSide,pRect);
}
这样就把对话框的最小尺寸限制在(600, 400)上了
 
6.添加控件布局映射,放到消息映射之后,基本格式如下:
BEGIN_EASYSIZE_MAP(class_name)
    ...
    EASYSIZE(control,left,top,right,bottom,options)
    ...
END_EASYSIZE_MAP
 
下面是关于EASYSIZE(control,left,top,right,bottom,options)的说明
control为对话框中的控件ID值,left,top,right,bottom四个参数为控件位置的坐标,其值可以选择ES_BORDER,ES_KEEPSIZE, 控件ID值三者之一。Options可以为ES_HCENTER, ES_VCENTER的结合,options可置0。
        ES_BORDER表示控件与对话框边界(以下简称边界)的距离;
ES_KEEPSIZE表示控件水平/垂直方向上尺寸保持不变;
控件ID值表示当前控件与指定控件之间的距离;
ES_HCENTER表示缩放后控件在指定位置内水平居中;
ES_VCENTER表示缩放后控件在指定位置内垂直居中;
详细出处参考:http://www.itqun.net/content-detail/188337.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
MFC对话框控件和背景图片自适应窗口最大化和拉伸缩放的实现
OnCreate PreCreateWindow PreSubclassWindow
VC之控件篇(一)
CLRCDlg::CLRCDlg(CWnd* pParent /*=NULL*/): CDialog(CLRCDlg::IDD, pParent)
VC MFC中修改STATIC的文本颜色
关于模式与非模式对话框
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服