MFC编程基础教程
vc++MFC基础教程

1.2.3 编辑区
• 在Visual C++中,编写应用程序代码的位置就是编辑区。该编辑区的 功能十分强大,智能化程度也非常高。在编辑区内,除了能编写 C/C++语言外,还能编写SQL、HTML和VBScript等其他编程语言。 如下图所示。
1.2.4 联机帮助
• Visual C++6.0不像其他集成开发环境一样把帮助系统集成在开发环境 内部,而是提供了一个专门为Visual C++设计的MSDN类库。MSDN 虽然是一个独立的帮助系统,但却能很好地和Visual C++6.0集成在一 起。 • MSDN的使用方式有以下几种: • 单击【Help】|【Contents】命令; • 单击【Help】|【Search】命令; • 单击【Help】|【Index】命令; • 按下【F2】键。 • 通过上述几种命令方式,即可运行MSDN。
1.2.1 工作区窗口和输出窗口
• Find in Files 1和Find in Files 2:两个选项卡的作用相同,用于显示 从多个文件中查找字符串的结果。当用户想要查看某个函数或变量出 现在哪些文件中,单击【Edit】|【Find in Files】命令,弹出【Find in Files】对话框,如下图所示。在【Find in Files】对话框中的 【Find what】后的编辑框中,输入想要查找的内容,单击【Find】按 钮即可。查找到的内容会输出到Find in Files选项卡中。
第1章 Visual C++集成开发环境
• Visual C++是一个功能强大的可视化应用程序开发工具。其凭借强大 功能,受大了广大程序员的欢迎。当今流行的Visual C++的开发工具 是6.0版本。下面来介绍Visual C++ 6.0的一些基本情况。
第6章 MFC基础

MFC概述—MFC应用程序分析
➢ 无WinMain()函数 ➢ 应用程序对象:必须利用应用程序类实例化一个全局对象 ➢ InitInstance()函数:派生类中重写,用于初始化应用程序 ➢ MFC窗体:利用MFC已有的窗体类派生或实例化
-5-
MFC概述—MFC应用程序开发方法
创建项目 创建/编辑资源
函数功能 在数组的最后添加一个数组元素,在必要时扩展数组 将另一个数组添加到此数组,在必要时扩展数组 将另一数组复制给此数组,在必要时扩展数组 设定数组指定位置处的值,在必要时扩展数组 获得一个指向数组元素的指针 释放不用的数组内存 获取数组内指定位置处的值 获取数组中包含的元素个数 获取允许访问数组元素的值的指针 获取数组的上边界的值 在数组的指定位置插入一个元素,后面的元素下标加1 删除指定位置处的值 删除数组中的所有元素 设定数组指定位置处的值,数组不增长 设置数组的的初始大小 重载数组下标操作符
...... END_MESSAGE_MAP
- 10 -
MFC应用程序框架—消息映射
➢ 普通窗口消息
窗口消息 WM_CHAR WM_CLOSE
消息映射宏 ON_WM_CHAR ON_M_CLOSE
默认处理函数
afx_msg void OnChar (UINT, UINT, UINT); afx_msg void OnClose();
afx_msg void OnMouseMove( UINT, CPoint);
- 11 -
MFC应用程序框架—消息映射
➢ 命令消息
//命令消息使用ON_COMMAND宏对其进行映射响应,格式如下: ON_COMMAND(命令ID,响应函数)
//响应函数的原型如下: afx_msg void memberFxn();
VC精华教程MFC入门系列

