10_MFC程序设计基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第10章MFC程序设计基础华东理工大学计算机系·谢晓玲MFC类库简介MFC是Microsoft公司提供的基于WindowsAPI的C++类库集,并定义一个应用程序框架。MFC实现了标准的用户接口,提供了管理窗口、菜单、对话框的代码,可实现基本的输入输出和数据存储。MFC提供大量可重用代码,隐藏基于窗口的应用程序设计的复杂细节,减轻编程工作量。AppWizard应用程序向导可以产生应用程序框架。其步骤:1.利用AppWizard生成一个新项目;2.修改源文件;3.在资源编辑器中编辑资源文件;4..cpp源文件经编译生成.obj文件,资源文件经编译生成.res文件;5.链接器将结合.obj文件、.res文件和.dll库文件生成.exe可执行文件。利用C++.NET开发Windows程序C++.NET程序设计框架C++.NET提供了应用程序向导(AppWizard),可以创建3种类型的MFC应用程序框架:1.对话框应用程序2.单文档应用程序3.多文档应用程序应用程序框架是一种类库的超集,它用来定义程序的结构,将其他的类库,例如文档类、视图类及用户自定义类等,嵌入到应用程序框架中,以完成用户预期的功能。大多数MFC类来自三大基类:1.CObject:具有在运行时获得对象大小和名字的能力。2.CWnd:所有窗口的基类,具有创建、维护窗口的能力。3.CCmdTarget:具有处理命令消息的能力。利用C++.NET开发Windows程序窗口、对话框和控件类来自CWnd的派生类分以下类型:1.框架窗口类CFrameWnd2.对话框类CDialog3.视图类CView4.控件类CAnimateCrtl5.控件条类CControlBar6.属性表类CPropertySheet利用C++.NET开发Windows程序窗口、对话框和控件类利用C++.NET开发Windows程序应用程序、框架、文档和视图类以单文档多视图风格的应用程序为例,C++.NET自动生成的类如下:1.应用程序类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程序文档-视图结构文档类和视图类共同形成了“文档-视图”结构。有利于将数据从用户对数据的观察中分离了出来,从而允许同一数据可以有多种视图,而这也是符合客观世界中人们观察事物过程的客观要求的。文档-视图结构的工作机制1.调用视图类成员函数GetDocument()获得指向相关联的文档对象的指针;2.通过该指针调用文档类的成员变量获得数据,由屏幕显示给用户;3.用户通过视图交互读写数据,再通过相关联的文档类的成员传递数据;4.最后通过文档类的串行化保存到介质中。利用C++.NET开发Windows程序文档类CDocumentCDocument是所有的文档类的基类,它提供的方法分一般方法(表1_1)和虚拟方法(表1_2),可以通过Afxwin.h头文件了解该类的基本功能。利用C++.NET开发Windows程序视图类CViewCView视图类是从CWnd类派生的,具有创建、移动、显示、隐藏窗口的能力,并且接受任何Windows消息。CView视图类提供的方法分一般方法(表1_3)和虚拟方法(表1_4),可以通过Afxwin.h头文件了解该类的基本功能。利用C++.NET开发Windows程序当屏幕发生变化或焦点的变化需要视图重绘以实现正确显示时,OnDraw()被自动调用;当文档数据发生变化时,OnDraw()函数不会被自动调用,需调用与视图关联的文档类的成员函数OnUpdateAllViews(),该函数使视图做出响应调用OnDraw()函数。利用C++.NET开发Windows程序视图类的派生类在很多情况下,应用程序中使用CView的派生类而非CView,在创建应用程序时,应根据需求选择合适的视图派生类。1.CScrollView类,可以实现视图的滚动显示,可以利用其成员函数SetScrollSize()设置滚动尺寸和坐标映射模式,但在绘图和接受用户输入时需要对坐标进行变换。2.CTreeView类,支持树型控件功能的实现,以TreeCtrl界面为视图界面,通过成员函数GetTreeCtrl()可以获得CTreeCtrl的引用。3.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-成员变量利用C++.NET开发Windows程序设备上下文(DeviceContext,DC)图形的输出设备有显示器、打印机、绘图仪等,为了实现图形输出与设备无关,Windows应用程序使用图形设备接口(GDI)进行图形编程。GDI给Windows提供全部绘图函数,这些函数会自动参考被称为设备上下文DC(DeviceContext)的数据结构,而Windows则自动将设备上下文映射到具体的物理设备上实现图形输出。DC也称为设备描述表,是物理设备的逻辑形式,是GDI中的重要的组成部分,是一种数据结构,它定义了一系列图形对象以及图形对象的属性和图形输出的图形模式。图形对象包括画线的画笔、用于填充图形的画刷、位图和调色板等。利用C++.NET开发Windows程序设备上下文(DeviceContext,DC)Windows和MFC类库提供了四种类型的设备上下文:1.显示设备上下文DisplayDC:将显示信息输出到视频显示器。2.打印设备上下文PrinterDC:将显示信息输出到打印机。3.内存设备上下文MemoryDC:为特定的设备保存位图图像。4.信息设备上下文InformationDC:用于访问默认设备数据信息的设备上下文。利用C++.NET开发Windows程序绘图句柄(HandlerDeviceContext,HDC)设备上下文不能被应用程序直接存取,只能通过调用句柄(HDC)来间接地存取设备上下文及其属性。MFC类库提供了不同类型的设备上下文的类,每一个类都封装了代表Windows设备上下文的句柄(HDC)和函数:1.CDC类:是设备上下文的基类,利用它可以访问整个显示设备和其它输出设备。2.CPaintDC类:是OnPaint()函数使用的设备上下文类,代表了窗口的绘图画面。3.CClientDC类:是窗口客户区的设备上下文类,代表了客户区窗口的绘图画面。利用C++.NET开发Windows程序绘图句柄(HandlerDeviceContext,HDC)4.CWindowDC类:是整个窗口区域的设备上下文类,整个窗口区域即包括客户区又包括非客户区,即允许用户在显示器屏幕的任何地方绘图,包括窗口边框、标题区域。5.CMetaFileDC类:用于创建一个Windows图元文件的设备上下文。Windows图元文件包含了一系列GDI绘图命令。1.通过向导,创建项目MyDemo2.设置项目的属性为单文档3.将自动生成四个类和唯一的全局应用类对象theApp。CMyDemoApp应用程序类;CMyDemoDoc文档类;CMyDemoView视图类;CmainFrame主框架类。4.重写视图类(CMyDemoView)成员函数OnDraw()。5.通过CMainFrame的PreCreateWindow()函数,修改窗口的大小、标题等。MFC图形用户界面程序设计控件控件(Control)是Windows系统定义的一类标准子窗口,用于捕获事件并向其父窗口发送消息。MFC图形用户界面程序设计常用控件借助MFC的资源编辑器,可以“所见即所得”在对话框中布置控件,形成程序运行时与用户的交互界面。编辑框(EditControl),也称文本框。用于显示和输入,其MultiLine属性为False时是单行文本框;为True时为多行文本框。Password属性决定是否是密码文本框。静态文本框(StaticText),也称标签框。修改Caption属性显示提示信息。命令按钮(Button),触发命令执行。MFC图形用户界面程序设计利用MFC向导建立对话框应用程序1.通过向导,创建项目PassedMFC图形用户界面程序设计2.设置项目的属性为基于对话框MFC图形用户界面程序设计3.设置用户界面的主框架样式MFC图形用户界面程序设计4.向导自动生成二个类和唯一的全局应用类对象theApp。MFC图形用户界面程序设计5.利用资源编辑器设计密码验证窗体界面。MFC图形用户界面程序设计6.利用属性窗口设置控件属性。IDCaptionMultiLinePasswordReadOnlyIDC_STATIC请输入密码:IDC_EDIT1FalseTrueFalseIDC_EDIT2TrueFalseTrueIDC_BUTTON1提交IDC_BUTTON2退出MFC图形用户界面程序设计控件的成员变量分2种:Control变量:标识控件对象Value变量:保存数据当控件和成员变量进行绑定后,可以通过UpdateData()函数让数据在成员变量和控件之间进行交换。UpdateData(true);//控件的value-成员变量UpdateData(false);//控件的value-成员变量ID变量类型变量名访问属性IDC_EDIT1Controlc_edit1publicValuev_edit1protectedIDC_EDIT2Controlc_edit2publicValuev_edit1protectedMFC图形用户界面程序设计6.为控件定义Control成员变量。MFC图形用户界面程序设计7.为按钮定义单击(BN_CLICKED)事件函数。MFC图形用户界面程序设计MFC的核心组件、标准组件定义在“afxwin.h”中,其中关于文本的函数有:1.设置组件文本内容voidSetWindowText(LPCTSTRlpszString);2.获取组件文本内容voidGetWindowText(LPCTSTRlpszString);3.获取组件文本内容intGetWindo

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功