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

下载本文档

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

文档简介

会计学1MFC程序设计基础MFC类库简介MFC是Microsoft公司提供的基于WindowsAPI的C++类库集,并定义一个应用程序框架。

MFC实现了标准的用户接口,提供了管理窗口、菜单、对话框的代码,可实现基本的输入输出和数据存储。

MFC提供大量可重用代码,隐藏基于窗口的应用程序设计的复杂细节,减轻编程工作量。

AppWizard应用程序向导可以产生应用程序框架。其步骤:利用AppWizard生成一个新项目;修改源文件;在资源编辑器中编辑资源文件;.cpp源文件经编译生成.obj文件,资源文件经编译生成.res文件;链接器将结合.obj文件、.res文件和.dll库文件生成.exe可执行文件。第1页/共41页利用C++.NET开发Windows程序C++.NET程序设计框架C++.NET提供了应用程序向导(AppWizard),可以创建3种类型的MFC应用程序框架:对话框应用程序单文档应用程序多文档应用程序应用程序框架是一种类库的超集,它用来定义程序的结构,将其他的类库,例如文档类、视图类及用户自定义类等,嵌入到应用程序框架中,以完成用户预期的功能。大多数MFC类来自三大基类:CObject:具有在运行时获得对象大小和名字的能力。CWnd:所有窗口的基类,具有创建、维护窗口的能力。CCmdTarget:具有处理命令消息的能力。第2页/共41页利用C++.NET开发Windows程序窗口、对话框和控件类来自CWnd的派生类分以下类型:框架窗口类CFrameWnd对话框类CDialog视图类CView控件类CAnimateCrtl控件条类CControlBar属性表类CPropertySheet

第3页/共41页利用C++.NET开发Windows程序窗口、对话框和控件类

第4页/共41页利用C++.NET开发Windows程序应用程序、框架、文档和视图类以单文档多视图风格的应用程序为例,C++.NET自动生成的类如下:应用程序类CWinApp:负责程序的启动、初始化和运行等。在MFC应用程序中会定义唯一的该类的全局对象theApp,是应用程序运行实例。2.主框架类CFrameWnd:负责创建和显示具体的窗口结构,并负责消息的分发。3.文档类CDocument:用于管理、保存数据,相当于数据容器。4.视口类CView:绘图或显示数据,是文档与用户交互的一个窗口。第5页/共41页利用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;}第6页/共41页利用C++.NET开发Windows程序文档-视图结构

文档类和视图类共同形成了“文档-视图”结构。有利于将数据从用户对数据的观察中分离了出来,从而允许同一数据可以有多种视图,而这也是符合客观世界中人们观察事物过程的客观要求的。文档-视图结构的工作机制调用视图类成员函数GetDocument()获得指向相关联的文档对象的指针;通过该指针调用文档类的成员变量获得数据,由屏幕显示给用户;用户通过视图交互读写数据,再通过相关联的文档类的成员传递数据;最后通过文档类的串行化保存到介质中。第7页/共41页利用C++.NET开发Windows程序文档类CDocumentCDocument是所有的文档类的基类,它提供的方法分一般方法(表1_1)和虚拟方法(表1_2),可以通过Afxwin.h头文件了解该类的基本功能。

第8页/共41页第9页/共41页利用C++.NET开发Windows程序视图类CView

CView视图类是从CWnd类派生的,具有创建、移动、显示、隐藏窗口的能力,并且接受任何Windows消息。

CView视图类提供的方法分一般方法(表1_3)和虚拟方法(表1_4),可以通过Afxwin.h头文件了解该类的基本功能。第10页/共41页利用C++.NET开发Windows程序

当屏幕发生变化或焦点的变化需要视图重绘以实现正确显示时,OnDraw()被自动调用;当文档数据发生变化时,OnDraw()函数不会被自动调用,需调用与视图关联的文档类的成员函数OnUpdateAllViews(),该函数使视图做出响应调用OnDraw()函数。第11页/共41页利用C++.NET开发Windows程序视图类的派生类在很多情况下,应用程序中使用CView的派生类而非CView,在创建应用程序时,应根据需求选择合适的视图派生类。CScrollView类,可以实现视图的滚动显示,可以利用其成员函数SetScrollSize()设置滚动尺寸和坐标映射模式,但在绘图和接受用户输入时需要对坐标进行变换。CTreeView类,支持树型控件功能的实现,以TreeCtrl界面为视图界面,通过成员函数GetTreeCtrl()可以获得CTreeCtrl的引用。CListView类,类似CTreeView类,以ListCtrl界面为视图界面,通过成员函数GetListCtrl()可以获得CListCtrl的引用。第12页/共41页利用C++.NET开发Windows程序4.CEditView类,利用CEdit接收用户输入,实现类似编辑控件的功能,通过成员函数GetEditCtrl()可以获得CEdit的引用。5.CRichEditView类,作为RichTextEdit的视图类,提供可以按照格式显示文本的能力,在使用时需要CRichEditDoc的支持。6.CFormView类,提供用户在资源文件中定义界面的能力,并可以将子窗口和变量进行绑定,通过UpdateData()函数让数据在变量和子窗口之间进行交换。UpdateData(true);