第一章一个简单的MFC程序该文章为学习了C和C++以及有SDK编程基础的,但还未学习MFC的人员使用,我们开始使用一个基本的内容开始全部的代码如下:你只需将以上代码拷贝下来,在VC++6.0编译器,建一个Window32工程,使用MFC链接库编译即可。
具体步骤:打开VC++6.0,点击主菜单File(文件)-〉New(新建)弹出一个对话框,我们选择win32 Application(win32应用程序),在工程文本框给它起一个名字MyMFC,点击确定。
在确认信息的对话框里选择空工程an empty project点确定。
这样我们就建了一个win32应用程序这样一个类型的工程。
下面我们在这个工程里建一个C++文件。
点击菜单File(文件)-〉New(新建)弹出一个对话框,选择C++ source文件(C++源文件),在文件文本框里给它起个名字MyMFC,点击确定,这时我们将上面的代码拷入,编译链接。
你会发现有3个错误。
nafxcwd.lib(thrdcore.obj):error LNK2001:unresolved external symbol_endthreadexnafxcwd.lib(thrdcore.obj):error LNK2001:unresolved external symbol_beginthreadexDebug/MyMFC.exe:fatal error LNK1120:2 unresolved externals那么,这是因为没有使用MFC类库。
我们现在导入,点击菜单(project)工程-〉setting设置,弹出一个对话框,有一个下拉列表框,里面是Not Using MFC,我们把她改为Using MFC in a Static Library,点击确定,再编译,运行,那么有这样一个窗体出现。
下面是该程序的解释。
在以上的程序中,只使用了两个类CFrameWnd和CWinApp,我们先看第一个类:第一个类sample继承了CFrameWnd类,CFrame类是MFC类库中的一个类,用它来代表窗体框架,我们先用sample类继承它,在构造函数调用了Create这个函数,在运行Create这个函数时调用的是CFrameWnd类中的函数,是MFC写好的函数,CFrameWnd中封装了CreateWindow这个API函数为它的成员函数Create(),它们的参数都是相似的。
MFC编程基础教程

MFC编程基础教程MFC(Microsoft Foundation Classes)是一套基于C++的应用程序框架,用于开发可视化的Windows应用程序。
MFC提供了丰富的工具和类库,使程序开发人员能够更加轻松地创建Windows应用程序。
一、MFC框架的介绍MFC是一种C++编程框架,用于开发Windows应用程序。
MFC提供了一系列的类和方法,用于处理窗口、消息处理、资源管理等常见的任务。
MFC框架的核心是一个称为CWinApp的类,它是应用程序的入口点。
二、MFC的基本概念1.窗口:MFC使用窗口来显示应用程序的用户界面。
窗口可以是主窗口、对话框、工具栏、菜单等。
2.消息处理函数:MFC使用消息机制来处理用户输入和系统事件。
消息处理函数是在收到特定的消息时执行的代码块。
3.控件:控件是用于用户交互的窗口元素,例如按钮、文本框、列表框等。
4.对象模型:MFC使用面向对象的概念来管理窗口和控件。
每个窗口或控件都是一个C++对象,有自己的属性和方法。
三、MFC应用程序的创建1.创建一个MFC应用程序的步骤:a. 新建项目:在Visual Studio中创建一个MFC应用程序项目。
c.编写代码:编写消息处理函数和其他代码,实现应用程序的功能。
d.编译和运行:编译项目并运行应用程序。
四、MFC消息处理1.应用程序的消息循环:MFC应用程序的消息循环负责接收和处理用户输入和系统事件。
2.消息映射表:消息映射表是一个用于将消息与消息处理函数关联的数据结构。
3.常见的消息类型:MFC提供了大量的消息类型,包括鼠标和键盘消息、窗口消息、菜单消息等。
五、MFC控件的使用1.控件的创建和操作:使用MFC提供的类和方法来创建和操作控件。
2.控件的属性设置:通过设置控件的属性来改变它的外观和行为。
3.控件事件的处理:通过处理控件的事件来响应用户的操作。
六、MFC对话框的使用2.对话框控件的操作:对话框中的控件可以像其他控件一样进行操作。
C++课件:MFC编程基础

