MFC编程基础1基于对话框的Windows应用程序_第1页
MFC编程基础1基于对话框的Windows应用程序_第2页
MFC编程基础1基于对话框的Windows应用程序_第3页
MFC编程基础1基于对话框的Windows应用程序_第4页
MFC编程基础1基于对话框的Windows应用程序_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、第1章 基于对话框的 Windows应用程序1. 简介Windows编程的两种方法,即 Windows API编程和MFC编程。2. 基于对话框的应用程序的创建过程:? 建立基于对话框的MFC应用程序框架;? 放置控件;? 设置控件属性;? 为控件连接变量,即为控件命名;? 添加并且编写消息处理函数。3. 常用基本控件:? 静态文本框:主要用来显示文本信息,不能接受用户输入? 命令按钮:是最常见的、应用最广泛的一种控件。在程序执行期间,当单 击某个命令按钮后就会执行相应的消息处理函数。? 编辑框:是一个文本编辑区域,用户可以在该区域输入、编辑和显示正文 内容。? 框架:将一组相关的控件框起来,

2、达到标识一组控件的作用。? 单选按钮:用户在一组单选按钮中最多只能选择一项。 当某一项被选定后, 其他选项自动变成未选状态。? 复选框:列出了可供选择的项,用户可根据需要选择其中的一项或多项, 各选项之间的状态互不相关。? 列表框:通过显示多个选项,供用户选择,达到与用户对话的目的。? 组合框:组合了编辑框和列表框的特性而形成的一种控件。在列表框中列出可供用户选择的项,当用户选定某项后,该项内容自动装入编辑框中。? 滚动条:通常附在对话框上用来协助观察数据或确定位置,也可以用来作为数据输入的工具。E1.1 Windows 编程基础Windows应用程序的主要特点是:?具有标准的图形用户界面。?

3、具有与硬件无关的特性。?采用 消息传递,事件驱动”的运行机制。用Visual C+编写 Windows应用程序主要有两种方法:一是使用Windows提供的应用程序接口(Application Programming Interface , API )函数;二是使用Microsoft 提供的微软基础类( MicrosoftFoundation Class , MFC )。1.1.1 Windows API 编程从本质上来说, API是 Windows系统支持的函数定义、参数定义和消息格式的集合,共有上千个标 准的API函数可供应用程序调用。调用 Windows API函数的方法与调用 C语言库函

4、数的方法基本相同下面通过一个简单的实例来说明Windows API编程是如何调用 API函数的。# include windows.hint APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow) MessageBox ( NULL, 这是一个简单的 Windows应用程序! ,API函数调用示例 ,MB_OK ); return 0;A円函数调用示例这是一个简单的 Windows应用程序。 Windows应用程序的主函数是WinMain(),不是 main()函数

5、。函数体中调用了 Windows API函数MessageBox(),弹出如图所示的对话框。在直接使用 API函数进行 Windows编程时,程序员不仅需要熟记一大堆常用的API函数,而且还要对 Windows操作系统有深入的了解,编写大量的代码。用这种方式即使是开发一个很简单的应用程序 也需要大量的工作,直接用API函数进行编程是需要极大的耐心和丰富的编程经验的。1.1.2 MFC 编程MFC是Visual C+的核心。 虽然在 Windows应用程序中可以直接调用API函数,但是一般不经常直接调用,而是从 MFC类创建对象并调用属于这些对象的成员函数。MFC是Microsoft公司提供的用

6、来编写 Windows应用程序的 C+类库,MFC大约有200多个类,可以分成两种:一是Cobject类的派生类,它们以层次结构的形式组织起来,几乎每个子层次结构都与一个具体的Windows实体对应;二是非Cobject派生类,这些都是独立的类,如表示点的Cpoint类,表示矩形的 Crect类。在Visual C+中,可以创建以下 3类典型的 Windows应用程序,它们都是通过 MFC AppWizard(exe) (以下简称 AppWizard )向导创建的:(1 )基于对话框的应用程序: 这类程序适合于文档较少而交互操作较多的应用场合,如Windows自带的计算器程序。(2 )单文档界

