windows程序设计-第八讲:对话框.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
windows程序设计-第八讲:对话框.doc

对话框 对话框是应用程序创建的用来获取用户输入的一个临时窗口。应用程序一般用对话框来提示用户输入命令的附加信息。如果有很多输入超出了菜单可以处理的程度,那么我们可以使用对话框来取得输入信息。 对话框的一般形式是包含多种子窗口控件的弹出式窗口,这些控件的大小和位置在程序资源描述文件的对话框模板中指定。虽然程序能够手工定义对话框模板,但是现在通常是在Visual C++ Developer Studio中以交式操作的方式设计的,然后由Developer Studio建立对话框模板。 当程序依据模板建立的对话框时,Windows 负责建立弹出式对话框窗口和子窗口控件,并提供处理对话框消息(包括所有键盘和鼠标输入)的窗口。windows内部代码被称为对话框管理器。 Windows的内部对话框窗口消息处理程序所处理的许多消息也传递给程序中的函数,这个函数即是所谓的对话框程或者对话。对话程与普通的窗口程序类似,但是也存在着一些重要区别。一般来说,除了在建立对话框时初始化子窗口控件,处理来自子窗口控件的消息以及结束对话框之外,程序不需要再给对话框增加其它功能。对话通常不处理WM_PAINT消息,也不直接处理键盘和鼠标输入。 模态对话框:在应用程序能继续运行之前,要求用户必须显式地提供信息或取消对话框,对话框不能在同一应用程序的其它窗口之间进行切换,把模态对话框与不输入附加信息就不能继续执行的命令一起使用。 非模态对话框:允许用户提供信息并返回前一任务,但不关闭该对话框。 模态对话框通过调用单个函数就可以创建、执行它们的任务和销毁,因此比无模态对话框更容易管理。 无论是创建模态对话框还是非模态对话框,应用程序都必须提供一个对话框模板来描述对话框的样式和内容,并提供一个对话框过程来完成任务。 应用程序一般用DialogBox或CreateDialog函数来创建对话框。DialogBox用来创建模态对话框,CreateDialog用来创建无模态对话框。 通用对话框:为实现标准用户界面,提供统一、通用的功能,而实现的一组增强对话框;开发人员可以根据应用程序的特点,对已有的这些通用对话框进行定制扩展。 每一个对话框都有一个属主窗口,应用程序在创建对话框时应指定一个属主窗口。若属主窗口被隐藏或销毁,对话框同时被隐藏或销毁。一个对话框可以没有属主窗口,但不建议这样使用,例如一个模态对话框没有属主,Windows就不会使其他窗口无效,这样就达不到使用模态对话框的目的。如果一个非模态对话框没有属主,那么当应用程序的其他窗口被隐藏或销毁时,Windows不会隐藏和销毁该对话框,这就要求应用程序完成特殊的处理工作,以便在合适的时机隐藏和销毁该对话框。 消息框:消息框也是一个对话框,但是Windows完全控制了消息框的创建和管理。这就意味着应用程序不用提供对话框模板和对话框过程。应用程序在创建该对话框时还可以指定MB_SYSTEMMODA来弹出一个系统消息框,这个消息框会挂起所有运行中的应用程序,用来向用户提出严重警告等信息。 模态对话框: 模态对话框是一个弹出窗口,包含System菜单、标题栏和粗边界。对于模态对话框WS_VISIBLE风格没有效果。应用程序决不能创建一个具有WS_CHILD样式的模态对话框,具有这种风格的模式对话框将使自己无效,从而使应用程序不能继续。 应用程序调用DialogBox或者DialogBoxIndirect就可以创建模态对话框。所不同处在于DialogBox要求一个模板资源名,而DialogBoxIndirect要求一个模板的内存对象句柄。 模态对话框一创建,Windows自动将它变成活动窗口。属主窗口以及其子窗口都被变成无效的。当模态对话框活动时,用户或应用程序都不应使属主窗口成为活动的。 为了处理模态对话框的消息,Windows启动一个临时消息环接管整个应用程序消息队列。如果Windows收到一条明显不是对话框的消息,就把它发送给正确的窗口(非排队消息)。如果发现一条WM_QUIT消息,则把它投递给应用程序的消息队列,以便使应用程序主消息环最终能够收到该消息。 只要应用程序的消息队列为空,Windows就把WM_ENTERIDLE消息发送给属主窗口,使得应用程序能够在对话框仍然存在的情况下进行后台任务处理。但是这样并不理想,可以使用PeekMessage来交出控制权,也可以对对话框使用DS_NOIDLEMSG风格来禁止Windows发送该消息。 使用EndDialog来终止一个对话框,并且返回一个值来指明是否成功的完成了任务。 模态对话框的内部实现原理 DialogBox //#define DialogBox… DialogBoxParam… DialogBoxParam 逐层向上查找祖先窗口,直到找到一个具有p

文档评论(0)

叶倾城 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档