2021/7/10
12
MFC的优点
1、MFC对于类、类的继承、封 装、多态性、类间关系和相互作 用等应用程序特性都有具体体现, 可以使开发者高效、轻松地建立 Windows应用程序,而不受设 备限制并且由事件进行驱动。
2021/7/10
13
2、MFC具有良好的通用性和 可移植性,它定义了应用程序 的轮廓,并提供了用户接口的 标准实现方法,程序员所要做 的工作就是通过VC所提供的各 种工具来完成这个工作。
(1)CStatic(2)CButton(3)CEdit
(4)CScrollBar(5)CSliderCtrl
(6)CListBox (7)CComboBoxl
(8)CBitmapButton (9)CAnimateCtrl
(10) CTreeCtrl(11)CListCtrl
2021/7/10
27
程序员可以使用这一框架创建
Windows应用程序。
同时:MFC的组织是以C++类层次形式组
织
起来的,几个高层类提供一般功能,
而低层类实现更具体的功能,每一个低
层类都是从高层类派生而来,因此继承
了2021高/7/1层0 类的功能。
2
所以:MFC是一种类的层次结构, 它提供了一个应用程序开发框架, 此框架称为文档/视图架构。
1、Windows消息函数 2、文件处理函数 3、网络函数 4、菜单函数 5、文本与字体函数 6、硬件与系统函数 7、控件和消息函数 8、位图、图标和光栅运算函数 9、绘图函数 10、打印函数 11、设备场景函数 12、进程和线程函数
2021/7/10
6
程序员如何去学习MFC
1、C++语言基础 2、Windows操作系统基础 3、面向对象程序观念的基础
VC++MFC基础教程

dcb.Parity=NOPARITY; //无奇偶校验位 dcb.StopBits=TWOSTOPBITS; //两个停止位 SetCommState(hCom,&dcb);
m_cComm.put_OutBufferSize(512); //设置输出缓冲区 m_cComm.put_Settings(TEXT("9600,n,8,1"));//波特率,无校验,个数
据位,个停止位
if(!m_cComm.get_PortOpen())
{
m_cComm.put_PortOpen(TRUE); //打开串口
B)修改控件属性
修改上面的示例编辑框属性: ID——IDC_EDIT_RECV;
Multiline——True; Want Return——True; Vertical Scroll——True; Auto VScroll——True;
修改下面的示例编辑框属性: ID——IDC_EDIT_SEND; Multiline——True; Vertical Scroll——True;
1.3、API 串口编程
按照步骤一新建 Serial 工程,这里不赘述了。
A)添加 API 串口初始化代码
1、在 SerialDlg.cpp 文件中添加全局变量:
HANDLE hCom; //全局变量,串口句柄 // CSerialDlg 对话框
2、在 SerialDlg.cpp 文件中的 OnInitDialog()函数添加如下代码:
AfxMessageBox("写串口失败!"); }
MFC基础教程

MFC基础教程MFC(Microsoft Foundation Class)是微软公司开发的一套用于Windows平台的C++库,提供了一系列的类和函数,可以帮助开发者快速构建Windows应用程序。
MFC是一种基于消息驱动的编程模型,它将用户输入、操作系统消息和应用程序功能相结合,实现了高效的界面设计和响应。
对于初学者来说,学习MFC可以帮助他们了解Windows编程的基本概念和原则,打下良好的编程基础。
下面将介绍一些适合初学者的MFC基础教程。
1.教程名称:《MFC入门教程》简介:这是一份非常适合初学者的MFC入门教程,它从最基础的概念和原理开始介绍,通过实例代码和详细的解释,帮助读者快速上手MFC编程。
这个教程包含了Windows消息处理、界面设计、控件使用和文件操作等基本内容。
2.教程名称:《MFC编程入门》简介:这个教程以实例为主,通过一系列的小项目,逐步介绍MFC编程的各个方面。
每个项目都包含了完整的源代码和详细的解释,读者可以通过跟着教程一步一步实践,掌握MFC编程的基本技巧和方法。
3.教程名称:《MFC程序设计基础》简介:这是一本经典的MFC教材,适合初学者系统地学习MFC编程。
它介绍了MFC的基本概念、类结构和消息传递机制,并通过大量的示例代码演示了MFC的各种用法和技巧。
读者可以通过阅读这本书,深入理解MFC的原理和设计思想。
4.教程名称:《MFC实战开发入门》简介:这个教程以实际项目为例,引导读者从零开始一步一步开发一个完整的MFC应用程序。
通过这个项目实战,读者可以学习到MFC的设计流程、界面布局、数据处理和文件IO等实际编程中的常用技巧。
以上是几个适合初学者的MFC基础教程,它们覆盖了MFC编程的基本概念和常用技巧,可以帮助初学者快速入门。
当然,MFC编程是一个复杂的主题,除了阅读教程,多做实际项目和练习也是提高自己的有效途径。
希望对初学者有所帮助!。
MFC编程基础

