1、对话框组成
从MFC角度看,分为两类:
(1)对话框模板资源。对话框模板用于指定对话框的控件及其分布,Windows根据对话框模板来创建并显示对话框
(2)对话框类。用于实现对话框的功能,一般从CDialog类、CpropertySheet类、CpropertyPage类派生新类,完成特定的功能。
2、对话框分类
对话框分为模态(Model)对话框和非模态(Modeless)对话框
2.1、模态对话框
是指这种对话框显示时,其父窗口将失效,只有处理完对话框要求的动作,才会将控制权交换给父窗口。
<窗口风格>
虽然可赋予对话框任何风格,但是Windows建议y用DS_MODALFRAME(使得模态对话框具有厚边)、WS_CAPTION及WS_SYSMENU。
<注意>
屏幕上显示模态对话框时,它拥有自己的消息循环,因此,所有的输入窗口信息都不能指定为WS_CHILD风格,否则父窗口将失效,子窗口(对话框自己)也会随之失效。
2.2、非模态对话框
又称共享式对话框,在打开非模态对话框时,依然可以对其他窗口进行操作。
<窗口风格>
大部分都指定WS_POPUP、WS_CAPTION、WS_BORDER、及WS_SYSTEMMENU风格。典型的都包括系统菜单和标题。
<注意>
(1)非模态对话框从主程序的消息循环中获得输入消息。如果非模态对话框中有控件存在,而且允许用户用键盘去选择,就必须在消息循环中调用CWnd类(或其继承类)的成员函数IsDialogMessage()来判断输入消息是否要送给非模态对话框,若是,就处理它,否则就按百折不回的途径处理它。
(2)非模态对话框的建立靠CDialog类的成员函数Create()来完成,关闭则用CWnd类的成员函数DestroyWindow()来实现。
3、创建对话框的一般步骤
(1)添加一个新的对话框资源并用对话框编辑器设计对话框(修改ID等属性)
(2)创建新的对话框类,该类应从CDialog类中派生
(3)使用ClassWizard为对话框类加入与控件相关联的成员变量
(4)在对话框类中添加需要的消息处理函数