mfc基础

合集下载

第6章 MFC基础

第6章  MFC基础
-4-
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();

MFC编程基础教程

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.对话框控件的操作:对话框中的控件可以像其他控件一样进行操作。

mfc基本程序

mfc基本程序

mfc基本程序
MFC(Microsoft Foundation Class)是微软基础类库,是微软公司实现的一个c++类库,主要封装了大部分Windows API函数。

下面是MFC基本程序的步骤:
1. 添加相应的头文件和库文件:在使用API时,需要添加相应的头文件和库文件,例如PlaySound需要头文件mmsystem.h和库文件WINMM.LIB的支持。

2. 设计窗口类:定义一个从CWnd 类继承而来的派生类,负责处理用户交互和绘图等操作。

3. 注册窗口类:使用AfxRegisterClass 函数将窗口类注册到 Windows 系统中。

4. 创建窗口对象:使用CreateWindow 函数创建一个窗口对象,并将其显示在屏幕上。

5. 循环取消息:通过消息循环从Windows 系统接收消息,并将其发送给窗口对象进行处理。

6. 处理消息:在窗口对象的处理函数中,根据接收到的消息类型进行相应的处理。

请注意,上述步骤仅为MFC基本程序的一般性指导,具体的程序编写可能因项目需求和个人喜好而有所不同。

如果你需要更详细的信息或有特定的问题,请提供更多细节以便获得更准确的回复。

VC++MFC基础教程

VC++MFC基础教程
DCB dcb; GetCommState(hCom,&dcb); dcb.BaudRate=9600; //波特率为 dcb.ByteSize=8; //每个字节有位
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基础教程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编程基础

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();

mfc对话框基础要点

mfc对话框基础要点

第五章对话框对话框是一种用户界面,它的主要功能是输出信息和接收用户的输入。

对话框与控件是密不可分的,在每个对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互。

一个典型的对话框例子是选择了File-Open命令后弹出的文件对话框。

5.1对话框和控件的基本概念5.1.1对话框的基本概念对话框(Dialog)实际上是一个窗口。

在MFC中,对话框的功能被封装在了CDialog类中,CDialog类是CWnd类的派生类。

对话框分为模态对话框和非模态对话框两种。

大部分读者都会有这样的经历,当你通过File-Open命令打开一个文件对话框后,再用鼠标去选择菜单将只会发出嘟嘟声,这是因为文件对话框是一个模态对话框。

模态对话框垄断了用户的输入,当一个模态对话框打开时,用户只能与该对话框进行交互,而其它用户界面对象收不到输入信息。

我们平时所遇到的大部分对话框都是模态对话框。

非模态对话框的典型例子是Windows95提供的写字板程序中的搜索对话框,搜索对话框不垄断用户的输入,打开搜索对话框后,仍可与其它用户界面对象进行交互,用户可以一边搜索,一边修改文章,这样就大大方便了使用。

本节主要介绍模态对话框,在第四节将介绍非模态对话框。

从MFC编程的角度来看,一个对话框由两部分组成:1.对话框模板资源。

对话框模板用于指定对话框的控件及其分布,Windows根据对话框模板来创建并显示对话框。

2.对话框类。

对话框类用来实现对话框的功能,由于对话框行使的功能各不相同,因此一般需要从CDialog类派生一个新类,以完成特定的功能。

5.1.2控件的基本概念图5.1对话框中的控件控件(Control)是独立的小部件,在对话框与用户的交互过程中,控件担任着主要角色。

控件的种类较多,图5.1显示了对话框中的一些基本的控件。

MFC的控件类封装了控件的功能,表5.1介绍了一些常用的控件及其对应的控件类。

表5.1控件实际上都是窗口,所有的控件类都是CWnd类的派生类。

VC MFC基础入门PPT课件

