第四篇 对话框.pptVIP

  • 4
  • 0
  • 约3.13千字
  • 约 23页
  • 2017-06-03 发布于湖北
  • 举报
非模态对话框 非模态对话框允许用户在处理非模态对话框的同时处理目标对话框,其不会垄断用户的输入,如图4-5所示。 使用ClassWizard加入成员变量 创建好了对话框类后,就可以使用ClassWizard为对话框类加入与控件相关联的成员变量了。 添加消息处理函数 所谓消息处理函数即窗口过程,在这个函数中,不同的消息将用switch分支语句分配到不同的处理程序中去,消息处理函数在应用程序中的功能如图4-23所示。 添加消息处理函数 双击ClassWizard中的按钮来打开【Add Member Function】对话框。在该对话框中添加消息处理函数。事实上,读者可以右击该类,在其中选择【Add Windows Message Handle】菜单项,在其中也可添加消息处理函数。 显示非模态对话框 例如,要显示一个非模态对话框m_Mydlg,其实现代码如下所示。 if (!m_Mydlg.m_hWnd) //判断对话框是否已被创建 { m_Mydlg.Create(IDD_MYDLG); //创建对话框IDD_MYDLG } m_Mydlg.ShowWindow(SW_SHOW); //显示对话框 显示模态对话框 例如,要创建并显示一个模态对话框,其实现代码如下所示: CMyDlg m_Mydlg; //定义对象m_Mydlg m_Mydlg.DoModal(); //创建模态对话框 对话框的数据交换 对话框的数据成员变量存储了与控件相对应的数据。在对话框运行后,数据变量需要和控件交换数据,以完成输入或输出功能。例如,一个编辑框可能需要用来输入,也可能需要用来输出。当用作输入时,用户在其中输入了数值之后,对应的数据成员应该更新与编辑框中的数值相同;当用作输出时,应及时刷新编辑框的内容以反映相应数据成员的变化。因此,对话框就需要一种机制来实现这种数据交换功能。 对话框的数据交换 Visual C++的对话框中数据交换通过调用UpdateData函数来实现。UpdataData函数原形如下: BOOL UpdateData ( BOOL bSaveAndValidaet = TRUE); UpdataData函数只有一个布尔型参数bSaveAndValidate,其决定了数据传送的方向。若参数值为TURE,即调用UpdateData(TRUE),表示将数据从对话框的控件中传送到对应的数据成员中;若参数值为FALSE,即调用UpdateData(FALSE),则表示将数据从数据成员中传送给对应的控件。 对话框的数据交换 例如,用户在非模态对话框IDD_MYDLG的【相加】按钮的处理函数OnOK()函数中键入如下代码来实现数据交换。 UpdateData(TRUE); //将数据从对话框的控件中传送到对应的数据成员中 m_nSum=m_nNum1+m_nNum2; //计算 UpdateData(FALSE); //将数据从数据成员中传送给对应的控件 综合练习 设计一个用户登录框,并拥有判断功能:当用户输入正确的用户名“admin”和正确的密码“123456”后显示如图4-39所示结果,否则显示4-40所示错误信息。 1-* 北京源智天下科技有限公司 联系方式: 联系方式: 北京源智天下科技有限公司 第四讲:对话框 杨章伟 e-mail:yang505412@163.com 课程内容安排 对话框概述 创建对话框 模态对话框和非模态对话框 属性页和向导对话框 公用对话框 综合练习 思考和习题 对话框概述 在Visual C++中,对话框是一个真正的窗口。对话框不仅可以接收消息,而且还可以被移动和关闭,甚至可以在其客户区中进行绘图。因此,可以将对话框看成一个大容器,在它上面能够放置各种各样的标准及扩展控件,使程序支持用户输入的手段更加丰富,如图4-1所示。 对话框的种类 一般的说,Windows应用程序中,对话框分为模态(Modal)对话框和非模态(Modeless)对话框两种,这两种对话框的区别在于当对话框打开时是否允许用户进行其他对象的操作。 模态对话框是指在用户想要进行对话框以外的应用程序操作时必须首先对该对话框进行响应 非模态对话框与模态对话框不同,当用户打开非模态对话框时,依然可以操作其他窗口。 模态对话框 模态对话框垄断了用户的输入,当一个模态对话框打开时,用户只能与该对话框进行交互,而其他用户界面对象收不到输入信息。模态对话框下,用户需要操作目标对话框就必须先操作模态对话框,如图4-3所示,这就是用户对模态对话框的处理。 对话框编辑器 对话框的设

文档评论(0)

1亿VIP精品文档

相关文档