VS2010&MFC对话框编程(2)——对话框种类(模态/非模态对话框)

本文介绍了MFC中对话框编程的基础知识,包括对话框的组成、模态对话框和非模态对话框的特性与窗口风格,以及创建这两种对话框的一般步骤。模态对话框在显示期间阻止用户与父窗口交互,而非模态对话框允许同时操作其他窗口。创建模态对话框涉及添加对话框资源、派生对话框类、使用ClassWizard添加控件成员变量并实现消息处理函数。
摘要由CSDN通过智能技术生成

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)在对话框类中添加需要的消息处理函数

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值