MFC应用程序基础.ppt
《MFC应用程序基础.ppt》由会员分享,可在线阅读,更多相关《MFC应用程序基础.ppt(62页珍藏版)》请在三一办公上搜索。
1、高级语言程序设计-2,谭火彬,高级语言程序设计-2,-2-,Windows程序设计思路,Windows编程思路:1.设计窗体,接收用户输入 2.编写消息处理函数,并将这些函数与相应的控件关联,窗口消息处理列表:1.窗体创建 2.窗体关闭 3.窗体移动 4.鼠标单击按钮 5.编辑框中输入文本 6.选择列表框,高级语言程序设计-2,-3-,几个问题?,如何设计窗体和窗体中的控件?程序中如何操作窗体、控件?如何将用户操作与消息处理函数关联?如何编写消息处理函数响应用户的操作?,MFC即是封装这种处理机制的框架库,资源编辑器,资源,消息映射机制,函数,第11章MFC应用程序基础,高级语言程序设计-2,
2、-5-,内容安排,MFC概述MFC类库基础MFC对话框应用MFC文档视结构.Net环境介绍,高级语言程序设计-2,-6-,内容安排,MFC概述MFC类库基础MFC对话框应用MFC文档视结构.Net环境介绍,高级语言程序设计-2,-7-,MFC概述,MFC是一个编程框架MFC封装了Win32 SDK中的结构、功能,为编程者提供了一个应用程序框架该框架为编程者完成了很多Windows编程中的例行性工作,如管理窗口、菜单和对话框,执行基本的输入和输出、使用集合类来保存数据对象等等MFC框架定义了应用程序轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填
3、入这个轮廓Visual C+提供相应工具完成MFC初始化工作AppWizard可以生成初步框架文件(代码和资源等)资源编辑器用于帮助直观地设计用户接口ClassWizard用来协助添加代码到框架文件,高级语言程序设计-2,-8-,MFC发展-1,AFX(application framework)小组,Microsoft早先创建面向对象应用程序框架的尝试在许多方面改造了Windows,使用了完全不同的窗口和图形子系统,全新的AFX是面向对象API,提供Windows API高度抽象(不与Windows API兼容)扩展C+类,封装、映象Windows API,且为面向对象Windows应用程序
4、提供坚实的基础MFCAFX小组拿出全部AFX代码,大量AFX代码(作为基本框架)被移植到MFC内部,至今仍在MFC内。但是大部分AFX代码被废弃同时,MFC小组编写了集成开发环境Visual Studio以支持MFC,高级语言程序设计-2,-9-,MFC发展-2,MFC的演变1992.3 MFC1.0和Microsoft C/C+7.0同时推出:16位,无doc/view结构,存在CObject和MFC保留类CArchive1993.2 MFC2.0和VC1.0同时推出16位,引入doc/view结构 支持OLE1.0,引入消息映射,引入公用对话框1993.7 MFC(32位)1.0版本随同N
5、T3.1同时推出1993.8 MFC2.1和VC(32位)同时推出1993.12 最后的16位VC1994.9 VC+2.0和32位MFC3.0推出,高级语言程序设计-2,-10-,MFC编程体现面向对象特点,封装对Win32应用程序编程接口的封装对应用程序概念的封装对其它特性的封装,如COM/OLE、ODBC继承MFC抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础:CObject、CCmdTarget多态通过虚拟函数和消息映射,MFC类提供了丰富的编程接口程序员继承基类的同时,把自己实现的虚拟函数和消息处理函数嵌入MFC的编程框架。MFC编程框架将在适当的时候、适当的地方来调用程
6、序的代码,高级语言程序设计-2,-11-,高级语言程序设计-2,-12-,内容安排,MFC概述MFC类库基础MFC对话框应用MFC文档视结构.Net环境介绍,高级语言程序设计-2,-13-,MFC类层次结构,基本类库可分为两种CObject派生类非CObject派生类,高级语言程序设计-2,-14-,CObject继承层次,CObject,应用程序结构,窗口支持,对话框,视图,控件,框架窗口,屏显,图形服务,控件支持,图形对象,菜单,同步对象,数组,列表,映射,文件服务,Windows插件,高级语言程序设计-2,-15-,CObject主要子类,CObject,CCmdTarget,CWinT
7、hread,CDocument,CWnd,CFrameWnd,CMDIChildWnd,CWinApp,CView,CDialog,CMIDFrameWnd,CMiniFrameWnd,MFC提供的绝大多数类的基类,该类完成动态空间的分配与回收,支持一切诊断、出错信息处理和文档序列化,主要负责将系统事件(消息)和窗口事件(消息)发送给响应这些事件的对象,完成消息发送、等待和派遣(调度)等工作,实现应用程序的对象之间的协调运行,应用程序的主线程类,是从CWinThread类派生而来的,用来完成对线程的控制,包括线程的创建、运行、终止和挂起等,文档类,包括了应用程序在运行期间所用到的数据,通用窗口
8、类,用来提供Windows中的所有通用特性、对话框和控件,实现标准的框架应用程序,控制对话框窗口,高级语言程序设计-2,-16-,第一个MFC程序:应用程序类,#include class CHelloApp:public CWinApppublic:virtual BOOL InitInstance();BOOL CHelloApp:InitInstance()m_pMainWnd=new CMainFrame();m_pMainWnd-ShowWindow(m_nCmdShow);m_pMainWnd-UpdateWindow();return TRUE;CHelloApp theApp;
9、,高级语言程序设计-2,-17-,主框架类,class CMainFrame:public CFrameWndpublic:CMainFrame()Create(NULL,My Window,WS_OVERLAPPEDWINDOW,CRect(0,0,400,300);protected:afx_msg void OnLButtonDown(UINT nFlags,CPoint point);DECLARE_MESSAGE_MAP();BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)ON_WM_LBUTTONDOWN()END_MESSAGE_MAP()void
10、CMainFrame:OnLButtonDown(UINT nFlags,CPoint point)MessageBox(Hello World,Welcome to Visual C+!,Welcome,0);CFrameWnd:OnLButtonDown(nFlags,point);,高级语言程序设计-2,-18-,分析MFC应用程序,MFC应用程序特点没有主函数WinMainCWinApp代表整个应用程序类所有的应用程序都需要从该类中派生出一个具体的代表当前应用程序的类CWinApp:InitInstance()代表应用程序入口窗口消息处理从CFrameWnd中派生窗口框架类不再需要明确
11、定义窗口处理函数每个消息处理函数,定义成该窗口类的成员函数利用宏机制完成消息映射,高级语言程序设计-2,-19-,Program Entry Point,WinMain()Initialize AppInitialize InstancePump Message,CWinApp:InitApplication()Initialize App,CWinApp:InitInstance()Initialize Instance,CWinApp:Run()Pump Message,CWinApp:ExitInstace(),Quit?,MFC应用程序结构,高级语言程序设计-2,-20-,Visual
12、 Studio Wizard工具,为了将MFC类恰当地运用于应用程序,Developer Studio(开发平台)提供了几种向导(Wizard)工具和编辑器工具:AppWizard 用于生成应用程序所需要的基本类文件。所产生的类都派生于MFC类,它们在编译后与MFC库链接以创建应用程序Class Wizard 用于创建应用程序额外的文件或者为已有的类增加新的成员函数。这些被创建的类可以由MFC派生Resource Editor用于编辑各类资源:Dialog Editor 用于创建对话框模板Toolbar Editor 用于创建工具栏和位图资源Cursor、Icon和Bitmap Editor
13、是简单的图像编辑器,用于创建应用所使用的光标、图标和位图资源Menu Editor 用于创建应用中的菜单条和弹出菜单资源String Editor 用于创建字串资源Text Editor 用于编辑类文件,高级语言程序设计-2,-21-,MFC AppWizard,高级语言程序设计-2,-22-,MFC ClassWizard-消息映射,高级语言程序设计-2,-23-,MFC ClassWizard-数据交换,高级语言程序设计-2,-24-,MFC应用程序类型,基于对话框的应用程序MFC文档视结构单文档应用程序多文档应用程序,高级语言程序设计-2,-25-,内容安排,MFC概述MFC类库基础MF
14、C对话框应用MFC文档视结构.Net环境介绍,高级语言程序设计-2,-26-,基于对话框的应用程序,高级语言程序设计-2,-27-,对话框中常用Windows控件,高级语言程序设计-2,-28-,关于控件,控件(Control)是独立的小部件,在对话框与用户的交互过程中,控件担任着主要角色 控件实际上都是窗口,所有的控件类都是CWnd类的派生类控件通常是作为对话框的子窗口而创建的,控件也可以出现在视窗口,工具条和状态条中,高级语言程序设计-2,-29-,对话框模板设计,高级语言程序设计-2,-30-,对话框界面设计基础,添加新的对话框资源Insert Resource:Dialog改变对话框的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 应用程序 基础

链接地址:https://www.31ppt.com/p-6512442.html