您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 基于对话框的编程-第三讲
数字视音频应用与开发李瑾467134678@qq.com对话框和Windows标准控件对话框的组成与分类创建对话框模式对话框的编程通用对话框Windows标准控件对话框的组成对话框:是Windows应用程序与用户打交道的界面元素。1、对话框模板对话框模板定义了对话框的特性(比如大小、位置和风格)以及对话框中每个控件的类型和位置。2、对话框类从CDialog类派生的对话框类提供编程接口来管理对话框。对话框的分类1、模式(Modal)对话框在对话框关闭之前,用户无法在同一应用程序的其他地方进行工作,例如打开文件对话框。2、无模式(Modaless)对话框在它仍然保留在屏幕的同时,用户还可以在同一应用程序的其他窗口中进行工作,例如查找对话框。创建对话框---创建对话框模板可以使用对话框编辑器来创建包含不同控件的对话框模板,在对话框编辑器中,可以调整对话框显示时的大小和位置,从Controls工具栏拖放各种类型的控件到对话框中,用Dialog工具栏调整控件的位置,测试对话框的外观和行为。可以使用菜单方式:InsertResource打开InsertResource对话框,然后双击改对话框资源,就可打开对话框编辑器。创建对话框---对话框编辑器(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_STATIC1R(0-255)静态控件IDC_STATIC2G(0-255)静态控件IDC_STATIC3B(0-255)编辑框IDC_R编辑框IDC_G编辑框IDC_B实现步骤(2)使用ClassWizard创建对话框类CMyColorDialog在ClassWisard中选取属性表MemberVariables,为控件IDC_R、IDC_G和IDC_B分别映射int类型成员变量m_nR、m_nG和m_nB。在ClassWisard中选取属性表MessageMaps,为CMyColorDialog的消息WM_INITDIALOG映射函数OnInitDialog(),并单击EditCode按钮为OnInitDialog函数编写初始化代码。注:ClassWizard类向导是在vc++6.0和vc++2010中非常实用的工具,在vc++2005中类向导的大部分功能都在选中相应对象后,右边属性栏。实现步骤BOOLCMyColorDialog::OnInitDialog(){CDialog::OnInitDialog();m_nR=0;m_nG=0;m_nR=0;UpdateData(FALSE);//将设定的变量值传送给对应的控件returnTRUE;}实现步骤(3)对视图类进行编辑,以能激活对话框,并进行绘图。首先要使用ResourceView中的菜单编辑器来创建菜单项“颜色设置”。在创建了菜单项后,可通过ClassWizard为该菜单项映射菜单消息。在视图中需要生成一个该类的对象。记得包含头文件在为菜单项颜色设置映射的消息中,写如下代码dlg.DoModal();Invalidate();实现步骤编辑视图类中的OnDraw,进行绘图voidCMyView::OnDraw(CDC*pDC){CMyDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);UpdateData();Cbrushbrush;brush.CreateSolidBrush(RGB(dlg.m_nR,dlg.m_nG,dlg.m_nB));pDC-SelectObject(&brush);pDC-Rectangle(100,100,200,300);}Windows通用对话框Windows提供了一组标准用户界面对话框,它们都由MFC库中相应的类来支持。可以使用通用对话框来执行各种标准操作,如选择文件、指定字体和选择颜色等。MFC提供了6类标准的对话框,这些对话框有一个共同的特点:它们都从用户处获取信息,但它们并不对信息作处理。Windows通用对话框通用对话框说明CFileDialog封装了标准的“打开”和“另存为”对话框CColorDialog封装了标准的“颜色”对话框CFontDialog封装了标准的“字体”对话框CFindReplaceDialog封装了标准的“查找”和“替换”对话框CPrintDialog封装了标准的“打印”和“打印设置”对话框CPageSetupDialog封装了标准的“页面设置”对话框CFileDialog类(1)构造CFileDialog类的对象。CFileDialog(BOOLbOpenFileDialog,LPCTSTRlpszDefExt=NULL,LPCTSTRlpszFileName=NULL,DWORDdwFlags=OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,LPCTSTRlpszFilter=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类CFileDialogdlg(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类CFontDialog类封装了标准的【字体】对话框,使得用户可以从系统安装的字体列表中选择要用的字体。CFontDialog类的使用步骤与CColorDialog的使用过程是一样的,在用户选择了字体后,成员函数获取所选择的字体信息。CFontDialog类类的成员函数功能说明GetCurrentFont获取当前所选字体GetFaceName获取当前所选字体的字样名GetStyleName获取当前所选字体的风格名GetSize获取当前所选字体的大小GetColor获取当前所选字体的颜色GetWeight获取当前所选字体的磅数IsStrikeOut确定字体是否带有删除线IsUnderline确定字体是否带有下划线IsBold确定字体是否为粗体IsItalic确定字体是否为斜体其它通用对话框CFindReplaceDialog类封装了通用的【查找】和【替换】对话框。对话框仅仅提供了标准接口,它允许输入待查找和替换的字符串,而真正的查找和替换功能则需要程序员自己实现。与其他通用对话框不同的是,【查找】和【替换】对话框是非模式的。因此,对该类的使用要按照非模式对话框进行。其它通用对话框CPrintDialog类封装了标准的【打印】和【打印预览】对话框。该对话框是模式对话框,它的使用过程与CColorDialog一样,只是在成员函数上有所不同。CPageSetupDialog类封装了标准的【页面设置】对话框,使得用户可以设置和修改打印边距等。其使用过程与CColorDialog类似,在使用时可利用VisualC++的提示功能来学习和掌握其成员函数。Windows标准控件控件(Control)是一种子窗口,应用程序用它来与其他窗口进行简单的输入输出操作。作为一般窗口,控件具有许多通用的窗口属性,并且可以使用ShowWindow、MoveWindow等窗口管理函数来显示或隐藏控件、改变控件的位置以及其他操作。本节主要介绍标准的Windows控件的编程方法及一些常用的公共控件的使用方法。标准Windows控件(1)静态控件(2)按钮控件(3)编辑框控件(
本文标题:基于对话框的编程-第三讲
链接地址:https://www.777doc.com/doc-2578716 .html