常用的MFC类及其作用
mfc编程用途
mfc编程用途
MFC(Microsoft Foundation Classes)是微软公司提供的一个用于 Windows 应用程序开发的类库和框架。
它将 Windows API 进行了封装,提供了一系列的类和函数,使得开发者可以更加方便地创建 Windows 应用程序。
以下是 MFC 编程的一些常见用途:
1. 用户界面开发:MFC 提供了丰富的 UI 组件和控件,如按钮、文本框、列表框等,开发者可以利用这些组件快速构建出美观的用户界面。
2. 图形和绘图:MFC 提供了绘图和图形操作的类和函数,开发者可以使用这些功能来绘制图形、显示图像以及实现动画效果。
3. 文件和数据库操作:MFC 提供了文件操作和数据库访问的类和函数,开发者可以使用这些功能来读取、写入文件,以及连接和操作数据库。
4. 网络编程:MFC 提供了网络通信相关的类和函数,开发者可以使用这些功能来创建网络应用程序,实现客户端/服务器通信。
5. 多线程编程:MFC 支持多线程编程,开发者可以使用它来创建并发执行的线程,提高程序的性能和响应能力。
6. 串口通信:MFC 提供了串口通信的类和函数,开发者可以使用这些功能来与外部设备进行串口通信。
7. 打印和打印预览:MFC 提供了打印和打印预览的功能,开发者可以利用这些功能来设计和实现打印相关的应用程序。
8. 动态链接库(DLL)开发:MFC 可以用于创建动态链接库,这些库可以被其他应用程序调用,实现代码的重用和模块化。
总之,MFC 编程提供了一个强大的工具集,使得开发者能够更加高效地创建 Windows 应用程序,并且减少了对底层 Windows API 的直接操作,提高了开发效率和代码的可维护性。
mfc函数详解
mfc函数详解MFC(Microsoft Foundation Class)是一种面向对象的Windows应用程序框架,它是微软公司在Windows操作系统下的视窗类库,是Visual C++的一些类和函数的集合。
MFC的作用是提供一种高级的、面向对象的编程结构,让程序员更加容易地开发Windows应用程序。
下面是一些常用的MFC函数及其详解:1. AfxMessageBox函数原型:int AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0);函数作用:显示一个消息框,包含文本、标题和按钮。
参数解释:lpszText:要显示的消息文本。
nType:消息框类型,包括按钮以及图标等样式。
nIDHelp:帮助ID,用于消息框的帮助文件。
返回值:用户选择的按钮行为,如“取消”、“确定”等。
2. AfxGetMainWnd函数原型:CWnd* AfxGetMainWnd( );函数作用:获取当前线程的主窗口对象指针。
参数解释:无。
返回值:当前线程的主窗口对象指针。
3. CString.Format函数原型:int Format(LPCTSTR lpszFormat, ...);函数作用:根据格式控制符格式化字符串。
参数解释:lpszFormat:格式化字符串,格式控制符用“%”标识。
...:格式控制符中各个参数的值。
返回值:格式化后的字符串长度。
4. CListBox.SetCurSel函数原型:int SetCurSel(int nIndex);函数作用:设置列表框中当前选定项的索引。
参数解释:nIndex:要选定项的索引,从0开始。
返回值:如果设置成功,则返回新选定项的索引;否则,返回LB_ERR。
5. CEdit.SetWindowText函数原型:void SetWindowText(LPCTSTR lpszString); 函数作用:设置编辑框的文本内容。
mfc 知识点总结
mfc 知识点总结MFC库的基本组成包括以下几个部分:1. CObject类:是所有MFC类的基类,提供了对象的基本功能,包括内存管理、类型信息、对象的打印和序列化等。
2. CWnd类:是窗口类的基类,封装了Windows窗口的创建、显示、消息处理等功能。
3. CFrameWnd类:是框架窗口类,派生自CWnd类,封装了应用程序的主窗口,提供了菜单、工具栏、状态栏等UI组件。
4. CDocument类和CView类:分别是文档类和视图类,用于管理应用程序中的文档和视图。
文档类负责文档的打开、保存、关闭等操作,视图类负责文档内容的显示和交互。
5. CWinApp类:是应用程序类的基类,封装了应用程序的初始化、消息循环、资源管理等功能。
MFC库提供了丰富的类和函数,用于处理Windows应用程序的各个方面,下面将对MFC的一些重要知识点进行总结。
1. 消息处理在MFC应用程序中,窗口的消息处理是至关重要的。
MFC提供了消息映射机制来进行消息处理。
通过DECLARE_MESSAGE_MAP宏和BEGIN_MESSAGE_MAP/END_MESSAGE_MAP 宏,在类中声明消息处理函数并将消息与处理函数进行映射。
例如:```cpp// 声明消息处理函数afx_msg void OnMouseMove(UINT nFlags, CPoint point);// 映射消息到处理函数BEGIN_MESSAGE_MAP(CMyWnd, CWnd)ON_WM_MOUSEMOVE()END_MESSAGE_MAP()```2. 对话框对话框是Windows应用程序中常用的界面元素,用于与用户进行交互。
MFC提供了CDialog类和CDialogEx类来封装对话框。
开发者可以使用资源编辑器创建对话框模板,然后通过类向导生成对话框类。
对话框类中可以处理控件的事件,并通过DoModal函数或Create函数来显示对话框。
MFC类库的基本类
MFC类库是一个层次结构,主要有CObject类、应用程序类、可视对象类、绘图和打印类、通用类、数据库类、Internet和网络类、OLE类。
(1)CObject类CObject类是MFC的抽象基类,MFC中的大多数类是从CObject类派生出来的。
它是MFC 中多数类和用户自定义的根类,该类为程序员提供了希望融入所编写程序的许多公共操作,包括对象的建立和删除、串行化支持、对象诊断输出、运行时信息以及集合类的兼容等。
CObject类的声明在Afx.h中。
(2)应用程序结构类该类主要用于构造框架应用程序的结构,提供了多数应用程序公用的功能.编写程序的任务是填充框架,添加应用程序专有的功能。
1.应用程序和线程支持类CWinThread类是所有线程的基类,窗口应用程序类CWinApp类就是从该类中派生来的。
每个应用程序有且只有一个应用程序对象,在运行程序中该对象和其他对象相互协调,该对象从CWinApp中派生出来。
该类封装了初始化、运行、终止应用程序的代码。
2.命令相关类CCmdTarget类是CObject的子类,它是MFC所有具有消息映射属性的基类。
消息映射规定了当一对象接收到消息命令时,应调用哪个函数对该消息进行处理。
程序员很少需要从CCmdTarget类中直接派生出新类,往往都是从它的子类中派生出新类。
如窗口类(CWnd)、应用程序类(CWinApp)、文档模板类(CDocTemplate)、视类(CView)及框架窗口类(CFrameWnd)等。
3.文档类文档对象由文档对象模板创建,用于管理应用程序的数据。
视图对象表示一个窗口的客户区,用于显示文档数据并允许读者与之交互。
有关文档/视结构的类如下:①CDocTemplate类:文档模板的基类。
文档模板用于协调文档、视图和框架窗口的创建。
②CSingleDocTemplate类:单文档界面(SDI)的文档模板。
③CMultiDocTemplate类:多文档界面(MDI)的文档模板。
MFC使用教程范文
MFC使用教程范文MFC(Microsoft Foundation Classes)是微软公司为Windows操作系统开发的一套面向对象的应用程序框架,用于简化Windows应用程序的开发过程。
MFC提供了一系列的类和函数,开发者可以利用这些类和函数来创建、管理和控制Windows应用程序。
本文将为您介绍MFC的基本使用方法和步骤。
一、MFC的基本概念和组成MFC是建立在Windows API之上的一层封装,它提供了一系列的类和函数,开发者可以利用这些封装好的类和函数来开发Windows应用程序。
MFC的组成包括:应用程序类、窗口类、对话框类和视图类。
1.应用程序类:MFC的应用程序类是整个应用程序的入口点,它包含了应用程序的初始化和销毁过程,以及主消息循环。
2.窗口类:窗口类用于创建和管理应用程序中的窗口,包括主窗口、子窗口和对话框等。
3.对话框类:对话框类用于创建和管理应用程序中的对话框,对话框是一种特殊的窗口,用于和用户进行交互。
4.视图类:视图类用于创建和管理应用程序中的视图,视图是应用程序中显示数据的区域。
二、MFC应用程序的创建步骤下面将介绍MFC应用程序的创建步骤。
1. 打开Visual Studio IDE,并选择"创建新项目"。
2.在"创建新项目"对话框中,选择"C++"->"MFC",点击"下一步"。
3.在"应用程序信息"对话框中,填写应用程序的名称和位置等信息,点击"完成"。
4. Visual Studio将自动创建一个MFC应用程序模板,并打开主窗口的代码和界面文件。
5.在主窗口的代码文件中,可以编写处理消息和事件的代码。
6.在主窗口的界面文件中,可以通过拖拽控件来设计应用程序的界面。
7.编译并运行应用程序,查看效果。
三、MFC应用程序的消息处理MFC应用程序中的消息处理是通过重载消息处理函数来实现的。
mfc 句柄的概念
mfc 句柄的概念摘要:1.MFC 句柄的概念2.MFC 句柄的种类3.MFC 句柄的作用4.MFC 句柄的实例正文:一、MFC 句柄的概念MFC(Microsoft Foundation Class)是微软提供的一组用于开发Windows 应用程序的类库。
在MFC 中,句柄(Handle)是一个重要的概念,它是一个用于标识对象的指针。
通过句柄,我们可以访问和操作这些对象。
二、MFC 句柄的种类在MFC 中,句柄主要有以下几种类型:1.HWND:窗口句柄,用于标识一个窗口。
2.HMENU:菜单句柄,用于标识一个菜单。
3.HBRUSH:画笔句柄,用于标识一个画笔。
4.HPEN:画笔句柄,用于标识一个画笔。
5.HBITMAP:位图句柄,用于标识一个位图。
6.HICON:图标句柄,用于标识一个图标。
三、MFC 句柄的作用MFC 句柄的主要作用是方便程序员操作和控制各种对象。
通过句柄,我们可以实现以下功能:1.创建对象:使用New 操作符可以创建一个对象,并返回一个句柄。
2.访问对象:使用句柄可以访问和操作对象。
3.删除对象:使用Delete 操作符可以删除一个对象,同时句柄也会自动失效。
4.保存和恢复对象:通过对象的Serialize 和Deserialize 操作,可以将对象的状态保存到文件中,并在需要时恢复。
四、MFC 句柄的实例下面是一个简单的MFC 句柄实例,演示如何创建一个窗口并操作它:```cpp#include <afx.h>#include <iostream>int main(){// 创建一个窗口对象CWnd* pWnd = new CWnd();// 显示窗口pWnd->ShowWindow(SW_SHOW);// 获取窗口句柄HWND hWnd = pWnd->GetSafeHwnd();// 确保窗口句柄有效if (hWnd!= NULL){// 通过窗口句柄操作窗口SendMessage(hWnd, WM_CLOSE, 0, 0);}return 0;}```在这个例子中,我们创建了一个窗口对象,并通过其句柄操作窗口,最后关闭窗口。
MFC常用的类详细介绍
MFC常用的类详细介绍MFC常用的类详细介绍常用的MFC类CRuntimeClass结构在CRuntimeClass结构中定义了类名、对象所占存储空间的大小、类的版本号等成员变量及动态创建对象、派生关系判断等成员函数。
每一个从CObject类派生的类都有一个CRuntimeClass结构同它关联,以便完成在运行时得到对象的信息或基类的信息。
要使用CRuntimeClass结构,必须结合使用RUNTIME_CLASS()宏和其他有关运行时类型识别的MFC宏。
CObject类MFC的CObject类为程序员提供了对象诊断、运行时类型标识和序列化等功能。
(1)对象诊断:利用成员函数AssertValid进行对象有效性检查;利用成员函数Dump输出对象的数据成员的值,诊断信息以文本形式放入一个数据流中,用于调试器的输出窗口信息显示。
(只能用于Debug版的应用程序)(2)运行时类型识别:GetRuntimeClass根据对象的类返回一个相关联的指向CRuntimeClass结构的指针,它包含了一个类的运行信息;函数IsKindOf用于测试对象与给定类的关系。
(3)通过与Carchive相结合,CObject类为其派生类提供了序列化功能。
要创建一个支持序列化的派生类,必须将DECLARE_SERIAL宏添加到类定义中,将IMPLEMENT_SERIAL添加到类的实现文件中。
CCmdTarget类由CObject类直接派生,所有能实行消息映射MFC类的基类。
功能如下:(1)消息发送MFC应用程序为每个CCmdTarget派生类创建一个称为消息映射表的静态数据结构,可将消息映射到对象所对应的消息处理函数上。
(2)设置光标程序正在进行某种操作:BeginWaitCursor()将光标改为沙漏形状;操作完成:EndWaitCursor()将光标改回到之前的形状;处于等待状态时由于某些操作改变了光标形状后,RestoreWaitCursor()用于将光标还原为等待状态。
MFC各种控件属性介绍
MFC各种控件属性介绍MFC(Microsoft Foundation Class)是Microsoft提供的一套C++类库,用于简化Windows应用程序的开发过程。
MFC中有许多控件可以用于构建用户界面,每个控件都有自己的属性。
接下来将介绍一些常用的MFC控件及其属性。
1. Button按钮控件:3. List Box列表框控件:List Box控件用于显示一列选项供用户选择。
常用属性包括:列表框内容(List Box Content)、选择模式(Selection Mode)、默认选择项(Default Selection)等。
5. Static静态文本控件:Static控件用于显示一些静态文本信息。
常用属性包括:文本内容(Static Text)、字体属性(Font Attributes)、文本颜色(Text Color)等。
6. Check Box复选框控件:Check Box控件用于显示一个选项,用户可以选择或取消选择该选项。
常用属性包括:选项文本(Check Box Text)、选项状态(Check Box State)、选项位置(Check Box Position)等。
7. Radio Button单选按钮控件:Radio Button控件用于显示一组互斥的选项,用户只能选择其中的一个选项。
常用属性包括:选项文本(Radio Button Text)、选项状态(Radio Button State)、选项位置(Radio Button Position)等。
8. Slider滑块控件:Slider控件用于在一个范围内选择一个数值。
常用属性包括:数值范围(Value Range)、默认数值(Default Value)、滑块大小(Slider Size)等。
9. Progress Bar进度条控件:Progress Bar控件用于显示一个操作的进度。
常用属性包括:进度范围(Progress Range)、当前进度(Current Progress)、进度栏宽度(Progress Bar Width)等。
基本概念—MFC篇
基本概念——MFC篇微生物燃料电池:(Microbial Fuel Cell,MFC)是一种利用微生物将有机物中的化学能直接转化成电能的装置。
其基本工作原理是:在阳极室厌氧环境下,有机物在微生物作用下分解并释放出电子和质子,电子依靠合适的电子传递介体在生物组分和阳极之间进行有效传递,并通过外电路传递到阴极形成电流,而质子通过质子交换膜传递到阴极,氧化剂(一般为氧气)在阴极得到电子被还原与质子结合成水。
燃料电池:燃料电池(FuelCell)是一种将存在于燃料与氧化剂中的化学能直接转化为电能的发电装置。
燃料和空气分别送进燃料电池,电就被奇妙地生产出来。
它从外表上看有正负极和电解质等,像一个蓄电池,但实质上它不能“储电”而是一个“发电厂”。
电池:电池(battery)指盛有电解质溶液和金属电极以产生电流的杯、槽或其他容器或复合容器的部分空间。
随着科技的进步,电池泛指能产生电能的小型装置。
如太阳能电池。
电池的性能参数主要有电动势、容量、比能量和电阻。
燃料:能通过化学或物理反应(包含反应)释放出能量的物质。
按其形成可以分为固体燃料、液体燃料和气体燃料,还有核燃料。
氧化还原介体:能加速初级电子供体的电子向最终电子受体传递的化合物。
微生物:个体微小,结构简单,通常要用光学显微镜和电子显微镜才能看清楚的生物,统称为微生物。
微生物包括细菌、病毒、霉菌、酵母菌等。
(但有些微生物是肉眼可以看见的,像属于真菌的蘑菇、灵芝等。
)包括细菌、病毒、真菌以及一些小型的原生动物、显微藻类等在内的一大类生物群体,它个体微小,却与人类生活关系密切。
涵盖了有益有害的众多种类,广泛涉及健康、食品、医药、工农业、环保等诸多领域。
细菌:广义的细菌即为原核生物是指一大类细胞核无核膜包裹,只存在称作拟核区(nuclear region)(或拟核)的裸露DNA的原始单细胞生物,包括真细菌(eubacteria)和古生菌(archaea)两大类群。
MFC基础知识概述
MFC基础知识概述MFC(Microsoft Foundation Classes)是微软公司开发的基于C++的类库,用于Windows操作系统下的图形用户界面(GUI)应用程序开发。
MFC是Windows的主要开发框架,提供了一系列的类和函数,可以用于创建窗口、控件、对话框、菜单等。
本文将对MFC的基础知识进行概述,包括MFC的结构、类层次结构、消息和事件处理、资源管理等内容。
一、MFC的结构MFC的结构主要由四个层次构成:应用程序对象、窗口对象、视图对象和文档对象。
应用程序对象继承自CWinApp类,用于创建和初始化应用程序的整个过程。
窗口对象继承自CWnd类,用于创建和管理窗口。
视图对象继承自CView类,用于显示和处理用户界面上的一部分,通常与窗口对象对应。
文档对象继承自CDocument类,用于管理应用程序中的数据。
二、MFC的类层次结构MFC提供了众多的类和函数,可以用于创建各种窗口、控件、对话框等。
类层次结构是指这些类的继承关系。
MFC的类层次结构非常庞大,以CObject类为基类,派生出众多的中间类,再由这些中间类派生出更具体的类。
例如,CObject派生出CWnd,CWnd派生出CFrameWnd,CFrameWnd派生出CView,CView派生出CScrollView和CFormView等。
通过这种类层次结构,可以方便地创建和管理各种类型的窗口和控件。
三、消息和事件处理在MFC中,消息是用于实现窗口和控件之间通信的机制。
当用户操作窗口或控件时,会产生消息,应用程序可以通过消息处理函数来处理这些消息。
MFC提供了一些宏,如DECLARE_MESSAGE_MAP和BEGIN_MESSAGE_MAP,可以简化消息处理函数的定义和注册。
消息处理函数需要通过ON_MESSAGE或ON_COMMAND宏来注册,以告诉MFC在何时何地调用该函数。
事件是消息的一个特殊形式,一般是指用户操作控件时触发的消息。
MFC入门教程范文
MFC入门教程范文MFC(Microsoft Foundation Classes)是微软公司为Windows操作系统开发的一套C++类库,用于快速开发Windows应用程序的框架。
MFC 提供了丰富的类和函数,可以用来创建窗口、对话框、按钮等控件,并实现与用户的交互。
本文将为你介绍MFC的基本概念和一些常用的操作。
一、MFC的基本概念1. 窗口类(CWnd):MFC中的窗口类是所有控件和对话框的基类,它提供了创建和管理窗口的功能。
2. 控件类(CButton、CEdit等):MFC提供了各种控件类,用于创建和管理各种窗口控件,如按钮、文本框、列表框等。
3. 对话框类(CDialog):对话框是一种特殊的窗口,用于显示用户界面和处理用户输入。
MFC提供了对话框类,用于创建和管理对话框。
4. 消息映射(Message Map):MFC中的消息映射是一种将窗口消息与相应函数关联起来的机制。
通过消息映射,可以方便地处理各种用户输入事件,比如鼠标点击、键盘按键等。
二、MFC的基本操作1. 创建一个MFC应用程序:打开Visual Studio,选择"创建新项目",在向导中选择"MFC应用程序",填写项目名称和保存路径,点击"确定"完成创建。
在进行项目设置时,可以选择要使用的MFC版本和应用程序类型。
2. 创建窗口:在MFC应用程序中,可以使用CWnd类的Create函数来创建一个窗口。
首先定义一个CWnd对象,调用Create函数指定窗口样式、位置和大小等参数,最后调用ShowWindow函数显示窗口。
3. 创建控件:在MFC应用程序中,可以使用各种控件类来创建窗口控件。
首先定义一个控件类对象,调用Create函数指定控件样式、位置和大小等参数,最后调用ShowWindow函数显示控件。
4.处理消息:在MFC应用程序中,可以通过重写消息处理函数来处理各种用户输入事件。
MFC框架的介绍与应用
MFC框架的介绍与应用MFC(Microsoft Foundation Class)是一种基于C++的编程框架,用于开发Windows应用程序。
该框架是微软推出的一种基于消息机制的图形用户界面(GUI)框架,旨在简化Windows应用程序开发的复杂度。
下面将介绍MFC框架的基本组成和应用。
一、MFC框架的基本组成MFC框架由多个类库组成,包括应用框架、控件库、GDI(图形设备接口)和基础设施库等。
其中,应用框架是构成整个应用程序的基础,控件库提供了大量可视化元素,GDI和基础设施库则为开发人员提供了强大的图形处理能力。
1. 应用框架应用框架是MFC框架的核心,包括了窗口管理、消息处理、应用程序生命周期等一系列功能。
在应用程序开发过程中,开发人员需要继承CWinApp类,该类提供了应用程序的生命周期管理、初始化、清理等操作,使应用程序能够顺利运行。
2. 控件库控件库是MFC框架中最为重要的组件之一,提供了丰富的可视化元素,如按钮、文本框、标签等等。
开发人员可以在应用程序中使用这些控件,实现丰富的用户界面交互。
同时,控件库还提供了许多高级控件,例如Tree Control、List Control等,支持各种不同的交互方式,大大增强了用户的操作体验。
3. GDIGDI是图形设备接口,是MFC框架中最为重要的图形处理组件。
它提供了许多图形操作API,支持诸如绘制、渲染等操作,还支持丰富的图像格式转换、裁剪等操作。
开发人员可以使用GDI轻松操作图形,实现各种复杂的图形效果。
4. 基础设施库基础设施库是MFC框架中提供的帮助开发人员快速开发业务处理的组件,例如数据库操作、网络通信、多线程编程等。
它提供了各种常用的工具类和函数,帮助开发人员编写高效、易维护的代码。
二、MFC框架的应用MFC框架的应用范围广泛,可以用于开发许多不同类型的软件,例如桌面应用程序、图形处理软件、嵌入式软件等。
下面将以桌面应用程序为例,介绍MFC框架的应用实例。
MFC各种控件属性介绍
MFC各种控件属性介绍MFC(Microsoft Foundation Classes)是一组用于开发Windows应用程序的C++类库。
它提供了许多用于创建GUI(Graphical User Interface)界面的控件,这些控件可以用于显示和操作数据。
下面是对一些常见的MFC控件属性的介绍:1. Button(按钮)控件:Button控件用于触发事件或执行一些操作。
它有几个常用的属性,如按钮文本(Caption),按钮样式(Style),按钮位置(Position)等。
样式属性可以设置按钮的外观(如3D效果、边框等),并可以选择不同的按钮类型(如radio、checkbox等)。
3. List Box(列表框)控件:List Box控件用于显示一系列列表项。
它有属性用于设置列表框的大小(Size),位置(Position),以及显示模式(SelectionMode)等。
其他属性还包括排序(Sort),可见项数(VisibleItems)以及是否多选(Multiselect)等。
5. Check Box(复选框)控件:Check Box控件用于允许用户选择一个或多个选项。
它有属性用于设置复选框的大小(Size),位置(Position),选择状态(Checked),以及显示文字(Caption)等。
6. Radio Button(单选按钮)控件:Radio Button控件用于只允许用户从一组选项中选择一个。
它有属性用于设置单选按钮的大小(Size),位置(Position),选择状态(Checked),以及显示文字(Caption)等。
一组互斥的单选按钮应该放在同一个命名容器内。
7. Slider(滑动条)控件:Slider控件用于接受用户通过滑动操作选择一个数值。
它有属性用于设置滑动条的大小(Size),位置(Position),范围(Range),以及当前值(Value)等。
其他属性还包括方向(Orientation)和是否显示刻度线(TickMarks)等。
mfc类库结构
mfc类库结构
MFC(Microsoft Foundation Class Library)类库是微软提供的一套用于开发Windows应用程序的C++类库。
MFC类库结构主要分为以下几个部分:
1. 应用程序结构类:这部分类主要负责应用程序的基本元素,包括CWinThread类、CWinApp类、Cdocument类以及CdocTemplate类等。
其中,CCmdTarget类是MFC类库中消息映射体系的基类,负责把消息命令传递给用户编写的消息响应函数。
2. 窗口支持类:这部分类主要负责应用程序窗口的支持,包括窗口创建、销毁、更新等操作。
3. 对话框类:这部分类主要负责应用程序中对话框的创建、显示和交互。
4. 图形设备类:这部分类主要负责图形输出设备的操作,包括设备环境类和绘图对象类等。
其中,CDC类是所有设备环境的基类,封装了所有图形输
出函数,而CClientDC类主要提供了对窗口的客户区域的图形操作。
5. 文档模板类:这部分类主要负责应用程序中文档的创建、打开、保存等操作。
6. 简单数据类型类:这部分类主要提供了常用数据类型的封装,例如CString类、CArray类等。
7. 全局AFX函数:这部分是一些全局函数,用于提供一些常用的功能,例如字符串操作、文件操作等。
以上是MFC类库结构的主要部分,通过这些类和函数的组合使用,可以方便地开发出各种Windows应用程序。
MFC的基本组成及程序模式类型
MFC的基本组成及程序模式类型MFC(Microsoft Foundation Class)是一种用于开发Microsoft Windows平台应用程序的编程框架,它提供了一套可重用的类库,使开发人员可以更轻松地创建Windows应用程序。
1. 控件(Controls):MFC提供了很多常用的控件,如按钮、文本框、列表框、组合框等,开发人员可以直接使用这些控件来构建用户界面。
2. 对话框(Dialogs):MFC支持对话框的创建和管理,开发人员可以通过对话框来实现复杂的用户交互。
3. 文档视图架构(Document-View Architecture):MFC提供了文档视图架构,使开发人员可以更方便地实现文档和视图的交互,以及与用户的交互。
4. 消息映射(Message Mapping):MFC通过消息映射机制来处理事件,开发人员可以通过添加消息映射函数来响应用户的输入或其他事件。
5. 消息循环(Message Loop):MFC提供了消息循环机制,用于处理窗口消息,并将其传递给适当的窗口进行处理。
6. 应用程序类(Application Class):MFC的应用程序类是一个派生自CWinApp的类,它提供了应用程序的初始化和运行控制。
MFC的程序模式类型主要有以下几种:1. 单文档(SDI,Single Document Interface)模式:在单文档模式下,应用程序只能打开一个文档,并在主窗口中显示该文档。
用户可以通过菜单或工具栏命令来操作文档。
2. 多文档(MDI,Multiple Document Interface)模式:在多文档模式下,应用程序可以同时打开多个文档,并在子窗口中显示这些文档。
用户可以通过菜单或工具栏命令在不同的子窗口之间切换。
3. 对话框(Dialog)模式:在对话框模式下,应用程序的主窗口是一个对话框。
用户可以通过对话框上的控件进行操作,以实现与应用程序的交互。
MFC各类库详解
1.MFC概述1.MFC是一个编程框架MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。
因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。
Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。
1.封装构成MFC框架的是MFC类库。
MFC类库是C++类库。
这些类或者封装了Win32应用程序编程接口,或者封装了应用程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO数据访问的功能,等等,分述如下。
(1)对Win32应用程序编程接口的封装用一个C++ Object来包装一个Windows Object。
例如:class CWnd是一个C++ window object,它把Windows window(HWND)和Windows window有关的API函数封装在C++ window object的成员函数内,后者的成员变量m_hWnd就是前者的窗口句柄。
(2)对应用程序概念的封装使用SDK编写Windows应用程序时,总要定义窗口过程,登记Windows Class,创建窗口,等等。
MFC把许多类似的处理封装起来,替程序员完成这些工作。
另外,MFC提出了以文档-视图为中心的编程模式,MFC类库封装了对它的支持。
文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数据。
(3)对COM/OLE特性的封装OLE建立在COM模型之上,由于支持OLE的应用程序必须实现一系列的接口(Interface),因而相当繁琐。
MFC常用类介绍
MFC常用类介绍(一)C++学习2010-06-27 11:43:05 阅读332 评论0 字号:大中小订阅◆CStaticCObject└CCmdTarget└CWnd└CStaticCStatic类提供了一个Windows静态控件的性能。
一个静态控件用来显示一个文本字符串,框,矩形,图标,光标,位图,或增强的图元文件。
它可以被用来作为标签,框,或用来分隔其它的控件。
一个静态控件不接收输入,也不提供输出;但是,如果它是用SS_NOTIFY风格创建的,则它可以通知其父有关设备点击的消息。
创建一个静态控件分两步。
首先,调用构造函数来构造此CStatic对象,然后调用Create成员函数来创建此静态控件并将它与该CStatic对象连接。
如果你是在一个对话框中创建了一个静态控件(通过一个对话框资源),则当用户关闭这个对话框时,此CStatic对象被自动销毁。
如果你是在一个窗口中创建了一个CStatic对象,则必须由你来销毁它。
在一个窗口的堆栈中创建的CStatic对象将自动被销毁。
如果你是使用new函数在堆中创建CStatic对象,则当你使用完后,必须调用delete来销毁这个CStatic 对象。
#include<afxwin.h>请参阅:CWnd,CButton,CComboBox,CEdit,CListBox,CScrollBar,CDialogCStatic类成员构造初始化操作符◆CEditCObject└CCmdTarget└CWnd└CEditCEdit类提供了Windows编辑控件中的功能。
编辑控件是一个子窗口矩形,用户可以向其中输入文本。
可以通过对话模板或直接从代码中创建一个编辑控件。
在两种情形下,首先调用CEdit构造程序构造CEdit 对象,再调用Create成员函数创建Windows编辑控件并将其与CEdit对象连接。
构造在CEdit的派生类中可以单步实现。
为派生类编写构造程序并从构造程序中调用Create。
MFC基本介绍
MFC基本介绍MFC的类层次结构:如上图所⽰:CObject:是MFC提供的绝⼤多数类的基类。
该类完成动态空间的分配与回收,⽀持⼀般的诊断、出错信息处理和⽂档序列化等。
CCmdTarget:主要负责将系统事件(消息)和窗⼝事件(消息),发送给响应这些事件的对象,完成消息发送、等待和派遣调度等⼯作,实现应⽤程序的对象之间协调运⾏。
CWinApp:是应⽤程序的主线程类,它是从CWinThread类派⽣⽽来的。
CWinThread类⽤来完成对线程的控制,包括线程的创建、运⾏、终⽌和挂起等。
CDocument:是⽂档类,包含了应⽤程序运⾏期间所⽤到的数据。
CWnd:是⼀个通⽤的窗⼝类,⽤来提供Windows中的所有通⽤特性、对话框和控件。
⼀个MFC程序,必须包含⼀个派⽣⾃CWinApp的线程类,即C*App类,每⼀个MFC框架程序中都有且只有⼀个C*App的全局变量(对象)即theApp。
MFC正是利⽤类的这种"⾃动调⽤相应的构造函数"特性,使得WinMain()函数的调⽤变成了应⽤程序框架内部的调⽤,所以我们在代码中看不到每个Windows程序所必须有的WinMain()函数。
C++规定,全局对象的构建将⽐程序进⼊点(在dos环境下为main,在Windows环境为WinMain)更早。
所以theApp的构造函数将更早与main。
C++中⼦类的构造函数执⾏在⽗类之后。
系统执⾏theApp的够造函数时,先调⽤基类(CObject-->....CWinApp)的构造函数,进⾏⼀系列的内部初始化操作,然后⾃动调⽤C*App的虚函数InitInstance(),该函数会进⼀步调⽤相应的函数来完成主窗⼝的构造和显⽰⼯作。
下⾯来看看上述程序中InitInstance的执⾏过程。
⾸先执⾏的是:m_pMainWnd = new CMainFrame;该语句⽤来创建从CFrameWnd类派⽣⽽来的⽤户框架窗⼝CMainFrame类对象,继⽽调⽤该类的构造函数,使得Create函数被调⽤,完成了窗⼝创建⼯作。
MFC中五个初始类的作用
MFC中五个初始类的作用一个最基本的单文档视图的MFC程序,包含CxxApp、CxxDoc、CMainFrame、CxxView和CAboutDlg五个类。
它们在程序开始运行时被创建的顺序是:CxxApp 、CxxDoc 、CMainFrame 、CxxView 、CAboutDlg。
C**App()定义了窗体加载之前需要做的预处理。
比如一个加密的软件,打开后提示用户输入密码。
这个事件的处理程序就要写在C**App()的InitInstance(中。
CMainFrame()包含了对工具栏、状态栏、窗口的定义。
C**View包含了最主要的处理功能,如菜单操作、快捷键、用户交互操作等。
CAboutDlg定义了ABOUT对话框。
其中,前四个都是在程序主窗口出现之前被创建的,CAboutDlg 是在“关于”对话框弹出时被创建的1CAboutDlg//这个是关于对话框里面是构造和析构2CMainFrame //主框架`是在窗口生成之前准备工作全在这吗?3CTestApp//这个是什么`initlnstance()在这里也是初始化什么对象? 4CTestDoc//这是文档`是管理哪些文档`对初学者来说很少用呐 ?5CTestView视图`这个常用 OnDraw我了解一些`我想知道`是不是默认就调用一次? 还有个问题啊`我想加个音乐`虽然加成功了`但是`我一直不明白加在哪个函数里`运行就有音乐?看过孙鑫的教程后来忘了`各位高手各抒已见,互相学习LZ需要系统地学习一下。
CTestApp是基于WinApp的,WinApp封装了程序的主入口WinMain,WinMain就和c语言的main函数地位一样,是Win32程序的入口。
在MFC的封装中,一个程序启动,Windows调用WinMain,这个WinMain函数现在由MFC事先写好藏好了,你不能也不需要修改,在这个预定义的WinMain里面会调用CWinApp的InitInstrance函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用的MFC类及其作用
分类:MFC基础类专区2008-10-14 11:16 445人阅读评论(1) 收藏举报
1.CRuntimeClass结构
继承自CObject的类都有一个与它相关的CRuntimeClass结构,用来在运行时获得对象以及其基类的信息。
要使用CRuntimeClass结构,必需借助于RUNTIME_CLASS()宏和其他有关运行时类型识别的宏。
2.CObject
CObject类的作用:
a.对象诊断:MFC提供了两种对象的诊断机制,一种是利用成员含数AssertValid 进行对象有效性检查,这样可以使类在继续运行以前对自已进行正确性检查。
另一种是利用成员含数Dump输出对象的数据成员的值,诊断信息以文本形式放入一个数据流中,用于调试器的输出窗口信息显示。
这两种诊断只能用于Debug版的应用程序。
b.CObject类提供了GetRuntimeClass与IsKindOf两个成员含数来支持运行时类型识别。
GetRunntimeClass根据对象的类返回一个CRuntimeClass结构的指针,它包含了一个类的运行信息,含数IsKindOf用于测试对象与给定类的关系。
c.提供对象的序列化。
必须在类的定义中包含DECLARE_SERIAL宏,并且在类的实现文件中加入包含IMPLEMENT_SERIAL宏.
mdTarget 该类直接从CObject类派生而来.
它负责将消息发送到能够响应这些消息的对象。
它是所有能实行消息映射MFC类的基类,如CWinThread,CWinApp,CWnd,CView,CDocument等类。
CCmdTarget 类的主要功能包括消息发送,设置光标和支持自动化.
a.消息发送:MFC应用程序为每个CCmdTarget派生类创建一个称为<消息映射表>的<静态数据结构>,该消息映射结构将消息映射到对象所对应的消息处理含数
上。
b.设置光标:CCmdTarget类定义了3个成员含数用于设置光标,成员含数BeginWaitCursor()将光标改为沙漏形状,提示程序正在进行某种操作。
当操作完成时,含数EndWaitCursor()用于将光标改回到 BeginWaitCursor()之前的形状。
当处于等待状态时由于某些外部操作改变了光标形状后,含数 RestoreWaitCursor()用于将光标还原为等待状态。
c.支持自动化:CCmdTarget类支持程序通过COM接口进行交互操作,自动翻译COM接口的方法。
它支持自动化的方法是调用
EnableAutomation(),FromIDispatch(),GetIDispatch(),IsResultExpected()
和OnFinalRelease().
4.CWinThread
CWinThread类由CCmdTarget派生而来,它的主要工作是<创建和处理消息循环>。
该类除了创建和处理消息循环还可以用来创建多线程。
5.CWinApp
CWinApp从CWinThread类派生而来.
CWinApp取代了WinMain主含数在SDK应用程序中的地位。
传统SDK应用程序WinMain含数完成的工作由CWinApp的InitApplication(),InitInstance(),和Run()三个成员含数完成。
在任何一个MFC应用程序中,此有且仅有一个CWinApp派生类对象,它代表了程序运行的<主线程>,也代表了应用程序本身。
在MFC中提供了4个含数来处理CWinApp对象,这些含数的返回值会使读者想起Windows的API编程。
AfxGetInstanceHandle()为程序提供了类似于HINSTANCE的处理。
AfxGetResourceHandle()的返回值也是HINSTANCE,它也可能被转化为HMODULE类型,以便在某些含数中使用
AfxGetAppName()会返回一个字符串指针,在调用API的CreateWindow()含数时,该字符串是作为szTitle参数而使用的。
AfxGetApp()会返回一个指向应用程序类实例的指针,从而在程序的任何地方都可
以访问到应用程序的公共成员
AfxGetMainWnd()返回CWnd指针
AfxGetThread()用于获得CWinThread对象指针
6.CWnd类
CWnd类由CCmdTarget类直接派生而来,CWnd类是MFC中最基本的GUI对象,也是功能最完善,成员含数最多的MFC类。
在CWnd类中,包含一个m_hWnd,该变量用于存放供API含数调用的窗口句柄。
用CDialog类所创建的对话框和在Windows中常用的对话框都是CWnd的子孙,并且通用控件和在应用程序中所创建的视图(不论是否支持文档/视图结构)也都是CWnd的子孙
通常那些不在MFC中的API含数在CWnd成员含数中都能够找到。
CWnd最大的不同是不需要程序员在调用中指定HWND,CWnd的成员含数将负责完成这项工作。
CWnd对象中包含指向窗口的句柄m_hWnd,因此可以像在一个非MFC操作中使用HWND一样用该参数调用API含数.
7.CFrameWnd类
CFrameWnd类直接由CWnd类派生而来。
CFrameWnd主要用来掌管一个窗口,可以认为它取代了SDK应用程序中窗口含数WndProc()的地位。
CFrameWnd类的对象是一个框架窗口,包括边界,标题栏,菜单,最大化,最小化按钮和一个激活的视图。
该对象会截取窗口消息并发送给子窗口和控件,它利用空闲时间使菜单命令和工句栏中的控件变亮或变灰(不可用)。
一个CFrameWnd对象当然也会<跟踪>一个文档的当前活动视图,并且注意变了焦点的窗口。
事实上,不管是SDI还是MDI,用文档/视图结构所创建的应用程序都有一个继承CFrameWnd的对象.
CFrameWnd提供了若干个成员含数用于获得和设置活动文档,视图,图文框,标题栏等
GetActiveDocument() 得到当前活动文档的指针
GetActiveView() 得到当前活动视图的指针
SetActiveView() 激活一个视图
GetTitle() 得到框架窗口的标题
SetTitle() 设置框架窗口的标题
SetMessageText() 设置状态栏文本
8.CDocument和CView类
CDocument类从CCmdTarget派生而来,CView从CWnd派生而来。
CDocument类在应用程序中作为用户文档的基类,代表了用户存储或打开一个文件。
它主要的功能是把对数据的处理从对用户的界面处理中分离出来,同时提供了一个与视图类交互的接口。
CDocument支持标准的文件操作,如创建,打开,和存储一个文档等。
一个应用程序可以支持多种类型的文档,每种类型的文档都利用一个文档模板对象建立与各自视图的联系。
其常用成员含数如下
OnNewDocument:建立新文档
OnOpenDocument:打开一个文档
OnCloseDocument:关闭文档
OnSaveDocument:保存文档
UpdateAllView():通知所有视图文档被修改
SaveModified():设置文档修改标志
CView类是MFC视图类和用户视图类的基类。
文档为视图提供了数据,当一个文档中的数据改变时,将通过调用视图的成员含数OnUpdate()更新视图。
也可以通过CWnd::Invalidate()或CWnd::InvalidateRect()刷新视图。
MFC视图类及其作用如下。
MFC视图类描述
CView 通常的视图类,可以用作图像编辑或者可以和一个控件相连。
它是MFC中所有视图类的基类。
CCtrlView 另一个常用的视图类,可以用作从一个虚拟控件创建一个视图。
它派生于CView
CEditView 往视图中加入一个CEdit控件,并提供了基本的文本编辑支持,具
有打印支持功能
CRichEditView 在视图中封装一个RichEdit控件,该视图可以用作显示不同色彩,字体,大小的文本,同时也可以显示图像对象。
需要复合文本(OLE)支持CListView 在窗口中提供一列表控件功能,列表控件本身也可以提供几个视图,比如报表,列表,大图标,小图标。
在window资源管理器中,该视图用在窗口右侧
CPreviewView 非文档视图,可作为打印预览。
和非文档设备上下文CPreviewDC协同工作。
CPreviewDC包含两个设备上下文:一个是打印机的,一个是屏幕的
CTreeView 在视图中封装了一个树型控件。
在Windows资源管理器中,该视图用在窗口的左侧
CScrollView 直接派生于CView的常用视图,它通过控件视图和映射模式控制窗口显示,并响应滚动条的消息而自动滚动
CFormView 结合了一个对话框模板,并可以在视图中放置控件。
它派生于CscrollView,并支持与视图/映射控件相同的特征。
CHtmlView 这是视图控件中的WWW浏览器。
该视图提供了一个可供用户在其中浏览Web和本地机器上目录的窗口,它支持超链接和导航功能,并保持历史记录。