7、面(SDI )应用程序:这类程序一次只能打开一个文档,女口 Windows自带的Notepad程序。(3 )多文档界面(MDI )应用程序:这类程序可以同时打开多个文档并进行处理,处理的过程中很容易地进行切换,如Microsoft Word 。1.2 基于对话框的 Windows 应用程序对话框是一种特殊类型的窗口,绝大多数Windows程序都通过对话框与用户进行交互。在Visual C+中,对话框既可以单独组成一个简单的应用程序,又可以成为文档/视图结构程序的资源。1.2.1简单应用程序实例创建对话框程序的步骤:(1 )建立基于对话框的 MFC应用程序框架;(2 )放置控件;(3 )设置控件

8、属性;(4 )为控件连接变量,即为控件命名;(5)添加并且编写消息处理函数。【例1.1】编写一个如图所示的应用程序。若单击 复制”按钮,则把上面的编辑框中的内容复制到 下面的编辑框中;若单击 结束”按钮,则退岀程序的运行。程序用尸界面程序的创建过程:(1 )建立基于对话框的MFC应用程序框架。 选择文件|新建”命令; 在 工程”选项卡中,选定 “ MFC AppWizard(exe),”输入工程名称,选择确定” 选定“ D基本对话”,即创建基于对话框的应用程序,选择完成”(2 )放置控件?删除原有的控件。?放置所需的控件:两个编辑框和两个命令按钮。方法是:先单击控件工具栏上的控件图标选择所需

9、的控件,然后在对话框设计界面上按住鼠标左键拖拉岀所需要的大小后释放。(3 )设置控件属性选定控件,在其快捷菜单中选择属性”命令,在弹岀如图所示的对话框中进行设置。上面编辑框的属性设置为:?选定“ Multiline复选框,编辑框中可以输入多行文本。?选定“ Vertical scroll和“ Auto Vscroll,编辑框将有垂直滚动条。?选定 “ Want return。”下面编辑框属性的设置与上面编辑框基本一样,只是可以不选定“ Want return。”|l eh创 r Awlfl HScfOll* MuHNmv址ert址单scrollr Number厂 No hjde sekcihn

10、i Uppercase 厂 OFM cunverl厂 Low曰irt:3电P anl returnr Read gnly编辑框属性窗口 “G诡面”选项卡卒 豎 General Slylts | Extended Styles |Align textI Horizontal Bcralil r* Horder编辑框届性窗口 “Styl选项卡从图中可以看到编辑框的ID为IDC_EDIT1,这是该控件的标识。任何一个控件都有一个ID,某些函数需要通过 ID对控件进行操作。4 )连接变量为控件连接变量就是为控件起一个名称。每一个控件都是一个对象,调用MFC类库中的函数都是通过对象来实现的。为IDC_E

11、DIT1连接变量 m_e1的步骤为: 在IDC_EDIT1编辑框的快捷菜单中选建立类向导”,弹出 “ MFC ClassWiard对话框。 在 “ Member Variables 中;选定 “ IDC_EDIT1 ”,再选择 “ Add Variable 命令。 在 “ Add Member triable对话框中输入以下的数据:Member Variable name (内存变量名):m_e1 ;Category (类别):Control ;Variable type (类型):Cedit用同样的方法再为IDC_EDIT2连接一个变量 m_e2 。(5)添加并且编写消息处理函数。本例要求单

12、击复制”按钮后上面编辑框中的内容复制到下面的编辑框中。也就是说,在程序运行时,在 复制”按钮上发生单击事件后, Win dows向对话框发出了一个 BN_CLICKED 消息,CTESTDlg类应有一个处理该消息的函数。添加和编写这个消息处理函数的过程是:双击复制按钮,弹出的“ Add Member Function对话框,输入函数名(缺省函数名 为OnButton1 ),选择 确定”按钮后,添加了一个空函数。另一个方法是在“ MFCClassWiard 对话框 “ Message Maps选项卡中,选定 IDC_BUTTON1 和 BN_CLICKED 消 息,然后选择 “ Add Fun

13、ction按钮即可。添加的空函数如下:void CTESTDIg:O nButto n1()/ TODO: Add your con trol no tificati on han dler code here为 void CTESTDlg:OnButton1() 添加代码void CTESTDlg:OnButton1() / TODO: Add your control notification handler code here m_e1.SetSel(0,-1); / 选定编辑框 m_e1 中的所有内容 m_e1.Copy(); / 把编辑框 m_e1 中选定的内容复制到剪贴板 m_e2

