版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
对话框和Windows标准控件
对话框的组成与分类创建对话框模式对话框的编程通用对话框Windows标准控件资源与资源编辑器菜单的使用工具栏的使用状态栏的使用对话框和Windows标准控件对话框的组成与分类对话框的组成对话框:是Windows应用程序与用户打交道的界面元素。
1、对话框模板
对话框模板定义了对话框的特性(比如大小、位置和风格)以及对话框中每个控件的类型和位置。
2、对话框类
从CDialog类派生的对话框类提供编程接口来管理对话框。对话框的组成对话框:是Windows应用程序对话框的分类1、模式(Modal)对话框在对话框关闭之前,用户无法在同一应用程序的其他地方进行工作,例如打开文件对话框。2、无模式(Modaless)对话框在它仍然保留在屏幕的同时,用户还可以在同一应用程序的其他窗口中进行工作,例如查找对话框。
对话框的分类1、模式(Modal)对话框创建对话框创建对话框模板
可以使用对话框编辑器来创建包含不同控件的对话框模板,在对话框编辑器中,可以调整对话框显示时的大小和位置,从Controls工具栏拖放各种类型的控件到对话框中,用Dialog工具栏调整控件的位置,测试对话框的外观和行为。
可以使用菜单方式:InsertResource打开InsertResource对话框,选中Dialog后单击New按钮即可打开对话框编辑器。或者使用项目的ResourceView,找到Dialog资源,右击后选择InsertDialog也可打开对话框编辑器。创建对话框创建对话框模板可以使用对话框编辑器来创创建对话框对话框编辑器(a)对话框模板
(b)Controls工具栏
(c)Dialog工具栏创建对话框对话框编辑器(a)对话框模板创建对话框创建对话框类在创建了对话框模板后,就可以利用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实现步骤程序的步骤如下。控件IDCaption静态控件IDC实现步骤(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函数编写初始化代码。实现步骤(2)使用ClassWizard创建对话框类CMy实现步骤BOOLCMyColorDialog::OnInitDialog(){
CDialog::OnInitDialog(); m_nR=0; m_nG=0; m_nR=0;
UpdateData(FALSE);//将设定的变量值传送给对应的控件
returnTRUE;}实现步骤BOOLCMyColorDialog::OnIni实现步骤(3)对视图类进行编辑,以能激活对话框,并进行绘图。首先要使用ResourceView中的菜单编辑器来创建菜单项“颜色设置”。在创建了菜单项后,可通过ClassWizard为该菜单项映射菜单消息。
在视图中需要生成一个该类的对象。记得包含头文件
在为菜单项颜色设置映射的消息中,写如下代码
dlg.DoModal();
Invalidate(); 实现步骤(3)对视图类进行编辑,以能激活对话框,并进行绘图实现步骤编辑视图类中的OnDraw,进行绘图voidCMyView::OnDraw(CDC*pDC){ CMyDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); CRectrect; GetClientRect(rect);Cbrush
brush;brush.CreateSolidBrush(RGB(dlg.m_nR,dlg.m_nG,dlg.m_nB));pDC->SelectObject(&brush);
pDC->Rectangle(100,100,200,300);}实现步骤编辑视图类中的OnDraw,进行绘图Windows通用对话框
Windows提供了一组标准用户界面对话框,它们都由MFC库中相应的类来支持。可以使用通用对话框来执行各种标准操作,如选择文件、指定字体和选择颜色等。MFC提供了6类标准的对话框,这些对话框有一个共同的特点:它们都从用户处获取信息,但它们并不对信息作处理。
Windows通用对话框Windows提供了Windows通用对话框通用对话框说
明CFileDialog封装了标准的“打开”和“另存为”对话框CColorDialog封装了标准的“颜色”对话框CFontDialog封装了标准的“字体”对话框CFindReplaceDialog封装了标准的“查找”和“替换”对话框CPrintDialog封装了标准的“打印”和“打印设置”对话框CPageSetupDialog封装了标准的“页面设置”对话框Windows通用对话框通用对话框说明CFileDialCFileDialog类CFileDialog类(1)构造CFileDialog类的对象。
CFileDialog(BOOLbOpenFileDialog,LPCTSTRlpszDefExt=NULL,LPCTSTRlpszFileName=NULL,DWORDdwFlags=OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,LPCTSTRlpszFilter=NULL,CWnd*pParentWnd=NULL)
CFileDialog类(1)构造CFileDialog类的对象。
CFileDiCFileDialog类参数bOpenFileDialog是一个标记位,其值如果为TRUE,那么将构造【打开】对话框;如果值为FALSE,那么将构造“另存为”对话框。参数lpszDefExt为默认的文件扩展名。如果用户没有在文件名编辑框中输入扩展名,则由lpszDefExt所指定的扩展名将自动附加在文件名后。参数lpszFileName是出现在文件名编辑框中的初始文件名。如果该参数值为NULL,则不显示初始文件名。参数dwFlags由一个或多个标志组成。其中OFN_HIDEREADONLY将隐藏只读文件,OFN_ALLOWMULTISELECT将允许在选择时与Shift键或Ctrl键配合以选择多个文件。CFileDialog类参数bOpenFileDialog是CFileDialog类参数lpszFilter指定文件过滤器,用于确定显示在文件列表中的文件类型。每个过滤器都是一个字符串对,第一个字符串描述过滤器,第二个字符串是用户过滤文件的扩展名,多个扩展名要用分号(;)作为分界符,两个字符串之间用管道符号(|)分隔。整个字符串以两个管道符(||)和一个NULL字符结束,可以用CString对象值作为该参数的值。例如,以下字符串就是一个描述只在文件列表框中显示文本文件(*.txt)和Microsoft文件(*.doc)的过滤器。CFileDialog类参数lpszFilter指定文件过滤CFileDialog类CFileDialogdlg(TRUE,"bmp","*.bmp",OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,"文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc");CFileDialog类CFileDialogdlg(CFileDialog类(2)调用成员函数DoModal()可以将对话框显示在屏幕上,并让用户从中选择文件。(3)如果DoModal()返回的是IDOK,那么调用成员函数可以获取文件信息。CFileDialog类(2)调用成员函数DoModal(CFileDialog类类的成员函数功能说明GetPathName获取当前所选文件的全路径GetFileName获取当前所选文件的文件名GetFileExt获取当前所选文件的文件扩展名GetFileTitle获取当前所选文件的标题GetNextPathName获取所选择的下一个文件的全路径GetStartPosition得到文件列表的第一个元素的位置CFileDialog类类的成员函数功能说明GetPathNCColorDialog类CColorDialog类提供了可以选择颜色的对话框,使得用户可以从颜色列表中选择要用的颜色。对该类的使用可按下列步骤进行。(1)在视图类相应位置构造CColorDialog对象。(2)设置或修改成员变量m_cc来初始化对话框。m_cc的结构类型为CHOOSECOLOR。(3)调用成员函数DoModal来显示对话框并让用户从中选择颜色。(4)如果DoModal返回的是IDOK,那么用户所做的颜色选择将保存在m_cc中。通过使用该类的成员函数GetColor即可得到选择颜色的RGB值。CColorDialog类CColorDialog类提供了可CColorDialog类CColorDialog类CFontDialog类CFontDialog类封装了标准的【字体】对话框,使得用户可以从系统安装的字体列表中选择要用的字体。CFontDialog类的使用步骤与CColorDialog的使用过程是一样的,在用户选择了字体后,成员函数获取所选择的字体信息。CFontDialog类CFontDialog类封装了标准的CFontDialog类类的成员函数功能说明GetCurrentFont获取当前所选字体GetFaceName获取当前所选字体的字样名GetStyleName获取当前所选字体的风格名GetSize获取当前所选字体的大小GetColor获取当前所选字体的颜色GetWeight获取当前所选字体的磅数IsStrikeOut确定字体是否带有删除线IsUnderline确定字体是否带有下划线IsBold确定字体是否为粗体IsItalic确定字体是否为斜体CFontDialog类类的成员函数功能说明GetCurre其它通用对话框CFindReplaceDialog类封装了通用的【查找】和【替换】对话框。对话框仅仅提供了标准接口,它允许输入待查找和替换的字符串,而真正的查找和替换功能则需要程序员自己实现。与其他通用对话框不同的是,【查找】和【替换】对话框是非模式的。因此,对该类的使用要按照非模式对话框进行。其它通用对话框CFindReplaceDial其它通用对话框CPrintDialog类封装了标准的【打印】和【打印预览】对话框。该对话框是模式对话框,它的使用过程与CColorDialog一样,只是在成员函数上有所不同。CPageSetupDialog类封装了标准的【页面设置】对话框,使得用户可以设置和修改打印边距等。其使用过程与CColorDialog类似,在使用时可利用VisualC++的提示功能来学习和掌握其成员函数。其它通用对话框CPrintDialog类封装了标准的【打印】Windows标准控件控件(Control)是一种子窗口,应用程序用它来与其他窗口进行简单的输入输出操作。作为一般窗口,控件具有许多通用的窗口属性,并且可以使用ShowWindow、MoveWindow等窗口管理函数来显示或隐藏控件、改变控件的位置以及其他操作。本节主要介绍标准的Windows控件的编程方法及一些常用的公共控件的使用方法。Windows标准控件控件(Control)是一种子窗口,应标准Windows控件(1)静态控件(2)按钮控件(3)编辑框控件(4)列表框控件(5)组合框控件(6)滚动条控件
标准Windows控件(1)静态控件静态文本控件(CStatic)静态文本控件是静态控件的一种,只是简单地在屏幕上显示一字符串,在运行过程中它不和用户发生任何关系。当把矩形范围定好位之后,就可以直接输入文本。该控件的一个常用属性是Caption属性,用来在控件中显示文本。该控件一般不响应消息。静态文本控件一般是配合无Caption属性的控件使用的。静态文本控件(CStatic)静态文本控件是静态控编辑框控件(CEdit)编辑框控件是一个让用户从键盘输入和编辑文字的矩形窗口,用户可以通过它,很方便地输入各种文字、数字或者口令,也可使用它来编辑或修改简单的文本文件。编辑框控件的风格可在其属性对话框中设置。例如,如果要具有输入口令功能,则可选择Password选项。如果要锁定编辑框,即在运行时不能进行编辑,则可设置Read-only选项。编辑框控件(CEdit)编辑框控件是一个让用编辑框控件(CEdit)编辑框控件可接收很多消息,常用的是EN_CHANGE消息与EN_SETFOCUS消息,其中前者是当用户修改了编辑框中的文本时发出的,后者则是在该控件接收到输入焦点时发送的。封装编辑框控件的类是CEdit类,它有很多成员函数,可以方便程序员进行编辑工作编辑框控件(CEdit)编辑框控件可接收很多消息,常用的是E编辑框控件(CEdit)成员函数说
明GetSel获取编辑框中当前选择的起始字符和终止字符位置ReplaceSel用指定文本替换编辑框中的当前选择SetSel选择编辑框中的一个字符范围SetReadOnly设置编辑框控件的只读状态GetPasswordChar获取用户输入文本时在编辑框控件内显示的口令字符SetPasswordChar设置或删除当用户输入文本时在编辑框控件中显示的口令字符Undo取消上一次编辑框控件操作Clear清除编辑框控件内的当前选择Copy将编辑框控件中的当前选择复制到剪贴板中Paste将数据从剪贴板复制到编辑框控件中的当前光标处GetLine从编辑框控件中获取一行文本编辑框控件(CEdit)成员函数说明GetSel获取编辑按钮控件(CButton)Windows中所用的按钮是随处可见的,常见的按钮有3种类型:按键按钮、单选按钮和复选框。按键按钮通常可以立即产生某个动作,执行某个命令,因此也常被称为命令按钮。单选按钮的外观是一个圆圈,当它被选中时,单选按钮中就标上一个黑点。复选框的外观是一个空心方框,当它被选中时,复选框中就加上一个“X”标记,通常复选框只有选中和没选中两种状态。按钮控件(CButton)Windows中所用的按钮是随处按钮控件(CButton)对于按键按钮的使用主要是映射BN_CLICKED单击事件和BN_DOUBLECLICK双击事件。对于单选按钮的使用往往是使用一组按钮,比如表示性别的“男”、“女”都可以使用单选按钮。为了表示这两个单选按钮是一组,必须将本组中第1个按钮的Group属性选中,并为设定Group属性的按钮在ClassWizard中映射成员变量。运行时如果该变量值为0,则选中第1个按钮,若为1则选中的是第2个按钮,依次类推。在使用复选框时,要为每一个复选框映射一个变量,变量的类型为BOOL类型,在运行时,如果某个复选框被选中,则对应变量的值为TRUE,反之为FALSE。按钮控件(CButton)对于按键按钮的使用主要是映射BN_列表框控件(CListBox)列表框控件是一个放有用户可以选择对象项的列表的控件窗口,可以让用户在其中选择一个或多个项。列表框控件默认情况下只能进行单选操作,若要使列表框能进行多项选择,则需要修改其属性中Style下的Selection属性。该属性值若为Simple,就只能进行单选;若为Multiple,则可直接使用Multiple进行多选;若为Extended,则可配合Shift和Ctrl键进行多选。列表框控件(CListBox)列表框控件是一个放有用列表框控件(CListBox)成员函数功
能AddString在列表框中增加一个串DeleteString在列表框中删除一个串InsertString在列表框中指定位置插入一个串ResetContent清除列表框中所有列表项FindString在列表框中查找一个串SetCurSel选择一列表项GetSel获取一列表项的选择状态GetCount获取列表框中列表项的数目GetCurSel获取列表框中当前所选串的索引(从0开始)GetText获取某个位置处的字符串值列表框控件(CListBox)成员函数功能AddStr列表框控件(CListBox)列表框的使用一般可按下述步骤进行操作。(1)在对话框上放置列表框控件,设置其属性。(2)用ClassWizard为该控件映射CListBox类型的成员变量。(3)在对话框的OnInitDialog()函数中,使用ClistBox的成员函数AddString()为控件进行初始化。(4)若要判断列表框中被选中的字符串,对单选情况可使用GetCurSel()函数获得所选项的索引,再利用GetText()函数获得该索引处的字符串值。若是多选可根据GetCount()函数返回的列表项,从头使用GetSel()判断是否被选中,若选中,则再使用GetText()函数即可。列表框控件(CListBox)列表框的使用一般可按下述组合框的产生列表框控件和编辑框控件作为用户输入的窗口,各有其优点。
(1)列表框中可列出用户所需的选项,用户不必记住每一项,也不用一字一字输入。但是当用户需要的项目未在列表框中列出时,列表框就无能为力了。
(2)编辑框控件可以根据用户需求进行灵活输入,但需要记忆内容,并且需要逐字输入。如果将这两个控件结合起来使用,正常情况下用户可方便地在列表框中进行选择,如果没有所需项,则使用编辑框进行输入,从而出现了组合框这种控件
组合框结合列表框和编辑框控件的特点,取二者之长,互相弥补其短,从而完成复杂的输入功能。组合框的产生列表框控件和编辑框控件作为用户输入的窗口组合框Windows提供3种类型的组合框:简单组合框、下拉式组合框和下拉式列表框。
1、简单组合框和下拉式组合框都含有列表框和编辑框控件,但是简单组合框的列表框不是下拉式的,跟正常的列表框一样。下拉式列表框则虽然有下拉式的列表,但却没有文字编辑功能。
2、下拉式列表框与普通列表框相比,占用的屏幕要少的多,用户可以根据对话框的布局适当选择组合框的下拉式列表类型和列表框。如果对话框上要放置能进行选择的控件,但空间却不大,可选用下拉式列表框;若对话框上比较空,则可以使用列表框。组合框Windows提供3种类型的组合框:滚动条控件
滚动条是窗口中常见的对象。当窗口客户区中要显示比其自身大的对象时,滚动条便应运而生。这种滚动条与窗口一同创建,位于窗口用户区旁的非用户区,用来扩展用户区的显示范围,它被称为标准滚动条。另外还有一种作为控件的滚动条,这是一个独立的窗口,具有直接的输入焦点,使用这种滚动条的目的未必在于滚动显示窗口内容。滚动条控件滚动条是窗口中常见的对象。当窗口客户区中滚动条控件滚动条可分为垂直滚动条和水平滚动条两种类型,但其组成部分都是一样的,滚动条两端都有两个箭头按钮,中间有一个可沿滚动条方向移动的滚动块。类CScrollBar封装滚动条控件的功能。创建滚动条控件分为两步:首先创建CSrollBar对象,然后调用成员函数Create创建滚动条控件。在编程时对该控件的使用经常要用到所在对话框类的WM_VSCROLL和WM_HSCROLL消息,分别用来处理垂直滚动条和水平滚动条。滚动条控件滚动条可分为垂直滚动条和水平滚动条两种类型,公共控件--进度条控件进度条控件是在一较长应用操作中,给用户提供可视反馈的一个窗口。如在下载时用进度条控件向用户反映下载的情况,或在复制文件的过程中向用户反馈复制文件的完成情况。CProgressCtrl类封装了进度条控件的功能。进度条控件有一取值范围及当前位置,范围指明操作的长度,可使用成员函数SetScrollRange()来设置控件的最小和最大值或使用GetScrollRange()函数来获取控件的最小和最大值。当前位置表明该操作此时已经进行多久,可使用成员函数SetScrollPos()函数来设置当前位置或使用GetScrollPos()函数来获取当前位置。在工作的进行过程中,进度条会逐步用色块按百分比填充矩形框,这可使用StepIt将控件前移一个位置,即填充一个色块。公共控件--进度条控件进度条控件是在一较长应用操作公共控件--微调器控件旋转按钮控件(SpinButtonControl)即微调器控件又称为上下控件,其主要功能是利用一对标有相反方向箭头的小按钮,通过单击它来在一定范围内改变当前的数值,该值可以数字的形式显示在一个伙伴窗口中。伙伴窗口可以是一个编辑框。微调器控件可在其伙伴窗口的左侧,也可在其右侧,但必须保证其伙伴窗口的TabOrder值比微调器控件的TabOrder值小1。对微调器控件还要设置Style属性的AutoBuddy项和SetBuddyInteger项。为了使微调器控件能够正确使用,还需要在对话框类的OnInitDialog()函数中增加设置微调器初始值的语句。公共控件--微调器控件旋转按钮控件(SpinBut
Windows资源用于创建程序的框架界面,包括快捷键(Accelerator)、位图(Bitmap)、光标(Cursor)、对话框(Dialog)、图标(Icon)、菜单(Menu)、串表(StringTable)、工具栏(Toolbar)和版本信息(Version)等,为此,Windows资源提供了各种类型的资源编辑器。资源作为一种界面元素,可以从中获取信息并在其中执行某些操作。VisualC++在内部使用资源符号来标识资源。每当创建一个新的资源或资源对象时,系统就会为其提供一个默认的资源符号名称并赋予一个整数值,该定义被保存在resource.h文件中。Windows资源Windows资源用于创建程序的框架界面,包括快捷键在同一项目中,资源符号不能重复。资源符号的命名通常用带有描述性的前缀来表示所代表的资源,下表是VisualC++6.0中所提供的一些常用资源符号的前缀。资源在同一项目中,资源符号不能重复。资源符号的命名通常用带有在Windows中,资源独立于程序源代码。根据不同资源的特点,VisualC++提供了不同的可视化资源编辑器。创建或打开资源时,系统将自动打开相应的编辑器。资源编辑器1.创建资源:可以通过在Insert菜单中选择Resource菜单项来创建新的资源。在Windows中,资源独立于程序源代码。根据不同资源2.编辑资源
可以通过项目工作区窗口的ResourceView视图来查看资源。在窗口中双击要查看的资源,即可打开相应的资源编辑器。使用资源编辑器可以查看资源,使用资源模板,导入、导出资源以及查看、设置资源的属性。2.编辑资源(1)图形编辑器主要用于绘制位图、图标、光标和工具条。双击ResourceView视图中的Icon图标资源或Bitmap位图资源,都可以打开图形编辑器,如图所示。(1)图形编辑器(2)串表(StringTable)编辑器运行一个Windows应用程序后,当鼠标指向菜单项和工具栏按钮时,在底部状态栏将显示所指项的有关提示信息,串表就是这样一种资源字符串。使用串表编辑器可以对串表进行增加、删除及编辑等操作,如图所示。(2)串表(StringTable)编辑器(3)版本(Version)编辑器版本信息包括公司和产品的信息、语言、序列号、产品的操作系统、版权号和商标的声明。版本编辑器用于编辑上述信息,如图所示。(3)版本(Version)编辑器在一个Windows应用程序中,常见的菜单类型有3种:主菜单、弹出菜单和快捷菜单。1.主菜单主菜单是指出现在应用程序主窗口或最上层窗口的菜单。菜单名指出一组菜单项命令的主要功能和目标。常见的顶层菜单有:File、Edit、Windows、Help等。一个菜单项是可选择或可执行的,每一个菜单对应一个确定的功能。通常,每个主菜单项对应有一个弹出菜单作为它的子菜单。菜单的类型在一个Windows应用程序中,常见的菜单类型有32.弹出菜单弹出菜单通常是指选择主菜单或一个菜单项时弹出的子菜单。用户可以定义多重嵌套的弹出式菜单,菜单项右边的三角符号表示有子菜单存在。可以通过放置分隔线对逻辑或功能上紧密相关的菜单项分组。3.快捷菜单当右击某个界面对象时,通常会弹出快捷菜单,它出现在鼠标箭头的位置,快速展示当前对象可用的命令功能,免除在菜单中一一查找的麻烦。2.弹出菜单使用菜单编辑器来编辑菜单资源。双击ResourceView视图中的Menu菜单资源,即可打开菜单编辑器,如图所示。编辑菜单使用菜单编辑器来编辑菜单资源。双击ResourceVi1.插入新菜单项如果在当前空白菜单项位置插入,则选定窗口中的空白菜单项后按回车键(或双击空白菜单项),系统弹出MenuItemProperties对话框。如果要在某菜单项前插入,选中该菜单项并按Ins键,菜单编辑器将在该菜单项前插入一个空白菜单项,然后双击该空白菜单项进行编辑。2.属性对话框的设置菜单项属性对话框用于输入菜单项的标识符(ID)、标题(Caption)和菜单项在状态栏上显示的提示(Prompt)信息,并为该菜单项提供属性调整。1.插入新菜单项2.属性对话框的设置3.调整菜单项位置
选中某菜单项将其拖至适当位置即可。4.删除菜单项
用鼠标单击菜单项或用上、下、左、右光标键选择菜单项,然后单击Cut按钮或按Del键删除。在删除带有下拉菜单的菜单项时,系统会弹出一个信息提示框,提醒用户该操作将删除下拉菜单以及它所包含的全部内容。3.调整菜单项位置前面仅添加了菜单,并没有实现菜单的功能,即没有对应的命令处理函数与菜单项对应,因此,添加的菜单项是灰色的,即处于当前不可用状态。添加新的菜单项后,还应该为菜单项指定一个处理函数,即利用ClassWizard类向导添加一个消息处理函数。建立消息映射前面仅添加了菜单,并没有实现菜单的功能,即没有对应的命菜单项都不止一种状态,我们经常需要根据应用的内部状态来对菜单项作相应的改变。MFC通过消息映射机制和CCmdUI类更新菜单项的显示。
在类向导ClassWizard的MessageMap标签中,如果选择一个菜单ID,在Messages列表框中就会出现以下两项:
COMMANDUPDATE_COMMAND_UI
其中UPDATE_COMMAND_UI是更新命令用户接口消息,专门用于处理菜单项和工具条按钮的更新。菜单的有效控制菜单项都不止一种状态,我们经常需要根据应用的内部状态来对
菜单分为两类,除了前述的依附于框架窗口的一般菜单之外,另一类是浮动的弹出式菜单,也称快捷菜单或上下文菜单。当用户右击鼠标,弹出式菜单就会出现在光标所在位置。为应用程序创建快捷菜单主要有以下两种方法。1.使用ComponentGallery创建快捷菜单
ComponentGallery(组件画廊)是一个组件库,它保存着可以共享或重用的代码。这些代码包括由VisualC++自带的组件和从用户工程中增加到Gallery中去的用户自定义组件。使用快捷菜单菜单分为两类,除了前述的依附于框架窗口的一般菜单之外2.使用TrackPopupMenu()函数创建快捷菜单使用菜单资源编辑器和CMenu::TrackPopupMenu()函数来创建右键快捷菜单。
CMenu::TrackPopupMenu函数的原型为:
BOOLTrackPopupMenu(UINTnFlags,intx,inty,CWnd*pWnd,LPCRECTlpRect=NULL);
该函数的功能是显示一个右键快捷菜单。其中,nflags表示屏幕位置标志。x、y分别表示菜单的水平坐标和顶端的垂直坐标;pWnd表示弹出菜单的窗口,包括全部的WM_COMMAND消息;lpRect表示一个矩形域,当单击这个矩形域时菜单不消失。2.使用TrackPopupMenu()函数创建快捷菜单
动态创建菜单可以减少内存空间占用,节省系统资源。动态创建菜单分为以下3个步骤。(1)利用CreateMenu()函数创建一个空的弹出式菜单,该函数的原型为:
HMENUCreateMenu()
该函数没有参数,它的返回值是一个菜单句柄。(2)调用AppendMenu()或InsertMenu()函数在菜单中加入菜单项。(3)调用函数SetMenu()加载动态菜单。创建动态菜单动态创建菜单可以减少内存空间占用,节省系统资源。动态利用MFCAppWizard[exe]向导工具可以生成基于对话框的应用程序。基于对话框的应用程序在运行时并没有菜单栏。下面通过实例来讨论如何给它创建一个菜单。创建基于对话框的菜单利用MFCAppWizard[exe]向导工具可以在MFC中,工具栏的功能由类CToolBar实现。工具栏资源和工具栏类CToolBar是工具栏的两个要素。创建工具栏的基本步骤是:l
创建工具栏资源;l
构建一个CToolBar对象;l
调用CToolBar::Create()或CreateEx()函数创建工具栏窗口;l
调用CToolBar::LoadToolBar载入工具栏资源。工具栏的使用在MFC中,工具栏的功能由类CToolBar实现。工具栏使用工具栏编辑器来编辑工具栏资源。双击ResourceView视图中的Toolbar工具栏资源,即可打开工具栏编辑器。编辑工具栏使用工具栏编辑器来编辑工具栏资源。双击Resource通常,只需让一个按钮的ID值与同样功能菜单项的ID值相同即可。如果按钮没有对应菜单项,则必须利用ClassWizard类向导添加一个消息处理函数。建立消息映射通常,只需让一个按钮的ID值与同样功能菜单项的ID值向导生成的标准工具栏的ID值为IDR_MAINFRAME。对一些功能复杂的应用程序,需要创建多个不同的工具栏。要生成工具栏,首先必须添加工具栏资源,然后参照MFC应用程序框架添加工具栏的方法,构造一个CToolBar类的对象,调用CToolBar::Create()或CreateEx()函数创建工具栏窗口,最后调用CToolBar::LoadToolBar()函数载入工具栏资源。除这些基本步骤之外,还可以调用其他相关函数从而进一步改善工具栏。自定义工具栏的操作向导生成的标准工具栏的ID值为IDR_MAINFRAME1.创建工具栏窗口调用CToolBar::Create()或CreateEx()函数创建并初始化工具栏窗口对象。若创建成功,函数返回TRUE,否则返回FALSE。2.装载工具栏资源调用LoadToolBar()函数装载工具栏资源。用Create()或者CreateEx()函数创建工具栏,其实只是获得了一个窗口句柄,工具栏窗口中位图按钮的加载是靠LoadToolBar()函数来完成的。若加载成功,将返回TRUE,否则返回FALSE。1.创建工具栏窗口3.设置工具栏风格
如果在调用初始化函数CToolBar::Create()或者CreateEx()时设置的工具栏风格不满足需要,可以再用SetBarStyle()函数重新进行设置。4.设置工具栏停靠特性设置工具栏停靠特性,需要调用EnableDocking()函数。既要调用CControlBar::EnableDocking()函数设置工具栏的停靠特性,还要调用框架类的成员函数EnableDocking()函数来设置框架窗口以允许它的子窗口控制栏可以以何种方式停靠。不管一个框架窗口中有多少个子窗口控制栏,该函数只需调用一次。3.设置工具栏风格5.设置工具栏的初始停靠位置通过调用CFrameWnd::DockControlBar()函数定位一个工具栏的初始停靠位置。6.移动工具栏调用CFrameWnd::FloatControlBar()函数来移动、定位一个工具栏。7.工具栏隐显控制通过对函数CWnd::SetStyle()的调用可以改变某些工具栏窗口的风格,但该函数不能改变WS_VISIBLE,只能通过父类CWnd的ShowWindow()成员函数来显示或隐藏工具栏。
5.设置工具栏的初始停靠位置状态栏实际上是一个窗口,一般分为几个窗格,每个窗格显示不同的信息。使用AppWizard创建一个单文档应用程序,其他接受默认选项时,生成的应用程序自动创建带有默认窗格的状态栏。在MFC中,状态栏的功能由CStatusBar类实现。状态栏的使用状态栏实际上是一个窗口,一般分为几个窗格,每个窗格显示不
状态栏类的成员函数状态栏类的成员函数
利用MFCAppWizard向导创建应用程序时,首先在CMainFrame类中定义一个成员变量m_wndStatusBar,它是状态栏类CStatusBar的对象。其次在MFC应用程序框架的实现文件MainFrm.cpp中,为状态栏定义一个静态数组indicators,如下所示:
staticUINTindicators[]={ID_SEPARATOR,//显示命令功能提示
ID_INDICATOR_CAPS, //显示大写锁定键状态
ID_INDICATOR_NUM, //显示数字锁定键状态
ID_INDICATOR_SCRL, //显示滚动锁定键状态};状态栏操作利用MFCAppWizard向导创建应用程序
这个全局的提示符数组indicators中的每个元素代表状态栏上一个窗格的ID值,这些ID在应用程序的串表资源StringTable中进行了说明。通过增加新的ID标识来增加用于显示状态信息的窗格。状态栏显示的内容由数组indicators决定,需要在状态栏中显示的各窗格的标识符、位置以及个数也由该数组决定,状态栏显示的内容是可以修改的。最后CWnd::Create()函数以主框架窗口为父窗口创建状态栏,创建后默认停靠在主框架窗口的底部。CWnd::SetIndicators(indicators,sizeof(indicators)/sizeof(UINT))函数将创建后的状态栏分隔为sizeof(indicators)/sizeof(UINT)个窗格,窗格的ID分别为indicators数组中的元素值。这个全局的提示符数组indicators
一个应用程序只有一个状态栏,所以对状态栏的操作主要是对状态栏上窗格的操作。为了把一个窗格添加到默认的状态栏中,一般要完成下列步骤:l
为新建窗格创建一个命令ID和默认字符串;l
将该窗格的命令ID添加到状态栏的静态数组indicators中;l
为该窗格创建一个命令更新处理程序。
一个应用程序只有一个状态栏,所以对状态栏的操作对话框和Windows标准控件
对话框的组成与分类创建对话框模式对话框的编程通用对话框Windows标准控件资源与资源编辑器菜单的使用工具栏的使用状态栏的使用对话框和Windows标准控件对话框的组成与分类对话框的组成对话框:是Windows应用程序与用户打交道的界面元素。
1、对话框模板
对话框模板定义了对话框的特性(比如大小、位置和风格)以及对话框中每个控件的类型和位置。
2、对话框类
从CDialog类派生的对话框类提供编程接口来管理对话框。对话框的组成对话框:是Windows应用程序对话框的分类1、模式(Modal)对话框在对话框关闭之前,用户无法在同一应用程序的其他地方进行工作,例如打开文件对话框。2、无模式(Modaless)对话框在它仍然保留在屏幕的同时,用户还可以在同一应用程序的其他窗口中进行工作,例如查找对话框。
对话框的分类1、模式(Modal)对话框创建对话框创建对话框模板
可以使用对话框编辑器来创建包含不同控件的对话框模板,在对话框编辑器中,可以调整对话框显示时的大小和位置,从Controls工具栏拖放各种类型的控件到对话框中,用Dialog工具栏调整控件的位置,测试对话框的外观和行为。
可以使用菜单方式:InsertResource打开InsertResource对话框,选中Dialog后单击New按钮即可打开对话框编辑器。或者使用项目的ResourceView,找到Dialog资源,右击后选择InsertDialog也可打开对话框编辑器。创建对话框创建对话框模板可以使用对话框编辑器来创创建对话框对话框编辑器(a)对话框模板
(b)Controls工具栏
(c)Dialog工具栏创建对话框对话框编辑器(a)对话框模板创建对话框创建对话框类在创建了对话框模板后,就可以利用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实现步骤程序的步骤如下。控件IDCaption静态控件IDC实现步骤(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函数编写初始化代码。实现步骤(2)使用ClassWizard创建对话框类CMy实现步骤BOOLCMyColorDialog::OnInitDialog(){
CDialog::OnInitDialog(); m_nR=0; m_nG=0; m_nR=0;
UpdateData(FALSE);//将设定的变量值传送给对应的控件
returnTRUE;}实现步骤BOOLCMyColorDialog::OnIni实现步骤(3)对视图类进行编辑,以能激活对话框,并进行绘图。首先要使用ResourceView中的菜单编辑器来创建菜单项“颜色设置”。在创建了菜单项后,可通过ClassWizard为该菜单项映射菜单消息。
在视图中需要生成一个该类的对象。记得包含头文件
在为菜单项颜色设置映射的消息中,写如下代码
dlg.DoModal();
Invalidate(); 实现步骤(3)对视图类进行编辑,以能激活对话框,并进行绘图实现步骤编辑视图类中的OnDraw,进行绘图voidCMyView::OnDraw(CDC*pDC){ CMyDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); CRectrect; GetClientRect(rect);Cbrush
brush;brush.CreateSolidBrush(RGB(dlg.m_nR,dlg.m_nG,dlg.m_nB));pDC->SelectObject(&brush);
pDC->Rectangle(100,100,200,300);}实现步骤编辑视图类中的OnDraw,进行绘图Windows通用对话框
Windows提供了一组标准用户界面对话框,它们都由MFC库中相应的类来支持。可以使用通用对话框来执行各种标准操作,如选择文件、指定字体和选择颜色等。MFC提供了6类标准的对话框,这些对话框有一个共同的特点:它们都从用户处获取信息,但它们并不对信息作处理。
Windows通用对话框Windows提供了Windows通用对话框通用对话框说
明CFileDialog封装了标准的“打开”和“另存为”对话框CColorDialog封装了标准的“颜色”对话框CFontDialog封装了标准的“字体”对话框CFindReplaceDialog封装了标准的“查找”和“替换”对话框CPrintDialog封装了标准的“打印”和“打印设置”对话框CPageSetupDialog封装了标准的“页面设置”对话框Windows通用对话框通用对话框说明CFileDialCFileDialog类CFileDialog类(1)构造CFileDialog类的对象。
CFileDialog(BOOLbOpenFileDialog,LPCTSTRlpszDefExt=NULL,LPCTSTRlpszFileName=NULL,DWORDdwFlags=OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,LPCTSTRlpszFilter=NULL,CWnd*pParentWnd=NULL)
CFileDialog类(1)构造CFileDialog类的对象。
CFileDiCFileDialog类参数bOpenFileDialog是一个标记位,其值如果为TRUE,那么将构造【打开】对话框;如果值为FALSE,那么将构造“另存为”对话框。参数lpszDefExt为默认的文件扩展名。如果用户没有在文件名编辑框中输入扩展名,则由lpszDefExt所指定的扩展名将自动附加在文件名后。参数lpszFileName是出现在文件名编辑框中的初始文件名。如果该参数值为NULL,则不显示初始文件名。参数dwFlags由一个或多个标志组成。其中OFN_HIDEREADONLY将隐藏只读文件,OFN_ALLOWMULTISELECT将允许在选择时与Shift键或Ctrl键配合以选择多个文件。CFileDialog类参数bOpenFileDialog是CFileDialog类参数lpszFilter指定文件过滤器,用于确定显示在文件列表中的文件类型。每个过滤器都是一个字符串对,第一个字符串描述过滤器,第二个字符串是用户过滤文件的扩展名,多个扩展名要用分号(;)作为分界符,两个字符串之间用管道符号(|)分隔。整个字符串以两个管道符(||)和一个NULL字符结束,可以用CString对象值作为该参数的值。例如,以下字符串就是一个描述只在文件列表框中显示文本文件(*.txt)和Microsoft文件(*.doc)的过滤器。CFileDialog类参数lpszFilter指定文件过滤CFileDialog类CFileDialogdlg(TRUE,"bmp","*.bmp",OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,"文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc");CFileDialog类CFileDialogdlg(CFileDialog类(2)调用成员函数DoModal()可以将对话框显示在屏幕上,并让用户从中选择文件。(3)如果DoModal()返回的是IDOK,那么调用成员函数可以获取文件信息。CFileDialog类(2)调用成员函数DoModal(CFileDialog类类的成员函数功能说明GetPathName获取当前所选文件的全路径GetFileName获取当前所选文件的文件名GetFileExt获取当前所选文件的文件扩展名GetFileTitle获取当前所选文件的标题GetNextPathName获取所选择的下一个文件的全路径GetStartPosition得到文件列表的第一个元素的位置CFileDialog类类的成员函数功能说明GetPathNCColorDialog类CColorDialog类提供了可以选择颜色的对话框,使得用户可以从颜色列表中选择要用的颜色。对该类的使用可按下列步骤进行。(1)在视图类相应位置构造CColorDialog对象。(2)设置或修改成员变量m_cc来初始化对话框。m_cc的结构类型为CHOOSECOLOR。(3)调用成员函数DoModal来显示对话框并让用户从中选择颜色。(4)如果DoModal返回的是IDOK,那么用户所做的颜色选择将保存在m_cc中。通过使用该类的成员函数GetColor即可得到选择颜色的RGB值。CColorDialog类CColorDialog类提供了可CColorDialog类CColorDialog类CFontDialog类CFontDialog类封装了标准的【字体】对话框,使得用户可以从系统安装的字体列表中选择要用的字体。CFontDialog类的使用步骤与CColorDialog的使用过程是一样的,在用户选择了字体后,成员函数获取所选择的字体信息。CFontDialog类CFontDialog类封装了标准的CFontDialog类类的成员函数功能说明GetCurrentFont获取当前所选字体GetFaceName获取当前所选字体的字样名GetStyleName获取当前所选字体的风格名GetSize获取当前所选字体的大小GetColor获取当前所选字体的颜色GetWeight获取当前所选字体的磅数IsStrikeOut确定字体是否带有删除线IsUnderline确定字体是否带有下划线IsBold确定字体是否为粗体IsItalic确定字体是否为斜体CFontDialog类类的成员函数功能说明GetCurre其它通用对话框CFindReplaceDialog类封装了通用的【查找】和【替换】对话框。对话框仅仅提供了标准接口,它允许输入待查找和替换的字符串,而真正的查找和替换功能则需要程序员自己实现。与其他通用对话框不同的是,【查找】和【替换】对话框是非模式的。因此,对该类的使用要按照非模式对话框进行。其它通用对话框CFindReplaceDial其它通用对话框CPrintDialog类封装了标准的【打印】和【打印预览】对话框。该对话框是模式对话框,它的使用过程与CColorDialog一样,只是在成员函数上有所不同。CPageSetupDialog类封装了标准的【页面设置】对话框,使得用户可以设置和修改打印边距等。其使用过程与CColorDialog类似,在使用时可利用VisualC++的提示功能来学习和掌握其成员函数。其它通用对话框CPrintDialog类封装了标准的【打印】Windows标准控件控件(Control)是一种子窗口,应用程序用它来与其他窗口进行简单的输入输出操作。作为一般窗口,控件具有许多通用的窗口属性,并且可以使用ShowWindow、MoveWindow等窗口管理函数来显示或隐藏控件、改变控件的位置以及其他操作。本节主要介绍标准的Windows控件的编程方法及一些常用的公共控件的使用方法。Windows标准控件控件(Control)是一种子窗口,应标准Windows控件(1)静态控件(2)按钮控件(3)编辑框控件(4)列表框控件(5)组合框控件(6)滚动条控件
标准Windows控件(1)静态控件静态文本控件(CStatic)静态文本控件是静态控件的一种,只是简单地在屏幕上显示一字符串,在运行过程中它不和用户发生任何关系。当把矩形范围定好位之后,就可以直接输入文本。该控件的一个常用属性是Caption属性,用来在控件中显示文本。该控件一般不响应消息。静态文本控件一般是配合无Caption属性的控件使用的。静态文本控件(CStatic)静态文本控件是静态控编辑框控件(CEdit)编辑框控件是一个让用户从键盘输入和编辑文字的矩形窗口,用户可以通过它,很方便地输入各种文字、数字或者口令,也可使用它来编辑或修改简单的文本文件。编辑框控件的风格可在其属性对话框中设置。例如,如果要具有输入口令功能,则可选择Password选项。如果要锁定编辑框,即在运行时不能进行编辑,则可设置Read-only选项。编辑框控件(CEdit)编辑框控件是一个让用编辑框控件(CEdit)编辑框控件可接收很多消息,常用的是EN_CHANGE消息与EN_SETFOCUS消息,其中前者是当用户修改了编辑框中的文本时发出的,后者则是在该控件接收到输入焦点时发送的。封装编辑框控件的类是CEdit类,它有很多成员函数,可以方便程序员进行编辑工作编辑框控件(CEdit)编辑框控件可接收很多消息,常用的是E编辑框控件(CEdit)成员函数说
明GetSel获取编辑框中当前选择的起始字符和终止字符位置ReplaceSel用指定文本替换编辑框中的当前选择SetSel选择编辑框中的一个字符范围SetReadOnly设置编辑框控件的只读状态GetPasswordChar获取用户输入文本时在编辑框控件内显示的口令字符SetPasswordChar设置或删除当用户输入文本时在编辑框控件中显示的口令字符Undo取消上一次编辑框控件操作Clear清除编辑框控件内的当前选择Copy将编辑框控件中的当前选择复制到剪贴板中Paste将数据从剪贴板复制到编辑框控件中的当前光标处GetLine从编辑框控件中获取一行文本编辑框控件(CEdit)成员函数说明GetSel获取编辑按钮控件(CButton)Windows中所用的按钮是随处可见的,常见的按钮有3种类型:按键按钮、单选按钮和复选框。按键按钮通常可以立即产生某个动作,执行某个命令,因此也常被称为命令按钮。单选按钮的外观是一个圆圈,当它被选中时,单选按钮中就标上一个黑点。复选框的外观是一个空心方框,当它被选中时,复选框中就加上一个“X”标记,通常复选框只有选中和没选中两种状态。按钮控件(CButton)Windows中所用的按钮是随处按钮控件(CButton)对于按键按钮的使用主要是映射BN_CLICKED单击事件和BN_DOUBLECLICK双击事件。对于单选按钮的使用往往是使用一组按钮,比如表示性别的“男”、“女”都可以使用单选按钮。为了表示这两个单选按钮是一组,必须将本组中第1个按钮的Group属性选中,并为设定Group属性的按钮在ClassWizard中映射成员变量。运行时如果该变量值为0,则选中第1个按钮,若为1则选中的是第2个按钮,依次类推。在使用复选框时,要为每一个复选框映射一个变量,变量的类型为BOOL类型,在运行时,如果某个复选框被选中,则对应变量的值为TRUE,反之为FALSE。按钮控件(CButton)对于按键按钮的使用主要是映射BN_列表框控件(CListBox)列表框控件是一个放有用户可以选择对象项的列表的控件窗口,可以让用户在其中选择一个或多个项。列表框控件默认情况下只能进行单选操作,若要使列表框能进行多项选择,则需要修改其属性中Style下的Selection属性。该属性值若为Simple,就只能进行单选;若为Multiple,则可直接使用Multiple进行多选;若为Extended,则可配合Shift和Ctrl键进行多选。列表框控件(CListBox)列表框控件是一个放有用列表框控件(CListBox)成员函数功
能AddString在列表框中增加一个串DeleteString在列表框中删除一个串InsertString在列表框中指定位置插入一个串ResetContent清除列表框中所有列表项FindString在列表框中查找一个串SetCurSel选择一列表项GetSel获取一列表项的选择状态GetCount获取列表框中列表项的数目GetCurSel获取列表框中当前所选串的索引(从0开始)GetText获取某个位置处的字符串值列表框控件(CListBox)成员函数功能AddStr列表框控件(CListBox)列表框的使用一般可按下述步骤进行操作。(1)在对话框上放置列表框控件,设置其属性。(2)用ClassWizard为该控件映射CListBox类型的成员变量。(3)在对话框的OnInitDialog()函数中,使用ClistBox的成员函数AddString()为控件进行初始化。(4)若要判断列表框中被选中的字符串,对单选情况可使用GetCurSel()函数获得所选项的索引,再利用GetText()函数获得该索引处的字符串值。若是多选可根据GetCount()函数返回的列表项,从头使用GetSel()判断是否被选中,若选中,则再使用GetText()函数即可。列表框控件(CListBox)列表框的使用一般可按下述组合框的产生列表框控件和编辑框控件作为用户输入的窗口,各有其优点。
(1)列表框中可列出用户所需的选项,用户不必记住每一项,也不用一字一字输入。但是当用户需要的项目未在列表框中列出时,列表框就无能为力了。
(2)编辑框控件可以根据用户需求进行灵活输入,但需要记忆内容,并且需要逐字输入。如果将这两个控件结合起来使用,正常情况下用户可方便地在列表框中进行选择,如果没有所需项,则使用编辑框进行输入,从而出现了组合框这种控件
组合框结合列表框和编辑框控件的特点,取二者之长,互相弥补其短,从而完成复杂的输入功能。组合框的产生列表框控件和编辑框控件作为用户输入的窗口组合框Windows提供3种类型的组合框:简单组合框、下拉式组合框和下拉式列表框。
1、简单组合框和下拉式组合框都含有列表框和编辑框控件,但是简单组合框的列表框不是下拉式的,跟正常的列表框一样。下拉式列表框则虽然有下拉式的列表,但却没有文字编辑功能。
2、下拉式列表框与普通列表框相比,占用的屏幕要少的多,用户可以根据对话框的布局适当选择组合框的下拉式列表类型和列表框。如果对话框上要放置能进行选择的控件,但空间却不大,可选用下拉式列表框;若对话框上比较空,则可以使用列表框。组合框Windows提供3种类型的组合框:滚动条控件
滚动条是窗口中常见的对象。当窗口客户区中要显示比其自身大的对象时,滚动条便应运而生。这种滚动条与窗口一同创建,位于窗口用户区旁的非用户区,用来扩展用户区的显示范围,它被称为标准滚动条。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年在线翻译服务合同
- 2026年跨境电商直播带货合同协议
- 工程借款合同协议2026年变更条款
- 2026年电影预告片后期特效合同
- 竞买协议2026年合同履行监督条款
- 快递服务合同2026年快递车辆租赁合同
- 2026年展会营销推广合同协议
- 2026年汽车买卖居间合同
- 车辆保险合同2026年保险责任协议
- 2026年光纤网络安装合同协议
- 2025年查对制度考核考试题库(答案+解析)
- 云南省2025年普通高中学业水平合格性考试历史试题
- 骨关节疾病危害课件
- 四川省2025年高职单招职业技能综合测试(中职类)汽车类试卷(含答案解析)
- plc电机正反转-教案
- 燃机三菱控制系统简述课件
- 2022年医务科年度工作总结范文
- 稽核管理培训课件
- 货币银行学课件(完整版)
- 临时电箱日常巡查记录表
- 公民户口迁移审批表
评论
0/150
提交评论