- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在Windows提供的“画图”程序中,点击颜色菜单下的“编辑颜色”菜单项,会出现如下图所示的对话框。
这个对话框有点特别——当您点击“规定自定义颜色”按钮时,它会自动伸长一截,如图所示:
这个功能在我们自己编写的程序中,有时候也会用到的。比如说,我们经常通过对话框来查看/设定一些参数,但这些参数只有一部分是重要的或经常变化的,而另一部分则不那么重要或很少变化的。所以,通常情况下显示“简化版”的对话框用来设置最常用的参数,需要的时候再显示“完整版”的对话框用来设置全部的参数,是一个不错的选择。这样,可以在不损失对话框应有功能的前提下,使得程序界面更为干净整洁。同时,程序会显得更人性化、更智能,更体贴。
?? 那么,如何来实现这种可伸缩的对话框呢?
1 实现方法
??? 当然,可能有多种方法来实现它。比如,两个对话框同时存在,但同时只显示一个的方法;比如,初始的对话框就是“简化版”的对话框,然后在需要显示“扩展元素”时,通过动态创建来添加控件的方法。显然,第一种方法会占用较多的资源,还需要解决数据的同步问题;第二种方法在编写代码时会比较繁琐和麻烦。
??? 所以,大家通常采用“犹抱琵琶半遮面”的方法。即利用资源编辑器先将“完整版”的对话框做好,并把“简化版”的部分放在指定的区域(通常是左边或上边)。在需要显示“简化版”的时候,通过SetWindowPos函数来调整窗口(对话框是一种特殊的窗口)的大小,从而只显示指定的部分。
2 简单实例
??? 1)利用AppWizard建立一个名为Test的单文档工程,新建一个对话框,将OK、Cancel按钮移到左下方。插入一个新按钮(Caption:收缩,ID:IDC_BTN_DEMO),插入一个图像控件,将其拉成如下图所示的一条直线。在它的属性页中,将其ID改为:IDC_SEPARATOR,打开Style选项卡,选中Sunken,使其呈现为下凹状态。
2)建立对话框对应的类CDlgShrink,并添加IDC_BTN_DEMO按钮的响应函数,代码如下:
void CDlgShrink::OnBtnDemo()
{
???????? // TODO: Add your control notification handler code here
???????? CString str;
????????? //获得按钮文本
???????? GetDlgItemText(IDC_BTN_DEMO,str);
????????? if(str==收缩)
???????? {
????????????????? //设置按钮文本
?????????????????? SetDlgItemText(IDC_BTN_DEMO,扩展);
???????? }
???????? else
???????? {
?????????????????? SetDlgItemText(IDC_BTN_DEMO,收缩);
???????? }
????????? //两个静态变量,存储对话框尺寸信息
???????? static CRect rectLarge;
???????? static CRect rectSmall;
????????? //如果还没有填充数值
???????? if(rectLarge.IsRectNull())
???????? {
????????????? ???? CRect rectSeparator;
?????????????????? //获取完整对话框位置参数
?????????????????? GetWindowRect(rectLarge);
?????????????????? //获取图像控件的位置参数(有用的是right)
?????????????????? GetDlgItem(IDC_SEPARATOR)-GetWindowRect(rectSeparator);
?????????????????? rectSmall.left=rectLarge.left;
?????????????????? rectSmall.top=rectLarge.top;
?????????????????? rectSmall.right=rectSeparator.right;//替换新值
?????????????????? rectSmall.bottom=rectLarge.bottom;
???????? }
???????? if(str==收缩)
???????? {
????????????????? //显示“简化版”对话框
?????????????????? SetWindowPos(NULL,0,0,rectSmall.Width(),re
您可能关注的文档
- SWD协议的研究和ARM程序下载器的设计.pdf
- 探索中学数学高效课堂及有效教学模式的研究.doc
- oracle查询3种方法.doc
- 肠道菌群及肠易激综合征关系的研究进展.doc
- 一节握手游戏课反思 曹瑞霞.doc
- FX2系列PLC的滤波与刷新时间调整.doc
- 软件工程模拟试卷与答案3.doc
- C语言期末测试试题和答案.doc
- 黑马程序员:必看文章:十四个方法告诉你怎样实现PHP性能全面优化.doc
- 集装箱运输及多式联运第三次作业.doc
- 2025年在线英语教育学员流失率分析及对策报告.docx
- 2025年智能可穿戴设备在职业健康监测领域的应用案例解析.docx
- 2025年特色康养小镇文化与教育融合发展建议书.docx
- 2025年碳中和目标下能源结构调整与能源政策优化研究报告.docx
- 3.15活动策划方案(3篇).docx
- 零售行业会员数据分析报告:2025年会员生命周期价值最大化策略.docx
- 小学数学学习风格评价与差异化教学策略研究教学研究课题报告.docx
- 双碳背景下绿色金融支持绿色金融科技发展的路径研究.docx
- 高中英语教学中的文化教育策略与实践探索教学研究课题报告.docx
- 融合跨学科知识的初中物理教学促进科学态度与社会责任感培养研究教学研究课题报告.docx
文档评论(0)