14、.SetSel(0,-1); / 选定编辑框 m_e2 中的所有内容 m_e2.Paste(); / 将剪贴板中内容粘贴到编辑框m_e2 中,替换所有选定的内容用同样的方法为“结束”按钮添加 、编写如下的消息处理函数:void CTESTDlg:OnButton2() / TODO: Add your control notification handler code hereOnOK(); / 退出对话框程序 1.2.2 对话框应用程序框架用 AppWizard 创建基于对话框的应用程序框架(假定工程名为 TEST )后,项目工作区上增加了一 个“ ResourceView 选”项卡,中间是

15、对话框设计界面,右边是控件工具栏。1 ResourceView在 Visual C+ 中,与用户进行交互的对话框界面被认为是一种资源。展开“Dialog ”,可以看到有一个 ID 为 IDD_TEST_DIALOG 的资源,对应中间的对话框设计界面。不管在何时,只要双击对话框资源 的 ID ,对话框设计界面就会显示在中间。2 ClassView在 ClassView 中,如图所示,可以看到生成了 3 个类: CAboutDlg 、 CTESTApp 和 CTESTDlg ( 1 ) CAboutDlg :对应生成的版本信息对话框。( 2 ) CTESTDlg :对话框类,从 Cdialog 继

16、承过来的,在程序运行时看到的对话框就是它的一个 具体对象。( 3 ) CTESTApp :应用程序类,从 CWinApp 继承过来,封装了初始化、运行、终止该程序的代 码。3 对话框设计界面 对话框设计界面是进行对话框设计的地方,可以将各种控件放置在这里。4 控件工具栏控件工具栏上有 26 个控件图标,可以通过这些图标在对话框上设计出所需的控件。选择压1訥) 静态文本:框(Static Text) 框架(Group Box) 亘选框(Check Box) 组合框(Uornbo Bojc) 水平滚动(Honzontal Scroll Bai) 徽调按ffl(SFin) 滑块(ShkT) 列表控件

17、(List Control) JI性更控件(Tab Control) 塞信息编辑框(Rich 日历控件(Month Calerriai) 用户控件(Custom Control)團片(Picture) 编揖框(Edit Box)命令按钮(BuitonJ单选摄钮(Rfidio Button)列表框(List Bci 垂直滚动(Vertical Scroll Bai)进度(Prosress)热键(Hot Key) 树形控 WTiee Control) 动画(Animate)日期时间选择器(Data T ime Picker) IP 地址J2WIP Address)扩展姐合框(Eytended Co

18、 uribo Bo i)控件工員栏1.3 静态文本框、命令按钮和编辑框静态文本框、命令按钮和编辑框是Windows应用程序中最基本的控件。静态文本框是CStatic类的对象,命令按钮是 CButton类的对象,编辑框是 CEdit类的对象。这三个类都是从 CWnd类直接派生来的, 具有CWnd类的全部功能。1.3.1 静态文本框静态文本框是最简单的控件。它主要用来显示文本信息,不能接受用户输入,一般不需要连接变量, 也不需要处理消息。静态文本框的重要属性有:(1)ID :所有静态文本框的缺省ID都是IDC_STATIC,般不需要重新设置。(2 )标题:需要显示的文本信息是在这里设置的。(3 )

19、边框:边框属性在 Styles 选项卡中,决定是否带有边框。1.3.2 命令按钮命令按钮是最常见的、应用最广泛的一种控件。在程序执行期间,当单击某个命令按钮后就会执行相应的 消息处理函数。命令按钮的主要属性是标题属性,该属性用来设置在命令按钮上显示的文本。命令按钮一般不需要连接变量。命令按钮能处理的消息是 BN CLICKED。1.3.3 编辑框1. 属性设置编辑框的属性主要在 Styles 选项卡中设置。重要属性有:(1 ) Multiline:定义该编辑框为多行文本框。(2 )Number :限定输入的字符只能是数字字符。(3 ) Border :为控件创建边界。(4 ) Read-onl

20、y :编辑框成为只读的,禁止用户编辑。2. 成员函数编辑框常用的成员函数见表。常用的成员函数功 徒SetSel(ii,m)选定編辑框中从第尊个宇符到第m亍宇符的内容. 的作用是选定所有的内容m_e.SetSel(01)jCopy()将编辑框中当前选定的内容复制到翦贴板ni e.Copy()#特编辑框中当前选定的字符致切到聖贴板m e.Cut();Cleait)删除編辑框中当前选定的内容m e.Cleai();Pasted把剪贴板中的内容粘贴到编辑框中光标所在的位置m e.Faste();Getl_jii(r,ch)将多行編辑框中第it行的的容复制到讪中 ch般为抑数組dur ch80Q;Rep

21、laceSeXch)将uh中的内容替换編辑框中选定的内容char ch80=flbcci;m e.RjeplareSel(ch),UndoC)撤消对編辑框的摄后一次操作ra_erUivk() J此外 编辑框还可以使用CWnd类的成员函数。CWnd类的重要成员函数有:(1 )获取编辑中的内容形式 1 : void GetWindowText( CString & rString ) const;说明:将编辑框中的内容复制到CString类对象rString中。示例:将编辑框 m_e中的内容复制到 CString类对象ch中。CString ch;m_e.GetWindowText(ch);形式

