- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、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(),
您可能关注的文档
- 口腔科医师培训内容..doc
- 口腔解剖学大题总结完整版考试必考..docx
- 口腔颌面外科术前常规护理..doc
- 口译基础理论和技巧..doc
- 可信计算研究报告..doc
- 可变气门正时技术详解..doc
- 可口可乐公司的营销组合分析..doc
- 可口可乐研究..doc
- 可口可乐课程设计..doc
- 可持续发展观论文可持续性发展论文科学发展观视角下企业盈利质量的可持续性分析..doc
- 8 黄山奇石(第二课时)课件(共22张PPT).pptx
- 22《纸船和风筝》教学课件(共31张PPT).pptx
- 17 松鼠 课件(共23张PPT).pptx
- 23《海底世界》课件(共28张PPT).pptx
- 21《大自然的声音》课件(共18张PPT).pptx
- 第12课《词四首——江城子 密州出猎》课件 2025—2026学年统编版语文九年级下册.pptx
- 第2课《济南的冬天》课件(共42张PPT) 2024—2025学年统编版语文七年级上册.pptx
- 17 跳水 第二课时 课件(共18张PPT).pptx
- 第六单元课外古诗词诵读《过松源晨炊漆公、约客》课件 统编版语文七年级下册.pptx
- 统编版六年级语文上册 22《文言文二则》课件(共27张PPT).pptx
原创力文档


文档评论(0)