基于对话框的编程-第三讲.pptx_第1页
基于对话框的编程-第三讲.pptx_第2页
基于对话框的编程-第三讲.pptx_第3页
基于对话框的编程-第三讲.pptx_第4页
基于对话框的编程-第三讲.pptx_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字视音频应用与开发 李 瑾 467134678 对话框和Windows标准控件 对话框的组成与分类 创建对话框 模式对话框的编程 通用对话框 Windows 标准控件 对话框的组成 对话框:是Windows应用程序与用户打交道的界面元素 。 1、对话框模板 对话框模板定义了对话框的特性(比如大小、位置和风格)以及对话框中 每个控件的类型和位置。 2、对话框类 从CDialog类派生的对话框类提供编程接口来管理对话框 。 对话框的分类 1、模式(Modal)对话框 在对话框关闭之前,用户无法在同一应用程序的其他地方进行工作,例如 打开文件对话框。 2、无模式(Modaless)对话框 在它仍然保留在屏幕的同时,用户还可以在同一应用程序的其他窗口中 进行工作,例如查找对话框。 创建对话框-创建对话框模板 可以使用对话框编辑器来创建包含不同控件的对话框模板,在对话框 编辑器中,可以调整对话框显示时的大小和位置,从Controls工具栏拖 放各种类型的控件到对话框中,用Dialog工具栏调整控件的位置,测试 对话框的外观和行为。 可以使用菜单方式:InsertResource打开Insert Resource对话框, 然后双击改对话框资源,就可打开对话框编辑器。 创建对话框-对话框编辑器 (a) 对话框模板 (b) Controls工具栏 (c) Dialog工具栏 创建对话框-创建对话框类 在创建了对话框模板后,就可以利用ClassWisard来创建从CDialog派 生且连接到对话框模板的对话框类。 (1) 创建了一个连接到对话框模板CDialog类的派生类。 (2) 利用ClassWizard向对话框类加入数据成员来表示对话框中的控件。 (3) 指定控件和成员变量之间如何交换数据。 (4) 映射Windows消息到对话框类,如鼠标左键单击消息。 (5) 利用ClassWizard为对话框中的按钮和其他可以产生事件的控件加入相应的消息控件函 数。 (6) 为各种事件处理函数编辑代码,来完成指定的工作。 创建对话框-创建对话框类 对话框上的许多控件还需要进行初始化工作,从而使得对话框被显示时 这些控件具有相应类型的初值。对话框的初始化工作可以使用以下3种方 法来进行。 (1) 在构造函数中初始化 (2) WM_CREATE初始化 (3) WM_INITDIALOG初始化 对于对话框的初始化工作通常都在响应该消息时进行 。 模式对话框编程 对于模式对话框的编程可以按以下步骤进行。 (1) 根据要求创建对话框模板。 (2) 使用ClassWizard创建对话框类并进行各类事件函数的代码编写。 (3) 对视图类进行编辑,以便对话框能够被激活。在所编写的代码中,首先 创建对话框类的对象,然后通过该对象调用对话框类成员函数 DoModal()。只有当用户退出对话框窗口时,DoModal函数才能返回。 模式对话框编程 【例】 简单模式对话框的编程。 本程序的功能是在客户区显示一个可由用户指定填充颜色的矩形。当菜 单项【颜色设置】被选中时将弹出【颜色】对话框,在其中用户可以确 定RGB三颜色的值,单击【确定】按钮后即可改变矩形的填充色。 实现步骤 程序的步骤如下。 (1) 使用对话框编辑器创建对话框模板,最终完成的对话框界面如图所示。 控件IDCaption 静态控件IDC_STATIC1 R(0-255) 静态控件IDC_STATIC2 G(0-255) 静态控件IDC_STATIC3 B(0-255) 编辑框 IDC_R 编辑框 IDC_G 编辑框 IDC_B 实现步骤 (2) 使用ClassWizard创建对话框类CMyColorDialog 在ClassWisard中选取属性表Member Variables,为控件IDC_R、IDC_G和 IDC_B分别映射int类型成员变量m_nR、m_nG和m_nB。 在ClassWisard中选取属性表Message Maps,为CMyColorDialog的消 息WM_INITDIALOG映射函数OnInitDialog(),并单击Edit Code按钮为 OnInitDialog函数编写初始化代码。 注:ClassWizard类向导是在vc+6.0和vc+2010中非常实用的工具,在 vc+2005中类向导的大部分功能都在选中相应对象后,右边属性栏。 实现步骤 BOOL CMyColorDialog:OnInitDialog() CDialog:OnInitDialog(); m_nR=0; m_nG=0; m_nR=0; UpdateData(FALSE); /将设定的变量值传送给对应的控件 return TRUE; 实现步骤 (3) 对视图类进行编辑,以能激活对话框,并进行绘图。 首先要使用ResourceView中的菜单编辑器来创建菜单项“颜色设置” 。 在创建了菜单项后,可通过ClassWizard为该菜单项映射菜单消息。 在视图中需要生成一个该类的对象。记得包含头文件 在为菜单项颜色设置映射的消息中,写如下代码 dlg.DoModal(); Invalidate(); 实现步骤 编辑视图类中的OnDraw,进行绘图 void CMyView:OnDraw(CDC* pDC) CMyDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); UpdateData(); Cbrush brush; brush.CreateSolidBrush(RGB(dlg.m_nR,dlg.m_nG,dlg.m_nB); pDC-SelectObject( pDC-Rectangle(100,100,200,300); Windows通用对话框 Windows提供了一组标准用户界面对话框,它们都由MFC库 中相应的类来支持。可以使用通用对话框来执行各种标准操作, 如选择文件、指定字体和选择颜色等。MFC提供了6类标准的对话 框 ,这些对话框有一个共同的特点:它们都从用户处获取信息,但 它们并不对信息作处理。 Windows通用对话框 通用对话框说 明 CFileDialog封装了标准的“打开”和“另 存为”对话框 CColorDialog封装了标准的“颜色”对话框 CFontDialog封装了标准的“字体”对话框 CFindReplaceDialog封装了标准的“查找”和“替 换”对话框 CPrintDialog封装了标准的“打印”和“打 印设置”对话框 CPageSetupDialog封装了标准的“页面设置”对 话框 CFileDialog类 (1) 构造CFileDialog类的对象。 CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt=NULL, LPCTSTR lpszFileName=NULL, DWORD dwFlags=OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter=NULL, CWnd *pParentWnd=NULL ) CFileDialog类 CFileDialog类 参数bOpenFileDialog是一个标记位,其值如果为TRUE,那么将构造 【打开】对话框;如果值为FALSE,那么将构造“另存为”对话框。 参数lpszDefExt为默认的文件扩展名。如果用户没有在文件名编辑框中 输入扩展名,则由lpszDefExt所指定的扩展名将自动附加在文件名后。 参数lpszFileName是出现在文件名编辑框中的初始文件名。如果该参数 值为NULL,则不显示初始文件名。 参数dwFlags由一个或多个标志组成。其中OFN_HIDEREADONLY将隐 藏只读文件,OFN_ALLOWMULTISELECT将允许在选择时与Shift键或 Ctrl键配合以选择多个文件。 CFileDialog类 参数lpszFilter指定文件过滤器,用于确定显示在文件列表中的文件类 型。每个过滤器都是一个字符串对,第一个字符串描述过滤器,第二个 字符串是用户过滤文件的扩展名,多个扩展名要用分号(;)作为分界符, 两个字符串之间用管道符号(|)分隔。整个字符串以两个管道符(|)和一个 NULL字符结束,可以用CString对象值作为该参数的值。例如,以下字 符串就是一个描述只在文件列表框中显示文本文件(*.txt)和Microsoft文 件(*.doc)的过滤器。 CFileDialog类 CFileDialog dlg( TRUE, /设置为打开对话框 “bmp”,/文件扩展名 “*.bmp”,/初始文件名 OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,/只显示只读文件,允许多选几个文件 “文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc“/过滤掉其他格式文件 ); CFileDialog类 (2) 调用成员函数DoModal()可以将对话框显示在屏幕上,并让用户 从中选择文件。 (3) 如果DoModal()返回的是IDOK,那么调用成员函数可以获取文 件信息。 CFileDialog类 类的成员函数功能说明 GetPathName获取当前所选文件的全路径 GetFileName获取当前所选文件的文件名 GetFileExt获取当前所选文件的文件扩展名 GetFileTitle获取当前所选文件的标题 GetNextPathName获取所选择的下一个文件的全路径 GetStartPosition得到文件列表的第一个元素的位置 CColorDialog类 CColorDialog类提供了可以选择颜色的对话框,使得用户可以从颜色列 表中选择要用的颜色。 对该类的使用可按下列步骤进行。 (1) 在视图类相应位置构造CColorDialog对象。 (2) 设置或修改成员变量m_cc来初始化对话框。m_cc的结构类型为 CHOOSECOLOR。 (3) 调用成员函数DoModal来显示对话框并让用户从中选择颜色。 (4) 如果DoModal返回的是IDOK,那么用户所做的颜色选择将保存在m_cc 中。通过使用该类的成员函数GetColor即可得到选择颜色的RGB值。 CColorDialog类 CFontDialog类 uCFontDialog类封装了标准的【字体】对话框,使得用户可以从系统安装的 字体列表中选择要用的字体。 uCFontDialog类的使用步骤与CColorDialog的使用过程是一样的,在用户 选择了字体后,成员函数获取所选择的字体信息。 CFontDialog类 类的成员函数功能说明 GetCurrentFont获取当前所选字体 GetFaceName获取当前所选字体的字样名 GetStyleName获取当前所选字体的风格名 GetSize获取当前所选字体的大小 GetColor获取当前所选字体的颜色 GetWeight获取当前所选字体的磅数 IsStrikeOut确定字体是否带有删除线 IsUnderline确定字体是否带有下划线 IsBold确定字体是否为粗体 IsItalic确定字体是否为斜体 其它通用对话框 CFindReplaceDialog类封装了通用的【查找】和【替换】对话框。对 话框仅仅提供了标准接口,它允许输入待查找和替换的字符串,而真正 的查找和替换功能则需要程序员自己实现。与其他通用对话框不同的是 ,【查找】和【替换】对话框是非模式的。因此,对该类的使用要按照 非模式对话框进行。 其它通用对话框 uCPrintDialog类封装了标准的【打印】和【打印预览】对话框。该对话 框是模式对话框,它的使用过程与CColorDialog一样,只是在成员函数 上有所不同。 uCPageSetupDialog类封装了标准的【页面设置】对话框,使得用户可 以设置和修改打印边距等。其使用过程与CColorDialog类似,在使用时 可利用Visual C+的提示功能来学习和掌握其成员函数。 Windows标准控件 控件(Control)是一种子窗口,应用程序用它来与其他窗口进行 简单的输入输出操作。 作为一般窗口,控件具有许多通用的窗口属性,并且可以使用 ShowWindow、MoveWindow等窗口管理函数来显示或隐藏 控件、改变控件的位置以及其他操作。本节主要介绍标准的 Windows控件的编程方法及一些常用的公共控件的使用方法。 标准Windows控件 (1)静态控件 (2)按钮控件 (3)编辑框控件 (4)列表框控件 (5)组合框控件 (6)滚动条控件 静态文本控件(CStatic) 静态文本控件是静态控件的一种,只是简单地在屏幕 上显示一字符串,在运行过程中它不和用户发生任何关 系。当把矩形范围定好位之后,就可以直接输入文本。 该控件的一个常用属性是Caption属性,用来在控件中 显示文本。该控件一般不响应消息。静态文本控件一般 是配合无Caption属性的控件使用的。 编辑框控件(CEdit) 编辑框控件是一个让用户从键盘输入和编辑文字的矩形窗口, 用户可以通过它,很方便地输入各种文字、数字或者口令,也可 使用它来编辑或修改简单的文本文件。编辑框控件的风格可在其 属性对话框中设置。例如,如果要具有输入口令功能,则可选择 Password选项。如果要锁定编辑框,即在运行时不能进行编辑, 则可设置Read-only选项。 编辑框控件(CEdit) 编辑框控件可接收很多消息,常用的是EN_CHANGE消息与 EN_SETFOCUS消息,其中前者是当用户修改了编辑框中的文本时发出 的,后者则是在该控件接收到输入焦点时发送的。 封装编辑框控件的类是CEdit类,它有很多成员函数,可以方便程序员进 行编辑工作 编辑框控件(CEdit) 成员函数说 明 GetSel获取编辑框中当前选择的起始字符和终止字符位置 ReplaceSel用指定文本替换编辑框中的当前选择 SetSel选择编辑框中的一个字符范围 SetReadOnly设置编辑框控件的只读状态 GetPasswordChar获取用户输入文本时在编辑框控件内显示的口令字符 SetPasswordChar设置或删除当用户输入文本时在编辑框控件中显示的口 令字符 Undo取消上一次编辑框控件操作 Clear清除编辑框控件内的当前选择 Copy将编辑框控件中的当前选择复制到剪贴板中 Paste将数据从剪贴板复制到编辑框控件中的当前光标处 GetLine从编辑框控件中获取一行文本 按钮控件(CButton) Windows中所用的按钮是随处可见的,常见的按钮有3种类型: 按键按钮、单选按钮和复选框。 按键按钮通常可以立即产生某个动作,执行某个命令,因此也常 被称为命令按钮。 单选按钮的外观是一个圆圈,当它被选中时,单选按钮中就标上 一个黑点。 复选框的外观是一个空心方框,当它被选中时,复选框中就加上 一个“X”标记,通常复选框只有选中和没选中两种状态。 按钮控件(CButton) 对于按键按钮的使用主要是映射BN_CLICKED单击事件和BN_DOUBLECLICK 双击事件。 对于单选按钮的使用往往是使用一组按钮,比如表示性别的“男”、“女”都 可以使用单选按钮。为了表示这两个单选按钮是一组,必须将本组中第1个按 钮的Group属性选中,并为设定Group属性的按钮在ClassWizard中映射成员 变量。运行时如果该变量值为0,则选中第1个按钮,若为1则选中的是第2个 按钮,依次类推。 在使用复选框时,要为每一个复选框映射一个变量,变量的类型为BOOL类型 ,在运行时,如果某个复选框被选中,则对应变量的值为TRUE,反之为 FALSE。 列表框控件(CListBox) 列表框控件是一个放有用户可以选择对象项的列表的控件窗口,可以让 用户在其中选择一个或多个项。 列表框控件默认情况下只能进行单选操作,若要使列表框能进行多项选 择,则需要修改其属性中Style下的Selection属性。该属性值若为 Simple,就只能进行单选;若为Multiple,则可直接使用Multiple进行 多选;若为Extended,则可配合Shift和Ctrl键进行多选。 列表框控件(CListBox) 成员函数功 能 AddString在列表框中增加一个串 DeleteString在列表框中删除一个串 InsertString在列表框中指定位置插入一个串 ResetContent清除列表框中所有列表项 FindString在列表框中查找一个串 SetCurSel选择一列表项 GetSel获取一列表项的选择状态 GetCount获取列表框中列表项的数目 GetCurSel获取列表框中当前所选串的索引(从0开 始) GetText获取某个位置处的字符串值 列表框控件(CListBox) 列表框的使用一般可按下述步骤进行操作。 (1) 在对话框上放置列表框控件,设置其属性。 (2) 为该控件映射CListBox类型的成员变量。 (3)在对话框的OnInitDialog()函数中,使用ClistBox的成员函数 AddString()为控件进行初始化。 (4) 若要判断列表框中被选中的字符串,对单选情况可使用GetCurSel()函 数获得所选项的索引,再利用GetText()函数获得该索引处的字符串 值。若是多选可根据GetCount()函数返回的列表项,从头使用 GetSel()判断是否被选中,若选中,则再使用GetText()函数即可。 组合框的产生 列表框控件和编辑框控件作为用户输入的窗口,各有其优点。 (1)列表框中可列出用户所需的选项,用户不必记住每一项,也不用一字一字 输入。但是当用户需要的项目未在列表框中列出时,列表框就无能为力了。 (2)编辑框控件可以根据用户需求进行灵活输入,但需要记忆内容,并且需要 逐字输入。 如果将这两个控件结合起来使用,正常情况下用户可方便地在列表框中进行 选择,如果没有所需项,则使用编辑框进行输入,从而出现了组合框这种控 件 组合框结合列表框和编辑框控件的特点,取二者之长,互相弥补其短,从而 完成复杂的输入功能。 组合框 Windows提供3种类型的组合框:简单组合框、下拉式组合框和下拉 式列表框。可通过右侧属性栏,对类型进行设置。 1、简单组合框和下拉式组合框都含有列表框和编辑框控件,但是简单 组合框的列表框不是下拉式的,跟正常的列表框一样。下拉式列表框则 虽然有下拉式的列表,但却没有文字编辑功能。 2、下拉式列表框与普通列表框相比,占用的屏幕要少的多,用户可以 根据对话框的布局适当选择组合框的下拉式列表类型和列表框。如果对 话框上要放置能进行选择的控件,但空间却不大,可选用下拉式列表框 ;若对话框上比较空,则可以使用列表框。 滚动条控件 滚动条是窗口中常见的对象。当窗口客户区中要显示比其自身大的对象 时,滚动条便应运而生。这种滚动条与窗口一同创建,位于窗口用户区 旁的非用户区,用来扩展用户区的显示范围,它被称为标准滚动条。另 外还有一种作为控件的滚动条,这是一个独立的窗口,具有直接的输入 焦点,使用这种滚动条的目的未必在于滚动显示窗

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论