第12章 对话框和对话框类CDialog.pdfVIP

  1. 1、本文档共25页,可阅读全部内容。
  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文档。上传文档
查看更多
第12章 对话框和对话框类CDialog.pdf

第 12章 对话框和对话框类CDialog 对话框经常被使用,因为对话框可以从模板创建,而对话框模板是可以使用资源编辑器方便 地进行编辑的。 12.1 模式和无模式对话框 对话框分两种类型,模式对话框和无模式对话框。 12.1.1 模式对话框 一个模式对话框是一个有系统菜单、标题栏、边线等的弹出式窗口。在创建对话框时指定 WS_POPUP, WS_SYSMENU, WS_CAPTION 和 DS_MODALFRAME 风格。即使没有指定 WS_VISIBLE 风格,模式对话框也会被显示。 创建对话框窗口时,将发送 WM_INITDIALOG 消息(如果指定对话框的 DS_SETFONT 风 格,还有 WM_SETFONT 消息)给对话框过程。 对话框过程(Dialog box procedure)不是对话框窗口的窗口过程(Window procedure) 。在Win32 里,对话框的窗口过程由 Windows 系统提供,用户在创建对话框窗口时提供一个对话框过 程由窗口过程调用。 对话框窗口被创建之后,Windows 使得它成为一个激活的窗口,它保持激活直到对话框过程 调用::EndDialog 函数结束对话框的运行或者Windows 激活另一个应用程序为止,在激活时, 用户或者应用程序不可以激活它的所属窗口(Owner window )。 从某个窗口创建一个模式对话框时,Windows 自动地禁止使用(Disable )这个窗口和它的 所有子窗口,直到该模式对话框被关闭和销毁。虽然对话框过程可以 Enable 所属窗口,但 是这样做就失去了模式对话框的作用,所以不鼓励这样做。 Windows 创建模式对话框时,给当前捕获鼠标输入的窗口(如果有的话)发送消息 WM_CANCLEMODE 。收到该消息后,应用程序应该终止鼠标捕获(Release the mouse capture) 以便于用户能把鼠标移到模式对话框;否则由于Owner 窗口被禁止,程序将失去鼠标输入。 为了处理模式对话框的消息,Windows 开始对话框自身的消息循环,暂时控制整个应用程序 的消息队列。如果Windows 收到一个非对话框消息时,则它把消息派发给适当的窗口处理; 如果收到了 WM_QUIT 消息,则把该消息放回应用程序的消息队列里,这样应用程序的主 消息循环最终能处理这个消息。 当应用程序的消息队列为空时,Windows 发送 WM_ENTERIDLE 消息给 Owner 窗口。在对 话框运行时,程序可以使用这个消息进行后台处理,当然应该注意经常让出控制给模式对话 框,以便它能接收用户输入。如果不希望模式对话框发送 WM_ENTERIDlE 消息,则在创建 模式对话框时指定 DS_NOIDLEMSG 风格。 一个应用程序通过调用::EndDialog 函数来销毁一个模式对话框。一般情况下,当用户从系 统菜单里选择了关闭(Close )命令或者按下了确认(OK )或取消(CANCLE )按钮,::EndDialog 被对话框过程所调用。调用::EndDialog 时,指定其参数nResult 的值,Windows 将在销毁对 话框窗口后返回这个值,一般,程序通过返回值判断对话框窗口是否完成了任务或者被用户 取消。 12.1.2 无模式对话框 一个无模式对话框是一个有系统菜单、标题栏、边线等的弹出式窗口。在创建对话框模板时 指定 WS_POPUP 、WS_CAPTION 、WS_BORDER 和 WS_SYSMENU 风格。如果没有指定 WS_VISIBLE 风格,无模式对话框不会自动地显示出来。 一个无模式对话框既不会禁止所属窗口,也不会给它发送消息。当创建一个模式对话框时, Windows 使它成为活动窗口,但用户或者程序可以随时改变和设置活动窗口。如果对话框失 去激活,那么即使所属窗口是活动的,在 Z 轴顺序上,它仍然在所属窗口之上。 应用程序负责获取和派发输入消息给对话框。大部分应用程序使用主消息循环来处理,但是 为了用户可以使用键盘在控制窗口之间移动或者选择控制窗口,应用程序应该调 用::IsDialogMessage 函数。 这里,顺便解释::IsDialogMessage 函数。虽然该函数是为无模式对话框设计的,但是任何包 含了控制子窗口的窗口都可以调用它,用来实现类似于对话框的键盘选择操作。 当::IsDialogMessage 处理一个消息时,它检查键盘消息并把它们转换成相应对话框的选择命 令。例如,当 Tab 键被压下时,下一个或下一

您可能关注的文档

文档评论(0)

zhangchao11 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档