界面自适应屏幕分辨率.docx_第1页
界面自适应屏幕分辨率.docx_第2页
界面自适应屏幕分辨率.docx_第3页
界面自适应屏幕分辨率.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VC+控件自适应屏幕的方法 收藏 1.首先在初始化函数中,FormView在OnInitialUpdate(),Dialog在OnInitDialog()中初始化控件的大小。/开始初始化控件大小 m_IsInitialed = false; CRect m_ClientRect; this-GetClientRect(&m_ClientRect); CSize m_Forsize; m_Forsize = GetTotalSize();/在资源编辑器中定好大小后,程序运行时大小(不管最大化和最小化,该大小均为同一个值),客户区大于或等于显示的大小 double m_x = (double)m_ClientRect.Width() / m_Forsize.cx;/宽度方向发大倍数 double m_y = (double)m_ClientRect.Height() / m_Forsize.cy;/高度方向发大倍数 /调整控件的大小 CWnd *pWnd = NULL; pWnd = GetWindow(GW_CHILD); while(pWnd)/判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建 CRect rect; /获取控件变化前大小 pWnd-GetWindowRect(&rect); ScreenToClient(&rect);/将控件大小转换为在对话框中的区域坐标 m_ControlRect.insert(pair(pWnd-GetDlgCtrlID(), rect);/保存控件的初始大小,以便在OnSize函数中继续使用 int width = rect.Width(); int height = rect.Height(); WCHAR szBuf256; GetClassName(pWnd-m_hWnd,szBuf,256); if( _tcsicmp(szBuf,_T(Edit) = 0) /Edit只是位置变化,大小没有变 rect.top = m_y * rect.top; rect.left = m_x * rect.left; rect.bottom = rect.top + height; rect.right = rect.left + width; else /其它控件位置和大小均变化 rect.top = m_y * rect.top; rect.left = m_x * rect.left; rect.bottom = m_y * rect.bottom; rect.right = m_x * rect.right; pWnd-MoveWindow(&rect);/设置控件大小 pWnd = pWnd-GetWindow(GW_HWNDNEXT); /控件初始化结束 m_IsInitialed = true;2.如果界面在运行时大小可以改变,则在OnSize函数中加入如下代码/ TODO: 在此处添加消息处理程序代码CFormView:ShowScrollBar(SB_BOTH, false);/设置没有滚动条,视情况而定。 /在界面不是最小化并且已经初始化完毕if (!IsIconic() & m_IsInitialed)CSize m_Forsize;m_Forsize = GetTotalSize();double m_x = (double)cx / m_Forsize.cx;double m_y = (double)cy / m_Forsize.cy; /读取控件的初始大小map:iterator pos = m_ControlRect.begin();for (; pos != m_ControlRect.end(); +pos)CRect rect = pos-second;int width = rect.Width();int height = rect.Height();WCHAR szBuf256;GetClassName(GetDlgItem(pos-first)-m_hWnd,szBuf,256); if( _tcsicmp(szBuf,_T(Edit) = 0) rect.top = m_y * rect.top;rect.left = m_x * rect.left;rect.bottom = rect.top + height;rect.right = rect.left + width;elserect.top = m_y * rect.top;rect.left = m_x * rect.left;rect.bottom = m_y * rect.bottom;rect.righ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论