22、2 : int GetWindowText( LPTSTR IpszStringBuf, int nMaxCount ) const;说明:将编辑框中的内容复制到IpszStringBuf中,最多复制 nMaxCount个字符。IpszStringBuf是字符数组或字符指针。示例:将编辑框 m_e中的内容复制到字符数组ch中。char ch80;m_e.GetWindowText(ch,80);(2 )设置编辑框中的内容形式: void SetWindowText( LPCTSTR lpszString );lpszString是字符数组或字符指针说明:将IpszString中的内容替换编辑框

23、中原有内容, 示例:设置编辑框中的内容为“ abcdefg ”char ch20=abcdefg;m_e.SetWindowText(ch);3.连接变量编辑框在连接变量时,除了要指定变量名之外,还要确定变量类别。变量类别有两个可选择:一是Control,意味着该变量作控件使用,对应的变量类型只能是Cedit,可以使用该控件类的成员函数;二是Value,意味着该变量当作 C/C+中普通的变量使用,对应的变量类型有CString、int、double等,可以使用这些数据类型的函数,但是不能使用控件的成员函数。若一个编辑框连接了一个Value类别的变量,则该变量就表示这个编辑框,编辑框中显示的内容

24、就是变量的值。但是,改变了编辑框的内容并不会自动更新对应的变量的值,同样,改变了变量的值也不会自 动刷新编辑框的内容。若要保持一致,需要使用UpdateData()函数更新,如图所示。若编辑框的内容改变了,则应使用语句UpdateData (T RUE);更新对应的变量的值;若变量的值改变了,则应使用语句 UpdateData(FALSE);刷新编辑框的内容。4 double类型的变量mCStiing类型的变量m25編辑框与变量之间的内容更新4.消息处理函数在编辑框能处理的消息中是最重要的是EN_CHANGE ,这是编辑框中的文本被修改后发出的消息。【例1.2】 输入一元二次方程 ax 2 +

25、bx+c=0的系数a、 b、 c,计算并输出两个根 x1、 x2, 如图所示。求方程的根对话框上有5个静态文本框、5个编辑框和2个命令按钮。编辑框按表连接变量,其余控件不需要连 接变量.揑件ID变量类型数据类型Edit Bokm_avaluedouble缺省m bvaluedouble缺省mjcvaluedouble缺省valuedouble缺省valuedouble为了要计算b 2-4ac的平方根,需要使用sqrt()函数,因此在 TESTDIg.cpp文件的开始添加了文件包含命令:#include math.h /计算按钮的函数 void CTESTDIg:OnCalc()/ TODO:

