


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、对话框的大小变化后,假若对话框上的控件大小不变化,看起来会比较难看。下面就介绍怎么让对话框上的控件随着对话框的大小的变化自动调整。首先明确的是Windows有一个WM_SIZE消息响应函数,这个函数在对话框大小发生变化的时候调用,所以我们可以记录下原来对话框的大小,还有当前对话框的大小(这个不用自己算,系统已给出),然后根据控件做出相应比例的调整。比如原来对话框大小为a,现在为b,原来控件大小为c,那么现在的控件大小应该为c*b/a;(注意a不能为0)。看实例:(黑体字为添加的代码!)假设对话框类为CMyDlg类,那么首先设置一个变量CRect m_rect; /用于保存原对话框大小那么在对话
2、框创建的时候先获得对话框的大小BOOL CMyDlg:OnInitDialog() . SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE); / Set small icon / TODO: Add extra initialization here GetClientRect(&m_rect); /获取对话框的大小 return TRUE; / return TRUE unless you set the focus to a control然后再手动添加一个函数,用以实现具体的变化void CMyDlg:Change
3、Size(UINT nID, int x, int y) /nID为控件ID,x,y分别为对话框的当前长和宽 CWnd *pWnd; pWnd=GetDlgItem(nID); if(pWnd!=NULL) /判断是否为空,因为在窗口创建的时候也会调用OnSize函数,但是此时各个控件还没有创建,Pwnd为空 CRect rec; pWnd-GetWindowRect(&rec); /获取控件变化前的大小 ScreenToClient(&rec); /将控件大小装换位在对话框中的区域坐标 rec.left=rec.left*x/m_rect.Width(); /按照比例调整空间的新位置 rec
4、.top=rec.top*y/m_rect.Height(); rec.bottom=rec.bottom*y/m_rect.Height(); rec.right=rec.right*x/m_rect.Width(); pWnd-MoveWindow(rec); /伸缩控件 最后添加windows消息响应函数OnSize:void CMyDlg:OnSize(UINT nType, int cx, int cy) /cx,cy就是当前对话框的长和宽 CDialog:OnSize(nType, cx, cy); / TODO: Add your message handler code her
5、e if(nType!=SIZE_MINIMIZED ) /判断窗口是不是最小化了,因为窗口最小化之后 ,窗口的长和宽会变成0,当前一次变化的时就会出现除以0的错误操作 ChangeSize(IDC_LIST1,cx,cy); /对每一个控件依次做调整 ChangeSize(IDC_LIST2,cx,cy); ChangeSize(IDC_BUTTON1,cx,cy); ChangeSize(IDC_BUTTON2,cx,cy); GetClientRect(&m_rect); /最后要更新对话框的大小,当做下一次变化的旧坐标; 任务完成!1.单文档窗体大小的设置。在CxxxApp中的Init
6、Instance中加入如下代码:m_pMainWnd-SetWindowPos(NULL,0,0,950,680,SWP_NOMOVE); /此句为添加代码,用于改变窗体的大小 m_pMainWnd-ShowWindow(SW_SHOW); m_pMainWnd-UpdateWindow(); / 仅当具有后缀时才调用 DragAcceptFiles / 在 SDI 应用程序中,这应在 ProcessShellCommand 之后发生 return TRUE; 2.对话框窗体大小的设置。jiyuan.MoveWindow(0,0,950,680); /在此jiyuan为对话框窗体类的对象。2.
7、1举例如下:2.1.1在xxxView.h头文件当中定义窗体的对象jiyuan,代码如下:class CxxxView : public CViewprotected: / 仅从序列化创建 CgzsjView(); DECLARE_DYNCREATE(CgzsjView)/ 特性public: CgzsjDoc* GetDocument() const; CJiyuan jiyuan; /定义对话框类的对象,在此CJiyuan为窗体的类。2.1.2 在xxxView.cpp文件当中需要控制窗体的地方添加控制窗体位置和大小的代码,如:void CgzsjView:On32771() /公差平均值计算响应函数 / TODO: 在此添加命令处理程序代码 if(:IsWindow(jiyuan.m_hWnd) /如果对话框已经打开 jiyuan.ShowWindow(SW_SHOW); /显示对话框 jiyuan.MoveWindow (0,0,950,680); /调整对话框的位置和大小 gongcha.DestroyWindow(); /销毁其他的对话框,在此,gongcha为其他对话框类的对象 else/(!:IsWindow(jiyuan.m_hWnd) /如果对话框还未打开 jiyuan.Create(IDD_DIALOG1,this); /创建对话框 jiyuan.Move
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年K2教育中STEM课程实施与效果评估:创新模式探索
- 语文(武汉卷)2025年中考考前押题最后一卷
- 经导管植入式人工心脏瓣膜2025
- 小升初六年级数学下册常考易考知识点课件《第六单元第10讲:解方程》人教版
- 智慧政务+DeepSeek大模型应用方案
- AI大模型赋能数字化水利监管平台建设方案
- 基于Protel教学新模式改革的探索与研究
- 华为任职资格体系建设(一)16P
- 山东省菏泽市巨野县2024-2025学年七年级下学期期中生物试题 (含答案)
- 现代汉语上册试题及答案
- 无人机航拍技术教案(完整版)
- 2型糖尿病分级诊疗
- 工程力学基础知识单选题100道及答案解析
- 《贫民窟的百万富翁》电影赏析
- 2025年青海省中考数学模拟试卷附答案解析
- 新手主播直播带货策划案-新手主播直播带货培训教程
- 企业合规管理手册
- 广告设计师三级理论知识鉴定要素细目表
- 企业员工心理健康辅导服务预案
- 二年级道法《我能行》
- 初中英语中考常考一词多义词总结
评论
0/150
提交评论