EasySize使用笔记

要让对话框中的控件随着对话框大小的变化进行自动调整,是一件很头疼的事情,需要在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(280,250,fwSide,pRect);
}
这样就把对话框的最小尺寸限制在(280, 250)上了

 

6.添加控件布局映射,放到消息映射之后,基本格式如下:
BEGIN_EASYSIZE_MAP(class_name)
    ...
    EASYSIZE(control,left,top,right,bottom,options)
    ...
END_EASYSIZE_MAP

 

class_name就是对话框类的类名

control是要设置的控件的ID

left、top、right、bottom分别指的是该控件左、上、右、下方的控件的ID,也可以为以下特殊值:
        ES_BORDER:保持与边框距离不变
        ES_KEEPSIZE:保持大小不变
                所放位置:
                         left -- 表示和right指定的控件右对齐
                         right -- 表示和left指定的控件左对齐
                         top -- 表示和bottom指定的控件上对齐
                         bottom -- 表示和top指定的控件下对齐

options可指定为0,也可指定为以下值:
        ES_HCENTER:保持宽度不变,水平位置在left和right指定的控件正中间
        ES_VCENTER:保持高度不变,垂直位置在left和right指定的控件正中间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi编程大师2003 还有各类控件400多个.也有Delphi教学文章及书籍25个.和各类Delphi编程的软件原代码 不但能使你简单的操控Delphi进行编程.而且能对初学者进行深入浅出的教学. 同时Delphi的原代码能帮助各位Delphi爱好者在编程过程中得到不同的启发与参考. 本软件含有: BorlandDelphi7.06中文版 BorlandDelphi6中文版 BorlandDelphi5中文版 控件控件大全: DBISAM 3.07 SkinForm 界面控件 FlatStyle 文件备份 BackFile XP菜单 XPMenu DosMove RainXP XP Bar Menu 窗口停泊组件 RxLib2.75 nBdeDBF AVL平衡树控件包 常用数据结构控件包(+源码+测试程序) SourceEdit DevExpress For Delphi6&7 Inforpower 4000.E FlatStyle 平面界面控件 ehlib25 Devexpress DBTree 1.3 1 FS 序列号大全 FrmConv 1.0 PrintManager 1.0 超链接拖放 Delphi Project Launcher 1.3 Gifform For Delphi 1.1 1stClass for Delphi 6 3000.01 RegTool控件 1.0 Delphi 6.0 汉化资源包 繁简转换原码 WjTable Miniprint Miniprint_tryversion Spcomm Menubar mssql bitdbgrid exp aexcel aliased doci ln hgdbfilter kbmmemtab VclZip 2.23版本 一个极酷的TreeView控件,多种视觉效果.推荐 对于字符串进行DES加密的控件 在Delphi中制作扑克牌游戏的控件 eXperience dxPack12(一组dotNet控件) 界面控件ThemeEngine 3.2 界面控件Skinengine3.2.0 内存表控件 kbmMemTable TGifImage For D7 经本人修改过的XpMenu,真正xp效果 可支持窗体停靠的控件 Modem拨号构件 一个用于Ini文件控制的控件 DBPanel 一个支持多种图形格式的控件 Modem拨号控制控件 一个可以实现颜色渐变效果的label控件 TEasySize Skinengine 3.1.2 ADOTable TTransitionEffect 一个可以以动画方式显示Hint的控件 一个能够旋转显示其内的图像的Image控件 Gifimage For Delphi6 Richview1.4.2 SakEmail控件3.4.3版本 利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包for d5 拥有七种不同外观的改良版TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 能够嵌入TButton或TComboBox的TStringGrid控件 能够以回转的形式带出欲显示Form的控件 具有渐层色彩为背景之改良版TLabel构件 模拟大型电子广告牌的控件 VDF-Tools系列控件 能够得知True Type字体详细信息的非可视构件 直接存取硬件设备IO口地址的非可视构件BAIOPORT QuickReport实现自动分行显示的补丁 能够拦截系统内键盘输入信息的Hook构件 能够精简HTML文件的控件 可以处理XML的TQuickRTTI控件 制作 Microsoft ISAPI Extention 应用程序的构件 控制ISDN拨号的控件 AGHOTKEYMGR 针对 UDP 通讯协议的 Socket 构件 能够更改 TForm.Cpation 显示字体的非可视构件 改良版的 TTimer 构件 利用 MODEM 提供拨号功能的非可视构件 加强版 TTimer 构件 TCommStatus串行状态控件 一个具备 FTP 功能的构件 目前为止效果最好的mp3播放控件组 非常COOL的能够做出WIN2K般的效果动感界面控件 很cool的grid控件 换肤功能控件 自动缩放数据表格 V1.0 平滑字体控件包 V1.1 应用程序病毒免疫控件 V1.21 以可视鼠标拖放的方式产生 SQL 语句的可视构件 UCCOMP AExcel组件 模拟音响设备中纵向彩色LED指示表的控件 类似音响设备中立体旋钮构件 TRANSPARENT PRNTRAID TMnet 能够解析编辑MP3文件中的Tag的非可视构件 一个TextToSpeech(TTS)控件 一个报表控件 自缩放数据表格 TAutoDBGrid V1.0 应用程序病毒免疫控件 SelfAV V1.1 For Delphi 平滑字体控件包 V1.1Beta gifimage最新版本 MS的语音生成(TTS)的Delphi单元 功能全面的报表快速生成构件库 TTommHtmlLabel 存取和控制硬件的控件Tvichw32 能够让 TForm 构件产生半透明效果的非可视构件 GraphicEx87 最棒的Internet编程构件 Microsoft Office 97样式TComboBox 构件 JBS 系列的构件套件 ARC系列套件1.0.3 版 TBurner TDosMove Shell Control Pack VCL v1.5 TCadComboBox outlplus BUPack Component Package v1.4 Directx游戏制作开发包DGCBETA6的十七个例子 Directx游戏制作开发包DGCBETA6 DRIVEDIR TDsFancyButton CGI Expert Components Release 5.0.6 RaLib 1.00 TDsPanel TColorPageControl 超级中国式报表控件(printdbgrid)示例 TOutlook Button 1.0 TPageSetupDialog TStolliFullScreen TSpeedbtn.zip ALEXISRIOS fre AMDCPACK .......................

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值