设为首页 加入收藏

TOP

VC窗口自由的调整大小的实现(一)
2013-09-26 19:36:13 来源: 作者: 【 】 浏览:331
Tags:窗口 自由 调整 大小 实现

  VC窗口自由的调整大小的实现。具体代码和详细的英文说明,本篇是使用后的具体细节说明。

  1,将在对话框的属性里设置 边框可调整大小的

  2,在主窗体cpp添加 #include EasySize.h ,也可以按照原创的方法添加到 stdafx.h中

  3,在定义主窗体的地方

  以下是引用片段:

  class CEasySizeDemoDlg : public CDialog

  {

  DECLARE_EASYSIZE //添加这个,如果添加后编译错误,参考步骤2。

  4,在主窗体的OnInitDialog消息函数中

  以下是引用片段:

  BOOL CEasySizeDemoDlg::OnInitDialog()

  {

  CDialog::OnInitDialog();

  ...

  INIT_EASYSIZE; //添加这个

  return TRUE; // return TRUE unless you set the focus to a control

  }

  5,重载消息WM_SIZE消息函数

  以下是引用片段:

  void CEasySizeDemoDlg::OnSize(UINT nType, int cx, int cy)

  {

  CDialog::OnSize(nType, cx, cy);

  UPDATE_EASYSIZE; //添加这个

  }

  6,如果你希望窗口在调整大小的时候限制最大不能超过多少,最小不能小于多少可以重载onsizing消息

  这个消息好象不能在类向导里直接添加,其实是可以的。当然,你要是嫌麻烦的话,就如下做1:

  直接早在:

  以下是引用片段:

  ON_WM_SIZE();下面再添加了这个

  ON_WM_SIZING() ;

  然后查找到:

  以下是引用片段:

  afx_msg void OnSize(UINT nType, int cx, int cy);下面再添加了这个

  afx_msg void OnSizing(UINT fwSide, LPRECT pRect);

  再添加事件处理函数:

  以下是引用片段:

  void CEasySizeDemoDlg::OnSizing(UINT fwSide, LPRECT pRect)

  {

  CDialog::OnSizing(fwSide, pRect);

  EASYSIZE_MINSIZE(280,250,fwSide,pRect); //280,250是最小尺寸,

  //如果想拥有最大尺寸功能可以修改EasySize.h,仿照EASYSIZE_MINSIZE的方法写个最大限制的。

  }

  当然,你也可以用类向导来做的:类向导―>classinfo(类信息)―>Messagefilter―>Windows

  好了,然后你再回到Message maps里面去看message是不是里面就有了你要的WM_SIZING了,^_^!

  7,最后添加 消息映射

  以下是引用片段:

  BEGIN_EASYSIZE_MAP( your main dialog name) //这里修改成主窗体类名

  ...

  //这里针对每个需要在调整窗体大小时调整大小位置的控件添加处理函数

  EASYSIZE(control,left,top,right,bottom,options) //这里的control写控件的id号

  //left:如果要保持与主窗体左边位置固定可以写ES_BORDER,如果要保持大小不变,此处不加特殊处理,写ES_KEEPSIZE,如果要以其他空间的左边,作为基准可以写该控件的id号

  //top,right,bottom同上

  //options控制水平垂直居中效果,如ES_HCENTER|ES_VCENTER ,无特殊写0

  ...

  END_EASYSIZE_MAP

  具体EASYSIZE(control,left,top,right,bottom,options) 的用法:

  其中:control为对话框中的控件ID值,left,top,right,bottom四个参数为控件位置的坐标,其值可以选择ES_BOARD,ES_KEEPSIZE, 控件ID值三者之一。Options可以为ES_HCENTER, ES_VCENTER的结合,options可置0。

   

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇VC??????????????С???? 下一篇VC++实现拨号上网程序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: