MFC编程基础教程.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《MFC编程基础教程.pdf》由会员分享,可在线阅读,更多相关《MFC编程基础教程.pdf(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、MFC 编程基础教程 Prepared on 24 November 2020第 1 章基于对话框的 Windows 应用程序1.简介 Windows 编程的两种方法,即 WindowsAPI编程和 MFC 编程。2.基于对话框的应用程序的创建过程:建立基于对话框的 MFC 应用程序框架;放置控件;设置控件属性;为控件连接变量,即为控件命名;添加并且编写消息处理函数。3.常用基本控件:静态文本框:主要用来显示文本信息,不能接受用户输入命令按钮:是最常见的、应用最广泛的一种控件。在程序执行期间,当单击某个命令按钮后就会执行相应的消息处理函数。编辑框:是一个文本编辑区域,用户可以在该区域输入、编辑
2、和显示正文内容。框架:将一组相关的控件框起来,达到标识一组控件的作用。单选按钮:用户在一组单选按钮中最多只能选择一项。当某一项被选定后,其他选项自动变成未选状态。复选框:列出了可供选择的项,用户可根据需要选择其中的一项或多项,各选项之间的状态互不相关。列表框:通过显示多个选项,供用户选择,达到与用户对话的目的。组合框:组合了编辑框和列表框的特性而形成的一种控件。在列表框中列出可供用户选择的项,当用户选定某项后,该项内容自动装入编辑框中。滚动条:通常附在对话框上用来协助观察数据或确定位置,也可以用来作为数据输入的工具。编程基础Windows 应用程序的主要特点是:具有标准的图形用户界面。具有与硬
3、件无关的特性。采用“消息传递,事件驱动”的运行机制。用 VisualC+编写 Windows 应用程序主要有两种方法:一是使用 Windows提供的应用程序接口(ApplicationProgrammingInterface,API)函数;二是使用Microsoft提供的微软基础类(MicrosoftFoundationClass,MFC)。1.1.1WindowsAPI编程从本质上来说,API是 Windows 系统支持的函数定义、参数定义和消息格式的集合,共有上千个标准的 API函数可供应用程序调用。调用 WindowsAPI函数的方法与调用 C 语言库函数的方法基本相同。下面通过一个简单
4、的实例来说明 WindowsAPI 编程是如何调用 API函数的。#includeintAPIENTRYWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)MessageBox(NULL,这是一个简单的 Windows应用程序!,API函数调用示例,MB_OK);return0;这是一个简单的 Windows应用程序。Windows 应用程序的主函数是WinMain(),不是 main()函数。函数体中调用了 WindowsAPI函数MessageBox(),弹出如图所示的对话框。在直接使用
5、API函数进行 Windows 编程时,程序员不仅需要熟记一大堆常用的 API函数,而且还要对 Windows 操作系统有深入的了解,编写大量的代码。用这种方式即使是开发一个很简单的应用程序也需要大量的工作,直接用API函数进行编程是需要极大的耐心和丰富的编程经验的。1.1.2MFC1.1.2MFC 编程编程MFC是 VisualC+的核心。虽然在 Windows应用程序中可以直接调用 API函数,但是一般不经常直接调用,而是从 MFC 类创建对象并调用属于这些对象的成员函数。MFC 是 Microsoft公司提供的用来编写 Windows 应用程序的 C+类库,MFC大约有 200 多个类,
6、可以分成两种:一是 Cobject类的派生类,它们以层次结构的形式组织起来,几乎每个子层次结构都与一个具体的 Windows实体对应;二是非 Cobject派生类,这些都是独立的类,如表示点的 Cpoint类,表示矩形的 Crect 类。在 VisualC+中,可以创建以下 3类典型的 Windows 应用程序,它们都是通过 MFCAppWizard(exe)(以下简称 AppWizard)向导创建的:(1)基于对话框的应用程序:这类程序适合于文档较少而交互操作较多的应用场合,如 Windows自带的计算器程序。(2)单文档界面(SDI)应用程序:这类程序一次只能打开一个文档,如Windows
7、 自带的 Notepad程序。(3)多文档界面(MDI)应用程序:这类程序可以同时打开多个文档并进行处理,处理的过程中很容易地进行切换,如 MicrosoftWord。基于对话框的基于对话框的 WindowsWindows 应用程序应用程序对话框是一种特殊类型的窗口,绝大多数 Windows程序都通过对话框与用户进行交互。在 VisualC+中,对话框既可以单独组成一个简单的应用程序,又可以成为文档/视图结构程序的资源。1.2.1简单应用程序实例创建对话框程序的步骤:(1)建立基于对话框的 MFC应用程序框架;(2)放置控件;(3)设置控件属性;(4)为控件连接变量,即为控件命名;(5)添加并
8、且编写消息处理函数。【例】编写一个如图所示的应用程序。若单击“复制”按钮,则把上面的编辑框中的内容复制到下面的编辑框中;若单击“结束”按钮,则退出程序的运行。程序的创建过程:(1)建立基于对话框的 MFC应用程序框架。选择“文件|新建”命令;在“工程”选项卡中,选定“MFCAppWizard(exe)”,输入工程名称,选择“确定”。选定“D基本对话”,即创建基于对话框的应用程序,选择“完成”。(2)放置控件删除原有的控件。放置所需的控件:两个编辑框和两个命令按钮。方法是:先单击控件工具栏上的控件图标选择所需的控件,然后在对话框设计界面上按住鼠标左键拖拉出所需要的大小后释放。(3)设置控件属性选
9、定控件,在其快捷菜单中选择“属性”命令,在弹出如图所示的对话框中进行设置。上面编辑框的属性设置为:选定“Multiline”复选框,编辑框中可以输入多行文本。选定“Verticalscroll”和“AutoVscroll”,编辑框将有垂直滚动条。选定“Wantreturn”。下面编辑框属性的设置与上面编辑框基本一样,只是可以不选定“Wantreturn”。从图中可以看到编辑框的 ID为 IDC_EDIT1,这是该控件的标识。任何一个控件都有一个 ID,某些函数需要通过 ID对控件进行操作。(4)连接变量为控件连接变量就是为控件起一个名称。每一个控件都是一个对象,调用MFC类库中的函数都是通过对
10、象来实现的。为 IDC_EDIT1连接变量 m_e1的步骤为:在 IDC_EDIT1编辑框的快捷菜单中选“建立类向导”,弹出“MFCClassWiard”对话框。在“MemberVariables”中,选定“IDC_EDIT1”,再选择“AddVariable”命令。在“AddMemberVariable”对话框中输入以下的数据:MemberVariablename(内存变量名):m_e1;Category(类别):Control;Variabletype(类型):Cedit用同样的方法再为 IDC_EDIT2连接一个变量 m_e2。(5)添加并且编写消息处理函数。本例要求单击“复制”按钮后上
11、面编辑框中的内容复制到下面的编辑框中。也就是说,在程序运行时,在“复制”按钮上发生单击事件后,Windows向对话框发出了一个 BN_CLICKED 消息,CTESTDlg类应有一个处理该消息的函数。添加和编写这个消息处理函数的过程是:双击“复制”按钮,弹出的“AddMemberFunction”对话框,输入函数名(缺省函数名为 OnButton1),选择“确定”按钮后,添加了一个空函数。另一个方法是在“MFCClassWiard”对话框“MessageMaps”选项卡中,选定 IDC_BUTTON1和BN_CLICKED消息,然后选择“AddFunction”按钮即可。添加的空函数如下:vo
12、idCTESTDlg:OnButton1()1.2.21.3.11.3.21.3.31.2.21.3.11.3.21.3.3性设置编辑框的属性主要在 Styles选项卡中设置。重要属性有:(1)Multiline:定义该编辑框为多行文本框。(2)Number:限定输入的字符只能是数字字符。(3)Border:为控件创建边界。(4)Read-only:编辑框成为只读的,禁止用户编辑。2.成员函数编辑框常用的成员函数见表。此外编辑框还可以使用 CWnd 类的成员函数。CWnd 类的重要成员函数有:(1)获取编辑中的内容形式 1:voidGetWindowText(CString&rString)c
13、onst;说明:将编辑框中的内容复制到 CString类对象 rString中。示例:将编辑框 m_e中的内容复制到 CString类对象 ch中。CStringch;(ch);形式 2:intGetWindowText(LPTSTRlpszStringBuf,intnMaxCount)const;说明:将编辑框中的内容复制到 lpszStringBuf 中,最多复制 nMaxCount 个字符。lpszStringBuf是字符数组或字符指针。示例:将编辑框 m_e中的内容复制到字符数组 ch中。charch80;(ch,80);(2)设置编辑框中的内容形式:voidSetWindowText
14、(LPCTSTRlpszString);说明:将 lpszString 中的内容替换编辑框中原有内容,lpszString 是字符数组或字符指针。示例:设置编辑框中的内容为“abcdefg”charch20=abcdefg;(ch);3.连接变量编辑框在连接变量时,除了要指定变量名之外,还要确定变量类别。变量类别有两个可选择:一是 Control,意味着该变量作控件使用,对应的变量类型只能是 Cedit,可以使用该控件类的成员函数;二是 Value,意味着该变量当作C/C+中普通的变量使用,对应的变量类型有 CString、int、double等,可以使用这些数据类型的函数,但是不能使用控件的
15、成员函数。若一个编辑框连接了一个 Value类别的变量,则该变量就表示这个编辑框,编辑框中显示的内容就是变量的值。但是,改变了编辑框的内容并不会自动更新对应的变量的值,同样,改变了变量的值也不会自动刷新编辑框的内容。若要保持一致,需要使用 UpdateData()函数更新,如图所示。若编辑框的内容改变了,则应使用语句 UpdateData(TRUE);更新对应的变量的值;若变量的值改变了,则应使用语句 UpdateData(FALSE);刷新编辑框的内容。4.消息处理函数在编辑框能处理的消息中是最重要的是 EN_CHANGE,这是编辑框中的文本被修改后发出的消息。【例】输入一元二次方程 ax2
16、+bx+c=0的系数 a、b、c,计算并输出两个根x1、x2,如图所示。求方程的根对话框上有 5 个静态文本框、5个编辑框和 2 个命令按钮。编辑框按表连接变量,其余控件不需要连接变量。为了要计算 b2-4ac的平方根,需要使用 sqrt()函数,因此在文件的开始添加了文件包含命令:#include#include1.4.11.4.21.4.11.4.2计要求同一组中的按钮必须一个接一个地放进对话框中,中间不能插入其他控件,并且一个组的第一个按扭要选中“Group”属性,表示一组控件的开始。2.重要属性(1)ID:每个命令按钮都有一个缺省 ID,如 IDC_RADIO1,可以重新设置。(2)标
17、题:该属性值就是单选按钮右边显示的文本标题。(3)Group:一组中第一个按钮选中该属性,表示它是一组的开始。3.消息单选按钮能处理的消息是 BN_CLICKED。4.重要函数(1)设定单选按钮选中状态初始时,可使用 WindowsAPI函数 CheckRadioButton()设定一组单选按钮中选中的按钮。形式:voidCheckRadioButton(intnIDFirstButton,intnIDLastButton,intnIDCheckButton);说明:nIDFirstButton 是一组中第一个单选按钮的 ID;nIDLastButton是一组中最后一个单选按钮的 ID;nID
18、CheckButton为初始时设置为选中的那个单选按钮的 ID。(2)判定单选按钮是否被选定形式:UINTIsDlgButtonChecked(intnIDButton)const;说明:如果 ID为 nIDButton 的按钮被选定,则该函数的返回值为 true,否则为 false。【例】设计一个如图所示的程序。当单击“确定”后,用 AfxMessageBox 函数显示一个如图所示的消息框。(1)界面设计首先创建一个对话框程序框架,然后放置各控件,进行属性设置,将编辑框连接到 Cstring类型的 m_e变量,其余控件不需要连接变量。将“男”和“教授”对应的单选钮的Group属性勾上。(2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 编程 基础教程
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内