如何根据对话框大小调整控件大小

原创|其它|编辑:郝浩|2010-05-05 13:48:11.000|阅读 1005 次

概述:如果对话框或视类的大小调后,控件的大小和位置没有变化,界面看起来会很不爽,本文介绍如何根据对话框大小调整控件大小。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  如果对话框或视类的大小调后,控件的大小和位置没有变化,界面看起来会很不爽

  控件是从CWnd派生的,但不能使用SetWindowPos()或OnSize()或OnSizing()来改变其大小,应在父窗口的WM_SIZE消息中使用MoveWindow()来进行调整。

  VC++之根据对话框大小调整控件大小

  1、在对话框类中加入成员变量CRect m_rect;用于保存对话框大小变化前的大小;

  2、在对话框的OnInitDialog()函数中获取对话框创建时的大小:GetClientRect(&m_rect);

  3、在WM_SIZE的响应函数OnSize()中加入以下代码:


  view source 
  print 
  01CWnd *pWnd;
  02pWnd = GetDlgItem(IDC_LIST); //获取控件句柄
  03if(pWnd)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建
  04{
  05 CRect rect; //获取控件变化前大小
  06 pWnd->GetWindowRect(&rect);
  07 ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
  08 // cx/m_rect.Width()为对话框在横向的变化比例
  09 rect.left=rect.left*cx/m_rect.Width();/**//////调整控件大小
  10 rect.right=rect.right*cx/m_rect.Width();
  11 rect.top=rect.top*cy/m_rect.Height();
  12 rect.bottom=rect.bottom*cy/m_rect.Height();
  13 pWnd->MoveWindow(rect);//设置控件大小
  14}
  15GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP