1 / 23

大学Visual C++案例教程

大学Visual C++案例教程. 第五讲 对 话 框 西安交通大学 计算机教学实验中心 http://ctec.xjtu.edu.cn. 教学目标. 对话框的概念和用法 各种常用控件的使用方法. 授课内容. 5.1 对话框 5.2 控件 5.3 对话框的初始化 5.4 对话框的数据交换和数据检验机制 5.5 公用对话框. 5.1 对话框. 对话框(一般概念) 是一种特殊的窗口 主要功能是输出信息和接收用户的输入 对话框内包含一些 控件 ,依靠控件与用户进行交流信息 对话框分为 模态对话框 和 非模态对话框 两种 对话框(从 MFC 角度)

shawn
Download Presentation

大学Visual C++案例教程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 大学Visual C++案例教程 第五讲 对 话 框西安交通大学计算机教学实验中心http://ctec.xjtu.edu.cn

  2. 教学目标 • 对话框的概念和用法 • 各种常用控件的使用方法

  3. 授课内容 • 5.1 对话框 • 5.2 控件 • 5.3 对话框的初始化 • 5.4 对话框的数据交换和数据检验机制 • 5.5 公用对话框

  4. 5.1 对话框 • 对话框(一般概念) • 是一种特殊的窗口 • 主要功能是输出信息和接收用户的输入 • 对话框内包含一些控件,依靠控件与用户进行交流信息 • 对话框分为模态对话框和非模态对话框两种 • 对话框(从MFC角度) • 对话框的功能被封装在CDialog类中,CDialog类是CWnd类的派生类 • 一个对话框由两部分组成: 对话框模板资源和对话框类

  5. 对 话 框 的 设 计 • 对话框模板的设计 • 向项目中添加对话框模板资源; • 编辑对话框模板资源,加入所需的控件; • 对话框类的设计 • 从CDialog类派生对话框类,加入与各控件对应的数据成员; • 在框架窗口类或视图类的菜单选项、鼠标事件或其他消息响应函数中添加对话框对象的应用代码。

  6. 模 态 对 话 框 • 在视图类或框架窗口类的消息响应函数中说明一个对话框类的对象; • 调用CDialog::DoModal()成员函数 • 根据其返回值是IDOK还是IDCANCEL来判断用户是确定还是取消了对对话框的操作

  7. 【例】添加一个自己的版权对话框并使用鼠标右键弹出【例】添加一个自己的版权对话框并使用鼠标右键弹出 1. 对话框模板的设计

  8. 2. 对话框类的设计 • 创建对应的对话框类: 使用ClassWizard,会自动弹出窗口询问创建对应于此对话框模板资源的对话框类,命名为CMyDlg • 在视图类的实现文件添加对话框类的头文件: #include "MyDlg.h" • 添加响应鼠标右键消息的代码: void CMyView::OnRButtonDown(UINT nFlags, CPoint point) { CMyDlg dlg; dlg.DoModal(); CView::OnRButtonDown(nFlags, point); }

  9. 5.2 控件(Control) • 对话框与控件是密不可分的 • 控件 • 是Windows提供的独立小部件(现成的程序组件),可以独立运行以完成一定的功能。 • 在对话框与用户的交互过程担任主要角色 • 每个控件均有一个标识符(ID) • 控件实际上也是一个窗口,对应一个CWnd派生类的对象 • windows提供了大量的控件: • 静态控件(Static Text) • 编辑控件(Edit Box) • 组框控件(Group Box) • 图片控件(Picture) • 。。。。。。

  10. 与CStatic类型对应的控件 • 静态文本(Static Text)控件: • 用于显示字符串,不接受输入信息。 • 图片(Picture)控件: • 用于显示位图、图标、方框等,不接受输入信息。 • 组框(Group Box)控件: • 显示一个文本字符串和一个方框,通常用于组合一组相关控件。

  11. 静态文本控件 • 用途是在对话框上显示一段文字; • 静态文本控件的文字和属性均在编辑对话框模板资源时确定,程序运行中一般无法改变。 • 它的ID并不重要,因为无需编程

  12. 与CButton类型对应的控件 • 编辑(Edit Box)控件: • 可用于单行或多行文本编辑,相当于一个小型文本编辑器。 • 按钮(Button)控件: • 用于响应用户的鼠标按键等操作,触发相应的事件。 • 检查框(Check Box)控件: • 用作选择标记,有选中、不选中和不确定等状态。 • 单选按钮(Radio Button)控件: • 用来作多项选择。

  13. 编辑控件 • 编辑控件功能十分全面,本身就是一个小型的文本编辑器。 • 编辑控件的作用是接受用户输入的字符串信息。 • 它的ID很重要,因为要实现数据交换

  14. 与CListBox类型对应的控件 • 列表框(List Box)控件: • 显示一个文字列表,用户可从表中选择一项或多项 • 列表框中的文字列表通常在对话框类的InitDialog()成员函数中给出

  15. 与CCombo类型对应的控件 • 组合框(Combo Box): • 是编辑控件和列表框的组合 • 组合框中列表的内容可在设置时用Data选项卡输入。

  16. 主要的对话框管理函数 • CWnd类中管理对话框控件的成员函数: • GetDlgItem() • 返回一个指向一给定控件的指针; • GetDlgItemText() • 获得在一个控件内显示的正文; • SetDlgItemText() • 设置一个控件显示的正文。

  17. 5.3 对话框的初始化 • 构造函数 • 初始化对话框的数据成员 • OnInitDialog()函数 • 初始化对话框外观

  18. 5.4 对话框的数据交换和数据检验机制 • 控件 数据成员 • 数据交换(DDX) • 数据检验机制(DDV) • DDX和DDV的实现: • 重载CDialog::DoDataExchange()函数 virtual void DoDataExchange (CDataExchange* pDX ); • 加入数据交换函数 • 加入数据检验函数 理解概念。代码已自动生成,无需改动!!!

  19. 【例】输入数据的图形显示---【案例26】 公司产量图示程序--- 用户用鼠标左键点击窗口客户区后会弹出对话框,输入坐标后可在客户区显示。 • 编程步骤: • 建立对话框资源 • 对话框的外观和属性设置 • 控件的外观和属性设置 • 建立对话框类 • DDX、DDV • 在文档类中添加代码 • 变量申明和初始化 • 在视图类中添加代码 • 添加包含对话框的申明 • 建立鼠标左键消息响应 • OnDraw函数显示数据

  20. 模态对话框编程步骤总结 • 使用对话框编辑器建立对话框模板资源并加入所需的控件。 • 使用ClassWizard建立相应的对话框类,该类从CDialog继承并且和步骤1所建立的对话框模板资源相关联。 • 使用ClassWizard给对话框类添加数据成员,添加控件和数据成员的数据交换功能以及数据校验。 • 使用ClassWizard给对话框的按钮和其它产生事件的控件添加消息处理函数。 • 为特定的控件初始化(在 OnInitDialog中)和消息处理函数编写代码。 • 在视图类中编写代码激活对话框。代码中包含对对话框类的成员函数DoModal的调用。当用户从对话框窗口退出后, DoModal才返回。

  21. 【案例30】人事管理系统 • 为某公司设计一个人事管理系统, • 其基本功能为输入、编辑、查看和保存公司的人事档案。 • 职工人事档案包括姓名、性别、年龄、婚姻状况、所在部门和职务等。 • 编程步骤: • 建立对话框资源 • 建立对话框类 • 建立菜单资源 • 在文档类中添加代码?(未涉及到序列化) • 在视图类中添加代码

  22. 5.5 公用对话框 • 颜色选择对话框: CColorDialog 例:选择菜单“颜色设置”可调用颜色设置公用对话框设置泡泡的颜色 void CMyDlg::OnColor() { m_colorCurrent = RGB(0, 0, 255); CColorDialog dlg(m_colorCurrent); if(dlg.DoModal() == IDOK) m_colorCurrent = dlg.GetColor(); } • 字体选择对话框: CFontDialog

  23. 结 束 语 学好程序设计语言的唯一途径是 你的编程能力与你在计算机上投入的时间成 上机练习 正比

More Related