VC MFC基础入门PPT课件
COLORREF m_nColors[3]; //用户可选颜色数组 DWORD m_nColorIndex; // 当前所选颜色索引 CString m_strShow; // 显示的内容 BOOL m_bShow; // 是否显示
7
在CMy_ResView::CMy_ResView()中初始化成员变量: m_nColors[0] = RGB(255,0,0); m_nColors[1] = RGB(0,255,0); m_nColors[2] = RGB(0,0,255); m_nColorIndex = 0; m_strShow = "Hello World!"; m_bShow = TRUE;
10
在My_ResView.cpp文件中,读者会看到ID_OPER_SHOW
对应的COMMAND消息的绑定,代码如下 :
BEGIN_MESSAGE_MAP(CMy_ResView, CView)
//{{AFX_MSG_MAP(CMy_ResView)
ON_COMMAND(ID_OPER_SHOW, OnOperShow)
void CMy_ResView::OnOperShow()
{m_bShow = !m_bShow;
Invalidate(); // 强制程序重新窗口
}
重新编译运行程 序,可看到“显 示”菜单项工作
正常
11
(2) UPDATE_COMMAND_UI消息的响应
UPDATE_COMMAND_UI消息是在窗口将要绘制菜单项的时
第10章 在MFC中创建应 用程序的资源
1
10.1 VC++程序中的资源
资源
位图 光标
对话框
字符串
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CMDIChildWnd
CView
MFC类库分类
应用程序类 文档类和文档模板类 窗口类 图形和打印类 集合类 文件和数据库类 OLE支持类 Internet和网络类 调试和异常类 各种辅助类
应用程序类 CWinApp
CWinApp提供了Windows应用程序的管理功能,包括对 属于本应用的各个窗口的管理以及实现消息循环。 每个应用只能有一个CWinApp或其派生类的对象,在应 用运行中这个对象协调其他对象的动作。 CWinApp封装了基于MFC的windows应用的初始化、运行 和终止等功能。
单文档 多文档 对话框
单文档用户界面
单文档用户界面
只能对一个文档的数据进行操作的应用程序而设计 的。 在这样的应用程序中,必须先结束当前文档的操 作,才能切换到下一个文档。 例如:记事本程序
多文档用户界面
多文档用户界面
可以同时对多个文档的数据进行操作的应用程序而 设计的。 不同文档的操作在不同的子窗口中进行。 不需要结束某个文档的操作就能在文档之间进行切 换。 例如:IE,office
在创建新文档或视图时协调文档、视图和框架窗口 对象的创建
CDocTemplate用于支持“文档-视”结构
用于创建由三个对象(CFrameWnd,CView, CDocument)所构成的对象组
窗口类
窗口类(Windows Class)包括
框架窗口类(Frame Windows) 对话框类(Dialog Boxes) 视图类(Views) 控件类(Controls) 控件条(Control Bars) 分割窗口支持类(CSplitterWnd) 属性簿(Property Sheets) 菜单类(Menus)
ScrollView(带滚动功能的视) CEditView(带编辑功能的视) CFormView(带表格功能), CHtmlView (带Web浏览功能)
对话框类
通用对话框类
CFileDialog类:打开文件(File Open)和另存为 (Save As),封装了打开和保存文件的功能。 CFontDialog类:字体选择对话框; CColorDialog类:颜色选择对话框; CPrintDialog类:打印及打印设置对话框;
窗口支持类 CWnd
MFC定义了窗口支持类CWnd来支持窗口类。 CWnd作为所有窗口类的基类,包含了大量的成 员函数,为窗口类提供基本操作。包括以下功 能
一般的消息处理 键盘和鼠标消息处理 创建初始化窗口、管理窗口的尺寸位置、管理窗口 的滚动等 菜单管理 窗口状态和窗口间的关系管理等
框架窗口类
常用输出类
CDC类:
输出类的基类,用来支持屏幕或打印机所有的图形输出和状 态处理。
CPaintDC类:
支持CWnd成员函数OnPaint使用的设备描述表,只能响应 WN_PAINT消息。
CClientDC类:
支持在窗口客户区使用的设备描述表。如:响应鼠标事件等。
图形工具类
CBrush类封装了图形设备界面(GDI)刷子,可 被选为当前刷用来填充所画对象的内部区域。 CPen类封装了图形设备界面(GDI)笔,可被选 为当前笔画对象的边界。
用户通过框架窗口类与windows进行交互。 框架窗口通常包含其他窗口,如:视图、工具 栏、状态栏等等。 常用框架窗口类:
CFrameWnd、CMDIFrameWnd、CMDIChildWnd
CMDIFrameWnd
CMDIChildWnd
CView
CFrameWnd
提供了框架窗口的基本功能,包括对工具条的 管理以及对“视”的管理等。 创建框架窗口类的对象后,调用成员函数 Create或LoadFrame来创建窗口。
属性簿支持类
CPropertyPage类:属性簿的页
控件类
控件类封装了通用的windows可视控件; MFC还提供了一些新控件,如控制栏;这些新 的控件类的名字以“Ctrl”结尾;
常用控件类
CStatic:静态文本控件
成员函数SetWindowText改变显示的文本;
CEdit:编辑控件
单行或多行编辑控件,支持剪切、粘贴、文本选择等操作。
MFC类库
MFC是微软提供的支持windows应用程序开发的一个类库。库中大 部分类用于实现面向对象的方式进行windows应用程序的开发。 封装了windows应用程序中的一些基本元素(如窗口)的基本功能。 提供一种基于“文档-视”结构的面向对象的应用程序框架。 MFC6.0提供了200多个类,初学者很难弄清这些类之间的复杂关系。 初学者应该首先初步了解MFC类库的层级结构。 熟悉常用类的功能。
在这种结构中,程序所处理的数据保存在“文档”对 象中,数据的显示以及与用户的交互功能则由“视” 对象来完成,一个“文档”对象可以对应多个“视”对象 使得数据的内部存储形式和数据的外部表示形式相 互独立,对同一个文档数据可以用不同的方式进行 显示和操作。
文档模板类 CDocTemplate
文档模板类(Document Template Class)将文 档、视图以及框架窗口相互联系起来。
文件输入输出类
文件输入输出类为传统的磁盘文件提供界面。 所有的CFile类派生类都可被CArchive类使用 进行串行化。 CFile类封装了二进制文件的数据及操作。
简单应用示范
1.创建一个单文档应用程序Hello World 2.用MFC的向导创建一个多文档应用程序
小结
Windows应用程序的基本结构
创建应用的主窗口:
根据相应的窗口类创建并显示程序的主窗口,其他窗口在需要 时创建。
进入消息循环:
实现不断的从消息队列中取消息,发现发送到相应的窗口(调 用相应的窗口消息处理函数)
窗口消息处理函数
负责处理发送到相应窗口的消息,典型框架为 LRESULT CALLBACK WindowProc ( HWND hWnd, //窗口标识 UINT message, //消息标识 WPARAM wParam, //消息的参数1 LPARAM lParam //消息的参数2 ) { switch(message) { case WM_CHAR: //字符键消息 … case WM_COMMAND: //菜单消息 … case WM_PAINT: //窗口刷新消息 … case WM_DESTROY: //窗口关闭消息 PostQuitMessage(0); break; default: //系统默认消息处理 return DefWindowProc(hWnd,message,wParam,lParam); } return 0; }
Create函数的参数:类注册名、窗口名、风格、位 置、尺寸等等。 LoadFrame需要的参数少,因为它可以从资源获得默 认值,这些资源的ID号要一样,如:IDR_MAINFRAME
CMDIFrameWnd 多文档主框架窗口类
多文档应用中的主窗口 具有管理子窗口的功能
CMDIChildWnd 多文档子框架窗口类
CButton:按钮控件
命令按钮、复选框、单选按钮
CListBox:列表控件
用户从列表框中选择一个选项;
CComboBox:组合框控件
将编辑框(CEdit)和列表框(CListBox)组合起来。
图形类和打印类
在Windows环境下,所有图形输出都是在设备 描述表(Device Context)上进行的。 图形和打印类封装了设备描述表和绘图工具。
注册应用的窗口类,然后创建显示主框架窗口,之后向应用 的消息处理函数发送消息。
文档类 CDocument
文档类(Document Classes)封装了应用的数据 管理,文档类对象有文档模板创建。 CDocument用于存储和管理程序中的数据 与CView类一起构成“文档-视”软件体系结构 “文档-视”软件体系结构的好处?
MFC编程基础
Windows应用程序的基本结构
Microsoft Windows是一种基于图形用户界面 的多任务操作系统,系统中可以同时运行多个 应用程序。 每个Windows应用程序通过各自的“窗口”与用 户进行交互。
应用程序的用户界面
Windows应用程序的用户界面是通过多窗口形 式来实现的,它可分为:
实现子窗口的基本功能
视图类CViΒιβλιοθήκη w一类特殊的窗口 位于单文档应用主窗口和多文档应用子窗口的 客户区(可显示区)。 CView类管理着框架窗口的客户区; 为用户与windows之间提供可视接口; 该类接受键盘、鼠标的输入,还允许用户对数 据预览和打印; 视图一般通过文档模板与文档关联; 提供了一些派生类,以方便数据的显示。如
Windows应用程序的基本框架
主函数 WinMain 窗口消息处理函数
主函数 WinMain
每个Windows应用程序都必须提供一个主函数: WinMain。
程序的执行从WinMain开始。 WinMain的主要功能是:注册窗口类、创建应用的主窗口、 进入消息循环。 注册窗口类:
向windows报告本应用程序将创建那些种类的窗口,如窗口的基 本风格、消息处理函数、图标、菜单等等。
面向对象的Windows应用程序结构
Windows应用程序由以下对象构成 窗口对象
每个窗口都是一个对象,能处理windows的窗口消息
文档对象
每个窗口处理的数据也是对象,称为文档对象
应用程序对象
每个应用程序都是一个对象,负责管理属于它的窗 口对象和文档对象以及实现消息循环
CMDIFrameWnd
对话框用户界面
以对话框的形式对一个文档的数据进行操作的 应用程序而设计的。 文档数据的操作以各种“控制”来实现,程序 以按<确定><取消>按钮来结束。 例如:桌面属性对话框
消息驱动的程序结构
相关文档
最新文档