对话框的来龙去脉

 

1. Windows GUI程序的基础
最基础最精干的Windows GUI程序包括以下几个部分:
  1) 调用RegisterClass注册窗口类。
  2) 调用CreateWindow创建窗口。
  3) 调用ShowWindow和UpdateWindow显示窗口。
  4) 一个消息循环。
  5) 一个窗口函数,或者叫窗口消息处理函数。
具体的例子代码参见《Windows 程序设计》第3章。顺便提一下,要学习Windows GUI程序设计,这本书推荐看一下,一本好书的作用无论怎么强调都不为过。

 

2.基于对话框的Windows GUI程序

 

3.代码的背后

  与1的窗体相比,2有自己的特点,比如程序的界面来自于资源管理器的定义,能响应Tab键切换焦点等等。但是对话框也是Windows窗体的一种,它的实现还是基于1的代码。我们进入2的代码的函数内部,就可以看到这一点。
  1)CreateDialog是一个宏,封装了函数CreateDialogParam。CreateDialogParam首先LoadResource,然后调用CreateDialogIndirectParam。资源管理器里面定义的模板,也由CreateDialogParam加载,再传递给CreateDialogIndirectParam。
 2)CreateDialogIndirectParam做了很多事情:
    A)建立对话框的框架,包括分析资源文件里面定义的对话框风格,加载菜单,加载字体等。
    B)创建控件。这些控件都是在资源文件里面定义的。
    C)调用CreateWindowEx,这个说明对话框本质上也是窗体。这个函数需要提供一个窗体类,这个传给它的窗体类就是微软提供的默认的对话框窗体类,类名是#32770,这个窗体类的窗体过程是DefDlgProc。
    D)需要注意的是,在CreateDialog也有一个过程,这个过程我们称为对话框过程。有消息过来,DefDlgProc会调用这个对话框过程,对话框过程响应消息。如果返回true,意味着告诉DefDlgProc,我已经处理消息了。如果返回false,意味着告诉DefDlgProc,这个消息还需要你处理一下。
  3)对话框的消息循环与1相比,多了一个IsDialogMessage。界面上控件的焦点切换正是在这个函数里面实现的。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值