26、Add your control notification handler code hereUpdateData(TRUE);double a=m_a;double b=m_b;double c=m_c;m_x1= (-b+sqrt(b*b-4*a*c)/(2*a);m_x2=(-b-sqrt(b*b-4*a*c)/(2*a);UpdateData(FALSE);/结束”按钮的函数void CTESTDIg:OnOk()/ TODO: Add your control notification handler code hereOnOK();【例1.3字符串转换程序转换规则为:大写字母转换成

27、小写; 将小写字母转换成大写; 换行符和回车符不变; 其余字符转换为“ * ”要求:每输入一个字符立即转换i,TESTToday is 2004.07. 10Tomorrow is 2004. 57.11tCMOREDW+IS*+第1个编辑框连接变量 m_e1 (Co ntrol ) 属性选定: MultilineVertical scrollAuto VScrollWant return第2个编辑框连接变量 m_e2 (Control ) 属性选定:MultilineVertical scrollAuto VScrollRead-only对第1个编辑框添加EN_CHANGE消息处理函数voi

28、d CTESTDIg:O nCha ngeEdit1()/ TODO: Add your con trol no tificati on han dler code here char s80;m_e1.GetWi ndowText(s,80);for(i nt i=0;si!=0;i+)if (si=A & si=a & si=z)si=si+A-a:elseif (si=n | si=r)si=si;elsesi=*;m_e2.SetWi ndowText(s);1.4 框架、单选按钮和复选框框架、单选按钮和复选框都是对话框的常见控件。框架与静态文本框一样是 CStatic 类的对象,单选

29、按 钮和复选框与命令按钮一样都是 CButton 类的对象。1.4.1 框架当对话框上控件较多时,可以使用框架将一组相关的控件框起来,达到标识一组控件的作用。框架不需要 连接变量,也不需要处理消息。框架的重要属性有:( 1 ) ID :所有框架的缺省 ID 都是 IDC_STATIC ,不需要重新设置。( 2 )标题:该属性决定框架上的标题文本。1.4.2 单选按钮1. 设计要求同一组中的按钮必须一个接一个地放进对话框中,中间不能插入其他控件,并且一个组的第一个按扭 要选中“Group属性,表示一组控件的开始。2. 重要属性( 1 ) ID :每个命令按钮都有一个缺省 ID ,如 IDC_RA

30、DIO1 ,可以重新设置。( 2 )标题:该属性值就是单选按钮右边显示的文本标题。( 3 ) Group :一组中第一个按钮选中该属性,表示它是一组的开始。3. 消息单选按钮能处理的消息是 BN_CLICKED 。4. 重要函数( 1 )设定单选按钮选中状态初始时,可使用 Windows API 函数 CheckRadioButton() 设定一组单选按钮中选中的按钮。形式: void CheckRadioButton(int nIDFirstButton, int nIDLastButton, int nIDCheckButton);说明: nIDFirstButton 是一组中第一个单选按

31、钮的 ID ; nIDLastButton 是一组中最后一个单选按钮的 ID ; nIDCheckButton 为初始时设置为选中的那个单选按钮的 ID 。( 2 )判定单选按钮是否被选定形式: UINT IsDlgButtonChecked( int nIDButton ) const;说明:如果 ID 为 nIDButton 的按钮被选定,则该函数的返回值为 true ,否则为 false 。【例 1.4】设计一个如图所示的程序。当单击“ 确定” 后,用 AfxMessageBox 函数显示一个如图所示的消息框。1DC_RAD1O1ttH-囲厂京r ms #- fflr谟师IDC_RADI

32、03单选枝融应用示例消息框(1 )界面设计首先创建一个对话框程序框架,然后放置各控件,进行属性设置,将编辑框连接到Cstring类型的m_e变量,其余控件不需要连接变量。(2 )初始化单选按钮的初始化工作在对话框的初始化函数实现。BOOL CTESTDIg:OnlnitDialog()CheckRadioButton(IDC_RADIO1, IDC_RADIO2, IDC_RADIO1);CheckRadioButton(IDC_RADIO3, IDC_RADIO5, IDC_RADIO3);(3)消息处理函数void CTESTDlg:OnButton1()/ TODO: Add your

33、control notification handler code hereUpdateData(TRUE);CString s;s+=s_e;if(lsDlgButtonChecked(IDC_RADIO1)s+=男;elses+=女;if(lsDlgButtonChecked(IDC_RADIO3)s +=教授;else if(lsDlgButtonChecked(IDC_RADIO4)s+=副教授;elses+=讲师;AfxMessageBox(s);1.4.3复选框1. 重要属性(1 ) ID :每个复选框都有一个缺省ID,女口 IDC_CHECK1 ,可以重新设置(2 )标题:该属性

34、值决定了复选框右边显示的文本标题。2. 连接变量复选框通常被连接到 Value类别BOOL类型的变量。3.消息复选框能处理 BN_CLICKED 消息。【例5】设计一个如图所示的程序。当单击确定”后,在右边的编辑框中显示有关信息复选框应用示例4.界面设计首先创建一个对话框程序框架,然后放置各控件,进行属性设计,各编辑框和复选框按表连接变量,其 余控件不需要连接变量。拎牛标题娈量名变量类别变量类型左蝙辑框无injelValueCString右编辑框无ValueCString境选框旅游m clValueBOOL运动in c2ValueBOOL音乐in c3ValueBOOL5.消息处理函数void

35、 CTESTDIg:OnButton1()/ TODO: Add your control notification handler code here UpdateData(TRUE);CString s;s=m_e1;s+=爱好:;if (m_c1) s+= 旅游if (m_c2) s+= 运行 if (m_c3) s+= 音乐 m_e2=s;UpdateData(FALSE); 1.5 列表框和组合框列表框是CListBox类的对象,组合框是 CComboBox的对象。1.5.1 列表框1. 属性设置列表框的属性在如图所示的属性窗口中设置。重要的属性有:(1) Selection该属性决

36、定用户的选择方式,缺省值为Single。属性值有:Single 单项选择Multiple 多项选择,但是忽略Ctrl 和Alt 键。Extended 允许使用Ctrl 和Alt 进行多项选择None禁止选择(2 ) Sort当该属性被选定后,列表框中的选项按字母顺序排列2. 常用成员函数(1 )添加项目格式:int AddString( LPCTSTR Ipszltem );例如:语句 m_l. AddString(”陈蓉);把 陈蓉添加到了列表框 m_l中。(2) 删除项目格式:int DeIeteString( UINT nlndex );说明:nlndex表示被删除项目在列表框中的位置,

37、对于第一个选项,nlndex应为0。例如:语句 m_l. DeleteString (4);删除列表框中的第5个项目。(3) 获取当前被选定的项目的序号格式:int GetCurSel( ) const;例如:语句int l=m_I.GetCurSel();将使I获得m列表框中当前选定的项目的序号。(4) 获取列表框中指定的项目格式 1 : int GetText( int nIndex, LPTSTR lpszBuffer ) const;格式 2 : void GetText( int nIndex, CString& rString ) const;说明:将列表框中第 nIndex个选项

38、的文本送到lpszBuffer或rString中。例如:假定有说明语句char s120; CString s2;,则语句 m_l. GetText(4, s1);和 m_l. GetText(4, rString);把第5项内容分别送到 s1和s2中。【例1.6 编写一个能对列表框进行项目添加、修改和删除操作的应用程序,如图所示。添加”按钮的功能是将文本框中的内容添加到列表框,删除”按钮的功能是删除列表框中选定的选项。如果要修改列表框,则首先选定选项,然后单击修改”按钮,所选的选项显示在文本框中,当在文本框中修改完之后再单击修改确定按钮更新列表框。列表框应用示例(1 )界面设计首先创建一个对

39、话框应用程序框架,然后放置按钮。列表框和命令按钮按表连接变量,其余控件不需 要连接变量。控件3名变量类别33类型列表框mJControlCListBox编辑框meValueCStiing(2)初始化列表框的选项在对话框的初始化函数中用AddString函数添加。BOOL CTESTDIg:OnlnitDialog()/ TODO: Add extra initialization here m_l.AddString( 大学计算机基础 ); m_l.AddString(C/C+ 程序设计 ); m_l.AddString(VB 程序设计 );m_l.AddString( 软件技术基础 );II

40、I3 )消息处理函数void CTESTDlg:OnButton1() / 选择 “添加 ”后执行的函数 / TODO: Add your control notification handler code here UpdateData(TRUE);m_l.AddString(m_e);m_e=;UpdateData(FALSE); void CTESTDlg:OnButton2() / 选择 “删除 ”后执行的函数 / TODO: Add your control notification handler code here int n=m_l.GetCurSel();m_l.Delete

41、String(n); void CTESTDlg:OnButton3() / 选择 “修改 ”后执行的函数 / 将选定的项目送编辑框供修改/ TODO: Add your control notification handler code here CString s;int n=m_l.GetCurSel(); m_l.GetText(n,s);m_e=s;UpdateData(FALSE); void CTESTDlg:OnButton4() / 选择 “确定修改 ”后执行的函数 / 将修改后的项目送回列表框中,替换原项目,实现修改。/ TODO: Add your control not

42、ification handler code here UpdateData(TRUE);int n=m_l.GetCurSel();m_I.DeleteString(n); m_ln sertString(n,m_e); m_e=;UpdateData(FALSE);1.5.2 组合框1.属性设置(1 )类(Type )该属性用于指定组合框的类型,共有三个选择:Simple、 Dropdown和Droplist,默认值为Dropdown 。(2 )键入列表框项( Enter listbox items )在列表框的属性窗口“ Data选项卡中有一个键入列表框项,这是在设计阶段输入选项的地方,

43、如图所示。每当输入一项后按Ctrl+Enter键才能输入下一项。组合框属性窗口 Data选项卡2. 常用成员函数编辑框和列表框的成员函数几乎都可以用于组合框,但是列表框的成员函数GetText()在组合框中的是 GetLBText()。形式 1 : int GetLBText( int nlndex, LPTSTR IpszText ) const;形式 2 : void GetLBText( int nIndex, CString& rString ) const;说明:使用GetLBText函数可以将组合框中的第nIndex个项目的文本送入 lpszText或rString中。3. 组合框

44、发出的消息(1) CBN_SELECTCHANGE:组合框的列表框中的选项改变时发送。(2) CBN_EDITCHANGE:组合框的编辑框中文本改变时发出。【例1.7】设计一个如图所示的对话框。如果单击确定”按钮,则用 MessageBox显示如图所示的信息框。(1)首先创建一个对话框程序框架,然后放置各控件,进行属性设置,组合框的选项在设计阶段直接 输入,按表连接变量,其余控件不需要连接变量。L7.6盂件讎的療量控件变量名变量类别变星类型组合框m cValueCStruig编辑框m_eValueCStri程序运行界直俎合框 区消息框(2)消息处理函数void CTESTDIg:OnButto

45、n1()/ TODO: Add your control notification handler code hereUpdateData(TRUE);CString s;s=品牌:;s=s+m_c;s=s+n;s=s+数量:;s=s+m_e;MessageBox(s);1.6滚动条滚动条是CScrollBar类的对象,是Windows应用程序中一个很重要的控件, 通常附在 对话框上用来协助观察数据或确定位置,也可以用来作为数据输入的工具。滚动条有水平和垂直两种。CUTEST100)iNowPos=100;m_s.SetScrollPos(iNowPos); m_e=iNowPos;break

46、;case SB_PAGELEFT : / 单击滚动条左边的箭头与滑块之间的区域 iNowPos=m_s.GetScrollPos(); / 获取滑块当前位置所代表的值 iNowPos=iNowPos-10;if(iNowPos100)iNowPos=100;m_s.SetScrollPos(iNowPos);m_e=iNowPos;break;UpdateData(FALSE);CDialog:OnHScroll(nSBCode, nPos, pScrollBar);说明:( 1 )由于对话框上可能有多个滚动条, 因此函数首先需要根据指针 pScrollBar 确定事件发生在哪 一个滚动条上

47、,方法是使用表达式 pScrollBar=&m_s 。因为, pScrollBar 指向发生事件的滚动条,所 以这个表达式为真时,意味着用户对滚动条 m_s 进行了操作。( 2 )用户对滚动条的操作有 5 种,因此函数中必须以这 5 种情况分别进行处理。1.7 程序举例对话框是 Windows 应用程序中最常用的一种与用户交互的方式。用户通过对话框输入数据,程序通过对 话框显示执行的情况。【 例 1.9】 设计如图所示的对话框。若选定了“日期”或“时间”复选框,则在对应的只读编辑框中 显示系统当前日期或时间。分析:CTime是MFC中的一个类,封装了日期和时间。它有一个静态成员GetCurrentTime(),返回系统当前的日期和时间。实现:(1 )界面设计首先创建一个对话框程序框架,然后放置各控件,按表进行属性设置和连接变量。

温馨提示

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

评论

0/150

提交评论