学习笔记之深入浅出MFC 第4章 对话框的运行

来源:互联网 发布:网络药理学会议 编辑:程序博客网 时间:2024/05/20 02:55

Windows的对话框以其与父窗口的关系,分为两类:

1、“令其父窗口无效,直到对话框结束”,这种称为model对话框;

2、“父窗口与对话框共同运行”,这种称为modeless对话框。

比较常用的是model对话框。

为了做出一个对话框,程序员需要准备两样东西:

1、对话框模版(dialog template)。这是在RC文件中定义的一个对话框外貌,以各种方式决定对话框的大小、字形、内部有哪些控件、各在什么位置等等。

2、对话框函数(dialog procedure)。其型态非常类似于窗口函数,但是它只处理WM_INITDIALOG和WM_COMMAND两个消息。对话框中的各个控件也都是小小窗口,各有自己的窗口函数,它们以消息与其管理者(父窗口,也就是对话框)沟通。而所有的控件传来的消息都是WM_COMMAND,再有其参数分辨哪一种控件以及哪一种通知消息(notification)。

model对话框的激活到结束的过程,靠两个API函数实现,分别是DialogBox和EndDialog。具体的实现过程如下图所示。

从上图中可以看出对话框从产生到结束的整个过程,现在我们来逐步介绍一下:首先,由DialogBox函数开启一个对话框,在这个函数的参数中指明了对话框面板的名称,父窗口,以及对话框函数名称。其中对话框面板中对对话框中包含的控件、外观等信息进行了设置。这也是呈现在用户眼前的对话框外形了。然后,所有关于对话框的操作相关都在对话框函数中进行。对话框函数的参数跟窗口函数是一样的,都是对传入的消息类型及参数进行处理。这里还是应用了switch/case结构分别对不同的消息进行处理操作。

对话框内部存在一个处理循环,这样就可以随时等待消息的到达并作出处理了。

对话框处理过消息之后,应该传回TRUE;如果未处理过消息,则应该传回FALSE。这是因为你的对话框函数的上层还有一个系统提供的默认对话框函数。如果传回FALSE,该默认对话框函数就会接手处理。


0 0
原创粉丝点击