MFC程序设计基础_第1页
MFC程序设计基础_第2页
MFC程序设计基础_第3页
MFC程序设计基础_第4页
MFC程序设计基础_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章MFC程序设计基础,华东理工大学计算机系谢晓玲,MFC类库简介,MFC是Microsoft公司提供的基于WindowsAPI的C+类库集,并定义一个应用程序框架。MFC实现了标准的用户接口,提供了管理窗口、菜单、对话框的代码,可实现基本的输入输出和数据存储。MFC提供大量可重用代码,隐藏基于窗口的应用程序设计的复杂细节,减轻编程工作量。AppWizard应用程序向导可以产生应用程序框架。其步骤:利用AppWizard生成一个新项目;修改源文件;在资源编辑器中编辑资源文件;.cpp源文件经编译生成.obj文件,资源文件经编译生成.res文件;链接器将结合.obj文件、.res文件和.dll库文件生成.exe可执行文件。,利用C+.NET开发Windows程序,C+.NET程序设计框架C+.NET提供了应用程序向导(AppWizard),可以创建3种类型的MFC应用程序框架:对话框应用程序单文档应用程序多文档应用程序应用程序框架是一种类库的超集,它用来定义程序的结构,将其他的类库,例如文档类、视图类及用户自定义类等,嵌入到应用程序框架中,以完成用户预期的功能。大多数MFC类来自三大基类:CObject:具有在运行时获得对象大小和名字的能力。CWnd:所有窗口的基类,具有创建、维护窗口的能力。CCmdTarget:具有处理命令消息的能力。,利用C+.NET开发Windows程序,窗口、对话框和控件类来自CWnd的派生类分以下类型:框架窗口类CFrameWnd对话框类CDialog视图类CView控件类CAnimateCrtl控件条类CControlBar属性表类CPropertySheet,利用C+.NET开发Windows程序,窗口、对话框和控件类,利用C+.NET开发Windows程序,应用程序、框架、文档和视图类以单文档多视图风格的应用程序为例,C+.NET自动生成的类如下:应用程序类CWinApp:负责程序的启动、初始化和运行等。在MFC应用程序中会定义唯一的该类的全局对象theApp,是应用程序运行实例。2.主框架类CFrameWnd:负责创建和显示具体的窗口结构,并负责消息的分发。3.文档类CDocument:用于管理、保存数据,相当于数据容器。4.视口类CView:绘图或显示数据,是文档与用户交互的一个窗口。,利用C+.NET开发Windows程序,MFC应用程序执行过程应用程序类全局对象theApp与WindowsAPI程序的入口函数WinMain()有类似功能。应用程序首先定义全局变量theApp,再进行应用程序初始化InitInstance(),并通过由系统自动生成的主窗口句柄m_pMainWnd来显示窗口。CMyDemoApptheApp;/唯一的一个应用类对象BOOLCMyDemoApp:InitInstance()/应用程序初始化CWinApp:InitInstance();/唯一的一个窗口已初始化,因此显示它并对其进行更新m_pMainWnd-ShowWindow(SW_SHOW);m_pMainWnd-UpdateWindow();returnTRUE;,利用C+.NET开发Windows程序,文档-视图结构文档类和视图类共同形成了“文档-视图”结构。有利于将数据从用户对数据的观察中分离了出来,从而允许同一数据可以有多种视图,而这也是符合客观世界中人们观察事物过程的客观要求的。文档-视图结构的工作机制调用视图类成员函数GetDocument()获得指向相关联的文档对象的指针;通过该指针调用文档类的成员变量获得数据,由屏幕显示给用户;用户通过视图交互读写数据,再通过相关联的文档类的成员传递数据;最后通过文档类的串行化保存到介质中。,利用C+.NET开发Windows程序,文档类CDocumentCDocument是所有的文档类的基类,它提供的方法分一般方法(表1_1)和虚拟方法(表1_2),可以通过Afxwin.h头文件了解该类的基本功能。,利用C+.NET开发Windows程序,视图类CViewCView视图类是从CWnd类派生的,具有创建、移动、显示、隐藏窗口的能力,并且接受任何Windows消息。CView视图类提供的方法分一般方法(表1_3)和虚拟方法(表1_4),可以通过Afxwin.h头文件了解该类的基本功能。,利用C+.NET开发Windows程序,当屏幕发生变化或焦点的变化需要视图重绘以实现正确显示时,OnDraw()被自动调用;当文档数据发生变化时,OnDraw()函数不会被自动调用,需调用与视图关联的文档类的成员函数OnUpdateAllViews(),该函数使视图做出响应调用OnDraw()函数。,利用C+.NET开发Windows程序,视图类的派生类在很多情况下,应用程序中使用CView的派生类而非CView,在创建应用程序时,应根据需求选择合适的视图派生类。CScrollView类,可以实现视图的滚动显示,可以利用其成员函数SetScrollSize()设置滚动尺寸和坐标映射模式,但在绘图和接受用户输入时需要对坐标进行变换。CTreeView类,支持树型控件功能的实现,以TreeCtrl界面为视图界面,通过成员函数GetTreeCtrl()可以获得CTreeCtrl的引用。CListView类,类似CTreeView类,以ListCtrl界面为视图界面,通过成员函数GetListCtrl()可以获得CListCtrl的引用。,利用C+.NET开发Windows程序,4.CEditView类,利用CEdit接收用户输入,实现类似编辑控件的功能,通过成员函数GetEditCtrl()可以获得CEdit的引用。5.CRichEditView类,作为RichTextEdit的视图类,提供可以按照格式显示文本的能力,在使用时需要CRichEditDoc的支持。6.CFormView类,提供用户在资源文件中定义界面的能力,并可以将子窗口和变量进行绑定,通过UpdateData()函数让数据在变量和子窗口之间进行交换。UpdateData(true);/控件的value-成员变量UpdateData(false);/控件的value成员变量UpdateData(false);/控件的value-成员变量,MFC图形用户界面程序设计,6.为控件定义Control成员变量。,MFC图形用户界面程序设计,7.为按钮定义单击(BN_CLICKED)事件函数。,MFC图形用户界面程序设计,MFC的核心组件、标准组件定义在“afxwin.h”中,其中关于文本的函数有:设置组件文本内容voidSetWindowText(LPCTSTRlpszString);2.获取组件文本内容voidGetWindowText(LPCTSTRlpszString);3.获取组件文本内容intGetWindowTextLength()const;4.设置组件文本字体voidSetFont(CFont*pFont,BOOLbRedraw=TRUE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论