9
2 最简单的MFC应用程序
学习MFC程序的组织方式,生成一个工程。 创建工程要点
Win32 Project Empty project 在共享 DLL 中使用 MFC
10
2 最简单的MFC应用程序
学习MFC程序的组织方式,生成一个工程。 创建工程要点
Win32 Project,Empty project,在共享 DLL 中使用 MFC
2 最简单的MFC应用程序
2 最简单的MFC应用程序
13
2 最简单的MFC应用程序
WinMain()函数,由MFC库后台自动提供; CWinApp类:
对基于MFC的程序重要,其对象包括启动、初始化、运行 和关闭应用程序所需的一切代码。 需要由CWinApp派生出工程自己的应用程序类 虚函数InitInstance(),需要重写,包含创建和显示应用程序 窗口的代码,由WinMain()函数调用; 该类继承的其它成员不变。
2014-5-17
26
消息映射例 class CSketcherApp : public CWinAppEx { public: 为了使用消息映射宏,还需要在类声明 的结尾用DECLARE_MESSAGE_MAP宏, CSketcherApp(); 该宏对类实现源文件中所定义的消息映 // 重写 射进行初始化。 public: virtual BOOL InitInstance(); virtual int ExitInstance(); // 实现 UINT m_nAppLook; virtual void PreLoadState(); 用于区分消息处 virtual void LoadCustomState(); 理函数和类中 virtual void SaveCustomState();
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章基于对话框的Windows应用程序1.简介Windows编程的两种方法,即Windows API编程和MFC编程。
2.基于对话框的应用程序的创建过程:•建立基于对话框的MFC 应用程序框架;•放置控件;•设置控件属性;•为控件连接变量,即为控件命名;•添加并且编写消息处理函数。
3.常用基本控件:•静态文本框:主要用来显示文本信息,不能接受用户输入•命令按钮:是最常见的、应用最广泛的一种控件。
在程序执行期间,当单击某个命令按钮后就会执行相应的消息处理函数。
•编辑框:是一个文本编辑区域,用户可以在该区域输入、编辑和显示正文内容。
•框架:将一组相关的控件框起来,达到标识一组控件的作用。
•单选按钮:用户在一组单选按钮中最多只能选择一项。
当某一项被选定后,其他选项自动变成未选状态。
•复选框:列出了可供选择的项,用户可根据需要选择其中的一项或多项,各选项之间的状态互不相关。
•列表框:通过显示多个选项,供用户选择,达到与用户对话的目的。
•组合框:组合了编辑框和列表框的特性而形成的一种控件。
在列表框中列出可供用户选择的项,当用户选定某项后,该项内容自动装入编辑框中。
•滚动条:通常附在对话框上用来协助观察数据或确定位置,也可以用来作为数据输入的工具。
1.1 Windows编程基础Windows 应用程序的主要特点是:•具有标准的图形用户界面。
•具有与硬件无关的特性。
•采用“消息传递,事件驱动”的运行机制。
用Visual C++ 编写Windows 应用程序主要有两种方法:一是使用Windows 提供的应用程序接口(Application Programming Interface ,API )函数;二是使用Microsoft 提供的微软基础类(Microsoft Foundation Class ,MFC )。
1.1.1 Windows API编程从本质上来说,API 是Windows 系统支持的函数定义、参数定义和消息格式的集合,共有上千个标准的API 函数可供应用程序调用。
调用Windows API 函数的方法与调用C 语言库函数的方法基本相同。
下面通过一个简单的实例来说明Windows API 编程是如何调用API 函数的。
…………………………………………………………# include "windows.h"int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow){MessageBox ( NULL," 这是一个简单的Windows 应用程序!","API 函数调用示例",MB_OK );return 0;}…………………………………………………………这是一个简单的Windows 应用程序。
Windows 应用程序的主函数是WinMain() ,不是main() 函数。
函数体中调用了Windows API 函数MessageBox() ,弹出如图所示的对话框。
在直接使用API 函数进行Windows 编程时,程序员不仅需要熟记一大堆常用的API 函数,而且还要对Windows 操作系统有深入的了解,编写大量的代码。
用这种方式即使是开发一个很简单的应用程序也需要大量的工作,直接用API 函数进行编程是需要极大的耐心和丰富的编程经验的。
1.1.2 MFC编程MFC 是Visual C++ 的核心。
虽然在Windows 应用程序中可以直接调用API 函数,但是一般不经常直接调用,而是从MFC 类创建对象并调用属于这些对象的成员函数。
MFC 是Microsoft 公司提供的用来编写Windows 应用程序的C++ 类库,MFC 大约有200 多个类,可以分成两种:一是Cobject 类的派生类,它们以层次结构的形式组织起来,几乎每个子层次结构都与一个具体的Windows 实体对应;二是非Cobject 派生类,这些都是独立的类,如表示点的Cpoint 类,表示矩形的Crect 类。
在Visual C++ 中,可以创建以下3 类典型的Windows 应用程序,它们都是通过MFC AppWizard(exe) (以下简称AppWizard )向导创建的:(1)基于对话框的应用程序:这类程序适合于文档较少而交互操作较多的应用场合,如Windows 自带的计算器程序。
(2)单文档界面(SDI )应用程序:这类程序一次只能打开一个文档,如Windows 自带的Notepad 程序。
(3)多文档界面(MDI )应用程序:这类程序可以同时打开多个文档并进行处理,处理的过程中很容易地进行切换,如Microsoft Word 。
1.2 基于对话框的Windows应用程序对话框是一种特殊类型的窗口,绝大多数Windows程序都通过对话框与用户进行交互。
在Visual C++中,对话框既可以单独组成一个简单的应用程序,又可以成为文档/视图结构程序的资源。
1.2.1 简单应用程序实例创建对话框程序的步骤:(1)建立基于对话框的MFC 应用程序框架;(2)放置控件;(3)设置控件属性;(4)为控件连接变量,即为控件命名;(5)添加并且编写消息处理函数。
【例1.1】编写一个如图所示的应用程序。
若单击“复制”按钮,则把上面的编辑框中的内容复制到下面的编辑框中;若单击“结束”按钮,则退出程序的运行。
程序的创建过程:(1)建立基于对话框的MFC 应用程序框架。
①选择“文件| 新建”命令;②在“工程”选项卡中,选定“MFC AppWizard(exe) ”,输入工程名称,选择“确定”。
③选定“D 基本对话”,即创建基于对话框的应用程序,选择“完成”。
(2)放置控件•删除原有的控件。
•放置所需的控件:两个编辑框和两个命令按钮。
方法是:先单击控件工具栏上的控件图标选择所需的控件,然后在对话框设计界面上按住鼠标左键拖拉出所需要的大小后释放。
(3)设置控件属性选定控件,在其快捷菜单中选择“属性”命令,在弹出如图所示的对话框中进行设置。
上面编辑框的属性设置为:•选定“Multiline ”复选框,编辑框中可以输入多行文本。
•选定“Vertical scroll ”和“Auto Vscroll ”,编辑框将有垂直滚动条。
•选定“Want return ”。
下面编辑框属性的设置与上面编辑框基本一样,只是可以不选定“Want return ”。
从图中可以看到编辑框的ID 为IDC_EDIT1 ,这是该控件的标识。
任何一个控件都有一个ID ,某些函数需要通过ID 对控件进行操作。
(4)连接变量为控件连接变量就是为控件起一个名称。
每一个控件都是一个对象,调用MFC 类库中的函数都是通过对象来实现的。
为IDC_EDIT1 连接变量m_e1 的步骤为:①在IDC_EDIT1 编辑框的快捷菜单中选“建立类向导”,弹出“MFC ClassWiard ”对话框。
②在“Member Variables ”中,选定“IDC_EDIT1 ”,再选择“Add Variable ”命令。
③在“Add Member Variable ”对话框中输入以下的数据:Member Variable name (内存变量名):m_e1 ;Category (类别):Control ;Variable type (类型):Cedit用同样的方法再为IDC_EDIT2 连接一个变量m_e2 。
(5)添加并且编写消息处理函数。
本例要求单击“复制”按钮后上面编辑框中的内容复制到下面的编辑框中。
也就是说,在程序运行时,在“复制”按钮上发生单击事件后,Windows 向对话框发出了一个BN_CLICKED 消息,CTESTDlg 类应有一个处理该消息的函数。
添加和编写这个消息处理函数的过程是:①双击“复制”按钮,弹出的“Add Member Function ”对话框,输入函数名(缺省函数名为OnButton1 ),选择“确定”按钮后,添加了一个空函数。
另一个方法是在“MFC ClassWiard ”对话框“Message Maps ”选项卡中,选定IDC_BUTTON1 和BN_CLICKED 消息,然后选择“Add Function ”按钮即可。
添加的空函数如下:void CTESTDlg::OnButton1(){// TODO: Add your control notification handler code here}②为void CTESTDlg::OnButton1() 添加代码void CTESTDlg::OnButton1(){// TODO: Add your control notification handler code herem_e1.SetSel(0,-1); // 选定编辑框m_e1 中的所有内容m_e1.Copy(); //把编辑框m_e1 中选定的内容复制到剪贴板m_e2.SetSel(0,-1); // 选定编辑框m_e2 中的所有内容m_e2.Paste(); // 将剪贴板中内容粘贴到编辑框m_e2 中,替换所有选定的内容}用同样的方法为“结束”按钮添加、编写如下的消息处理函数:void CTESTDlg::OnButton2(){// TODO: Add your control notification handler code hereCDialog::OnOK(); // 退出对话框程序}1.2.2 对话框应用程序框架用AppWizard 创建基于对话框的应用程序框架(假定工程名为TEST )后,项目工作区上增加了一个“ResourceView ”选项卡,中间是对话框设计界面,右边是控件工具栏。
1.ResourceView在Visual C++ 中,与用户进行交互的对话框界面被认为是一种资源。
展开“Dialog ”,可以看到有一个ID 为IDD_TEST_DIALOG 的资源,对应中间的对话框设计界面。
不管在何时,只要双击对话框资源的ID ,对话框设计界面就会显示在中间。
2.ClassView在ClassView 中,如图所示,可以看到生成了3 个类:CAboutDlg 、CTESTApp 和CTESTDlg 。
(1)CAboutDlg :对应生成的版本信息对话框。
(2)CTESTDlg :对话框类,从Cdialog 继承过来的,在程序运行时看到的对话框就是它的一个具体对象。
(3)CTESTApp :应用程序类,从CWinApp 继承过来,封装了初始化、运行、终止该程序的代码。
3.对话框设计界面对话框设计界面是进行对话框设计的地方,可以将各种控件放置在这里。