//控件的value->成员变量UpdateData(false);

//控件的value<-成员变量

第13页/共41页利用C++.NET开发Windows程序设备上下文(DeviceContext,DC)图形的输出设备有显示器、打印机、绘图仪等,为了实现图形输出与设备无关,Windows应用程序使用图形设备接口(GDI)进行图形编程。GDI给Windows提供全部绘图函数,这些函数会自动参考被称为设备上下文DC(DeviceContext)的数据结构,而Windows则自动将设备上下文映射到具体的物理设备上实现图形输出。DC也称为设备描述表,是物理设备的逻辑形式,是GDI中的重要的组成部分,是一种数据结构,它定义了一系列图形对象以及图形对象的属性和图形输出的图形模式。图形对象包括画线的画笔、用于填充图形的画刷、位图和调色板等。第14页/共41页利用C++.NET开发Windows程序设备上下文(DeviceContext,DC)Windows和MFC类库提供了四种类型的设备上下文:显示设备上下文DisplayDC:将显示信息输出到视频显示器。打印设备上下文PrinterDC:将显示信息输出到打印机。内存设备上下文MemoryDC:为特定的设备保存位图图像。信息设备上下文InformationDC:用于访问默认设备数据信息的设备上下文。第15页/共41页利用C++.NET开发Windows程序绘图句柄(HandlerDeviceContext,HDC)

设备上下文不能被应用程序直接存取,只能通过调用句柄(HDC)来间接地存取设备上下文及其属性。

MFC类库提供了不同类型的设备上下文的类,每一个类都封装了代表Windows设备上下文的句柄(HDC)和函数:1.CDC类:是设备上下文的基类,利用它可以访问整个显示设备和其它输出设备。2.CPaintDC类:是OnPaint()函数使用的设备上下文类,代表了窗口的绘图画面。3.CClientDC类:是窗口客户区的设备上下文类,代表了客户区窗口的绘图画面。第16页/共41页利用C++.NET开发Windows程序绘图句柄(HandlerDeviceContext,HDC)

4.

CWindowDC类:是整个窗口区域的设备上下文类,整个窗口区域即包括客户区又包括非客户区,即允许用户在显示器屏幕的任何地方绘图,包括窗口边框、标题区域。5.

CMetaFileDC类:用于创建一个Windows图元文件的设备上下文。Windows图元文件包含了一系列GDI绘图命令。

第17页/共41页1.通过向导,创建项目MyDemo

第18页/共41页2.设置项目的属性为单文档

第19页/共41页3.将自动生成四个类和唯一的全局应用类对象theApp。CMyDemoApp

应用程序类;CMyDemoDoc文档类;CMyDemoView

视图类;CmainFrame

主框架类。

第20页/共41页4.重写视图类(CMyDemoView)成员函数OnDraw()

。第21页/共41页5.

通过CMainFrame的PreCreateWindow()函数,修改窗口的大小、标题等。

第22页/共41页MFC图形用户界面程序设计控件

控件(Control)是Windows系统定义的一类标准子窗口,用于捕获事件并向其父窗口发送消息。

第23页/共41页MFC图形用户界面程序设计常用控件借助MFC的资源编辑器,可以“所见即所得”在对话框中布置控件,形成程序运行时与用户的交互界面。编辑框(EditControl),也称文本框。用于显示和输入,其MultiLine属性为False时是单行文本框;为True时为多行文本框。Password属性决定是否是密码文本框。静态文本框(StaticText),也称标签框。修改Caption属性显示提示信息。命令按钮(Button),触发命令执行。

第24页/共41页MFC图形用户界面程序设计利用MFC向导建立对话框应用程序通过向导,创建项目Passed

第25页/共41页MFC图形用户界面程序设计2.设置项目的属性为基于对话框

第26页/共41页MFC图形用户界面程序设计3.设置用户界面的主框架样式

第27页/共41页MFC图形用户界面程序设计4.向导自动生成二个类和唯一的全局应用类对象theApp。第28页/共41页MFC图形用户界面程序设计5.利用资源编辑器设计密码验证窗体界面。第29页/共41页MFC图形用户界面程序设计6.利用属性窗口设置控件属性。

ID CaptionMultiLinePasswordReadOnlyIDC_STATIC请输入密码:

IDC_EDIT1 FalseTrue FalseIDC_EDIT2 True False TrueIDC_BUTTON1提交IDC_BUTTON2退出第30页/共41页MFC图形用户界面程序设计控件的成员变量分2种:

Control变量:标识控件对象

Value变量:保存数据当控件和成员变量进行绑定后,可以通过UpdateData()函数让数据在成员变量和控件之间进行交换。UpdateData(true);

//控件的value->成员变量UpdateData(false);

//控件的value<-成员变量

ID 变量类型

变量名 访问属性IDC_EDIT1 Control c_edit1 public Value v_edit1 protectedIDC_EDIT2 Control c_edit2 public Value v_edit1 protected

温馨提示

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

评论

0/150

提交评论