文档视图结构应用程序

合集下载

MFC类库的基本类

MFC类库的基本类

MFC类库是一个层次结构,主要有CObject类、应用程序类、可视对象类、绘图和打印类、通用类、数据库类、Internet和网络类、OLE类。

(1)CObject类CObject类是MFC的抽象基类,MFC中的大多数类是从CObject类派生出来的。

它是MFC 中多数类和用户自定义的根类,该类为程序员提供了希望融入所编写程序的许多公共操作,包括对象的建立和删除、串行化支持、对象诊断输出、运行时信息以及集合类的兼容等。

CObject类的声明在Afx.h中。

(2)应用程序结构类该类主要用于构造框架应用程序的结构,提供了多数应用程序公用的功能.编写程序的任务是填充框架,添加应用程序专有的功能。

1.应用程序和线程支持类CWinThread类是所有线程的基类,窗口应用程序类CWinApp类就是从该类中派生来的。

每个应用程序有且只有一个应用程序对象,在运行程序中该对象和其他对象相互协调,该对象从CWinApp中派生出来。

该类封装了初始化、运行、终止应用程序的代码。

2.命令相关类CCmdTarget类是CObject的子类,它是MFC所有具有消息映射属性的基类。

消息映射规定了当一对象接收到消息命令时,应调用哪个函数对该消息进行处理。

程序员很少需要从CCmdTarget类中直接派生出新类,往往都是从它的子类中派生出新类。

如窗口类(CWnd)、应用程序类(CWinApp)、文档模板类(CDocTemplate)、视类(CView)及框架窗口类(CFrameWnd)等。

3.文档类文档对象由文档对象模板创建,用于管理应用程序的数据。

视图对象表示一个窗口的客户区,用于显示文档数据并允许读者与之交互。

有关文档/视结构的类如下:①CDocTemplate类:文档模板的基类。

文档模板用于协调文档、视图和框架窗口的创建。

②CSingleDocTemplate类:单文档界面(SDI)的文档模板。

③CMultiDocTemplate类:多文档界面(MDI)的文档模板。

文档视图

文档视图

文档/视图在MFC1.0中,应用程序有两个主要的组件:代表应用程序自身的应用程序对象和代表应用程序窗口的窗口对象。

应用程序对象的主要任务是创建窗口,反过来窗口再处理消息。

MFC几乎就是对WindowsAPI的封装。

在MFC2.0中,引入文档/视图体系结构,改变了MFC应用程序编制的方式。

在Doc/View中,应用程序的数据由文档对象代表,而数据的视图由视图对象代表。

文档和视图合作来处理用户的输入并绘制结果数据的文字和图形表示。

应用程序的主窗口,其操作功能在CFrameWnd和CMDIFrameWnd 类中实现,已经不再以消息处理为工作焦点了,而是作为视图,工具栏以及其他用户界面对象的容器。

利用MFC体系结构的好处是简化了开发过程,主结构提供了处理常规杂务的程序代码。

现在程序开发者对于使用MDI并不积极,这是由于SDI模型改善了以文档为中心的用户界面。

如果用户想同时编辑两个文档,Microsoft 更加愿意每个文档都在分开的应用程序实例中显示。

因此要以单文档为重点。

框架窗口是应用程序的顶层窗口,通常是WS_OVERLAPPEDWINDOW样式的窗口,带有可缩放边框,带有标题栏,系统菜单和最小,大化按钮和关闭按钮。

视图是子窗口,实际中作为框架窗口的客户区。

应用程序对象提供消息循环给框架窗口和视图提取消息。

视图对象将鼠标和键盘输入转换为处理保存在文档中的数据的命令,文档对象提供了视图所需要的用来输出的数据。

文档/视图应用程序从来不会为框架窗口获取客户区设备描述表并在其中绘制输出,相反它绘制输出到视图中。

看上去好像在框架窗口中绘制,实际上所有输出都输出到视图中。

如果愿意,可以给框架窗口绘制内容,但是您看不到任何结果,因为SDI框架窗口的客户区完全被视图遮盖了。

SDI文档模板CSingleDocTemplate是SDIDoc/View中最重要的部分。

RUNTIME_CLASS宏对于所指定的类返回指向了CRuntimeClass结构的指针,这就使得主结构可以在运行时创建这些类的对象了。

C++实践报告

C++实践报告

中南大学本科生课程设计(实践)任务书、设计报告(C++程序设计)题目C++程序设计实践学生姓名* *指导教师孙岱学院地球科学与信息物理学院专业班级信息物理工程类1106班学生学号01451106**计算机基础教学实验中心2012年7月日C++程序设计实践报告书C++是一种使用非常广泛的电脑程式设计语言,在当今网络如此发达的时代能够运用C++语言进行编程显得尤为重要。

它是一种静态资料类型检查的,支援多范型的通用程式设计语言。

C++支援程序化程式设计、资料抽象化、面向对象程式设计、泛型程式设计、基于原则设计等多种程式设计风格。

在系统学习完《C++程序设计基础》课程后,我们在老师的指导下进行了这次C++程序设计实践,主要以visual C++6.0为编译环境,重点使用了visual C++ MFC编程实现实践所要求的功能。

【任务描述】这次实践采用了上机实践与老师集体辅导结合的方式,以完成辅导老师下发的《C++语言课程设计任务书》中指定任务与要求为目的,要求我们在已学过的《C++程序设计基础》所掌握的一些C++语言的结构和函数的基础上,以全新的角度去感知和运用C++语言进行一些具有相关目的和功能的程序设计和编译。

在这次实践中,我们统一以visual C++ 6.0为编译系统,使用visual C++ MFC编程来达到和完成辅导老师给的《C++语言课程设计任务书》中给出的题目,其中部分题目以基本对话框为应用程序的框架,另一部分则设计为单文档界面(SDI)应用程序。

这些程序都具有不同的设计目的和应用功能,运用了常用的基本控件,如静态文本框、命令按钮、编辑框、复选框、列表框、组合框、滚动条等。

本次实践可分为三部分:一、基于对话框的Windows应用程序:这部分以知识要点掌握与编程实例主辅结合的方式,让我们基本掌握了基于对话框的应用程序的创建过程,建立基于对话框的MFC 应用程序框架,放置控件并设置控件属性,以及为控件连接变量(即为控件命名),添加并且编写消息处理函数。

如何使用Word的目录视图进行文档结构调整

如何使用Word的目录视图进行文档结构调整

如何使用Word的目录视图进行文档结构调整Word是一款常用的文字处理软件,具备强大的功能和丰富的编辑选项。

在编写较长的文档时,合理的文档结构可以提高阅读体验和查找效率。

Word中的目录视图功能可以帮助用户对文档结构进行调整,使得各个部分之间有机地连接起来,便于读者的阅读和理解。

本文将介绍如何使用Word的目录视图进行文档结构调整。

一、打开目录视图在开始之前,我们需要将文档切换到目录视图模式。

打开Word软件后,点击工具栏上的“视图”选项卡,其中包含了多个查看模式,选择“目录”即可进入目录视图。

二、插入章节标题在目录视图中,首先需要设置文档的章节标题。

在文档中定位到第一章的标题位置,选中该标题文本,然后在工具栏上找到“标题1”的样式,并应用到选中的文本上。

接着,依次将其他章节的标题文本选中,并使用“标题2”、“标题3”等样式进行设置。

三、创建目录项在目录视图中,Word会自动根据应用的样式生成相应的目录项。

我们可以根据需要调整这些目录项的位置和样式。

首先,选中第一章的标题文本,在工具栏上点击“标题”选项卡中的“目录项1”的样式。

然后,选中第二章的标题文本并应用“目录项2”的样式。

以此类推,逐个设置每个章节的目录项。

四、调整目录结构通过目录视图,我们可以轻松地调整文档结构,包括调整章节的层级、移动章节的位置、重新排序目录项等。

下面介绍几种常用的文档结构调整操作。

1.调整章节层级:选中某一章节的标题文本,在工具栏的“目录”选项卡中点击“上一级”或“下一级”按钮,可以将该章节提升或下沉一个层级。

2.移动章节位置:选中某一章节的标题文本,通过拖拽的方式可以将该章节移动到其他位置,从而改变文档的章节顺序。

3.重新排序目录项:选中某一章节的目录项,在工具栏的“目录”选项卡中点击“升序”或“降序”按钮,可以重新排序该章节的目录项。

五、更新目录在对文档结构进行调整后,可能需要更新目录以保持与实际文档的一致。

在目录视图中,点击工具栏上的“更新目录”按钮,Word会自动根据最新的文档结构和样式更新目录。

Word大纲视图的应用与分级管理技巧

Word大纲视图的应用与分级管理技巧

Word大纲视图的应用与分级管理技巧第一章:大纲视图的介绍与使用Word作为一款强大的办公软件,提供了多种视图供用户选择,其中大纲视图被广泛应用于文章的编辑和整理中。

大纲视图以树状结构呈现文档的结构,方便用户进行内容的组织和调整。

在大纲视图中,用户可以快速添加、删除、移动文本,并对文本进行分级管理。

本章将详细介绍大纲视图的操作方法及其基本功能。

第二章:大纲视图的操作方法在Word中,切换到大纲视图的方法非常简单。

只需点击“视图”标签上的“大纲视图”按钮,即可进入大纲视图模式。

在大纲视图中,用户可以看到文档的层级结构,并且可以通过双击文本进行展开或折叠。

在大纲视图中,用户可以对文本进行多种操作,如添加、删除、移动文本。

例如,若想在某一段落后插入新的段落,只需将光标定位到该段落后,按下“回车”键即可创建新的段落。

同时,用户还可以使用“Tab”键进行文本的缩进,以实现分级管理的效果。

第三章:大纲视图的分级管理技巧大纲视图的最大优势在于其可以对文档进行多级分级管理。

为了更好地组织和展示文档内容,用户可以对不同层级的标题进行标识和调整。

下面是几种实用的分级管理技巧:1. 使用不同级别的标题通过使用不同级别的标题,可以使文档的结构更加清晰明了。

Word提供了多个不同级别的标题样式供用户选择,用户可以根据需要进行调整。

在大纲视图中,只需对相应文本进行分级,即可实现不同级别的标题样式。

2. 展开与折叠展开与折叠是大纲视图的重要功能之一。

通过展开与折叠功能,用户可以快速查看或隐藏某一层级的内容,提高编辑效率。

在大纲视图中,用户只需双击某一标题即可实现展开或折叠。

3. 修改层级有时候,用户可能需要调整文档中某一段落的层级结构。

Word 提供了简便的操作方式,用户只需选中该段落,然后使用键盘上的“Alt+Shift+左/右方向键”快捷键即可调整层级。

通过这种方式,用户可以轻松完成文档结构的调整。

4. 快速导航当文档较长且层级较多时,用户可能需要快速定位到某一层级的标题。

win5_6MFC视图结构课件

win5_6MFC视图结构课件
● MDI的应用程序每次可以读写多个文件或文档,可以同 时对多个文档进行操作,可以有多个子窗口。
· 例如:Windows的Word
一、文档视结构概述
· SDI和MDI主要差别(程序员角度)
● SDI不需要生成CChildFrame类 ● SDI应用程序的CMainFrame类的基类为CFrameWnd ● MDI应用程序的CMainFrame类的基类为
· CView类首先要维护文档与视图之间的关联,它通 过CDocument* m_pDocument保护性成员变量记录 关联文档的指针,并提供CView::GetDocument接口 函数以使得应用程序可得到与视图关联的文档。而在 CView类的析构函数中,需将对应文档类视图列表 中 的本视图删除。
CDOCUMENT(1)
· CDocument(或 COleDocument)类支持用于存储 或控制程序数据的对象,并为程序员定义的文档类提 供基本功能。在"文档/视图"架构的MFC程序中,文 档是一个CDocument派生对象,它负责存储应用程 序的数据,并把这些信息提供给应用程序的其余部分。 CDocument类对文档的建立及归档提供支持并提供 了应用程序用于控制其数据的接口。
· CDocTemplate是一个抽象基类,它定义了 文档模板的基本处理函数接口。对一个单文 档界面程序,需使用单文档模板类 CSingleDocTemplate,而对于一个多文档 界面程序,需使用多文档模板类 CMultipleDocTemplate。
CDOCTEMPLATE(2)
· 文档模板挂接了文档、视图和框架窗口,使得它们得 以互相关联。通过文档模板,程序确定了创建或打开 一个文档时,以什么样的视图和框架窗口来显示。文 档模板依靠保存相互对应的文档、视图和框架窗口的 CRuntimeClass对象指针来实现上述挂接,这就是 文档模板类中的成员变量m_pDocClass、 m_pFrameClass、m_pViewClass的由来。

Pro_E上二次开发具有文档_视结构的应用程序

Pro_E上二次开发具有文档_视结构的应用程序

第17卷第9期2005年9月计算机辅助设计与图形学学报JOURNAL OF COMPU TER 2AIDED DESIGN &COMPU TER GRAPHICSVol 117,No 19Sep 1,2005 收稿日期:2004-11-19;修回日期:2005-01-04 基金项目:国家自然科学基金(50475162);总装预研项目(413181111)产品开发集锦Pro ΠE 上二次开发具有文档-视结构的应用程序王 恒 宁汝新 杜 龙 牟联常(北京理工大学机械与车辆工程学院 北京 100081)(wangheng @bit 1edu 1cn )摘要 为了避免当前Pro ΠE 二次开发中只能使用对话框的缺陷,满足开发功能较复杂、界面相对独立的应用程序的需要,提出了运用VC 和MFC ,利用Pro ΠToolkit 开发基于Pro ΠE 具有文档-视结构的应用程序的方法1详细论述了开发环境的设置、应用程序的结构和运行过程,以及开发中的关键技术1实例证明该方法正确、简便,既能保证应用程序与Pro ΠE 无缝交互,又具有相对独立的用户界面,且在程序开发中可以完全利用MFC 的强大功能和丰富资源1关键词 文档2视;Pro ΠE ;二次开发;MFC 中图法分类号 TP391172Customized Development of Document 2View Structured Application B ased on Pro ΠEWang Heng Ning Ruxin Du Long Mu Lianchang(School of Mechanical and Vehicular Engi neeri ng ,Beiji ng Instit ute of Technology ,Beiji ng 100081)Abstract In order to avoid the limitation that only dialogs can be used in the customized development based on Pro ΠE ,as well satisfy the requirement of customized development of complicated application sys 2tems ,a method on how to develop document 2view structured applications based on Pro ΠE through VC and MFC is proposed in this paper 1Furthermore ,the setting of the development environment ,the structure and the running process of application programs and the key technologies in development are given in details 1By giving an instance ,this method is proved to be correct and easy to use 1It also shows that the application systems developed by this method can not only interact with Pro ΠE seamlessly ,but also hold a relatively in 2dependent interface 1We may also see there is another advantage ,that the powerful function of MFC and VC and plenty of MFC resource can be totally and easily used in the development of customized applications 1K ey w ords document 2view ;Pro ΠE ;customized development ;MFC1 引 言Pro ΠE 作为一种功能强大的CAD ΠCAM 软件,在制造业的许多部门中得到广泛应用1但其作为通用软件,还不能很好地满足每个具体企业的独特需求1因此,为了满足使用者自身的特定任务,提高企业设计的规范性,减少重复性的劳动,基于Pro ΠE 的二次开发工作十分重要1目前,基于Pro ΠE 的二次开发基本上是在Pro ΠE 平台上创建一些对话框,利用对话框完成一定的工作[125],这对于需要基于Pro ΠE 二次开发且功能相对独立、操作较为复杂的应用程序(或模块)而言,则不尽如人意1本文总结长期的开发经验,提出了基于ProΠE二次开发具有文档-视结构应用程序的方法1文档-视结构是目前绝大多数应用程序的整体结构框架,它通过将用户数据和视图数据分开,为程序的编制和用户的操作带来了较多的好处[6],且能实现功能强大、复杂的程序编制12 ProΠE二次开发现状ProΠE提供的二次开发方法很多,通过编制程序进行开发的有ProΠToolkit、ProΠJlink和ProΠPro2 gram三种方法1其中ProΠToolkit是目前的主流开发方法,功能最为强大,能够实现其他开发方法不能实现的功能,故本文的论述以ProΠToolkit为主1 ProΠToolkit应用程序的开发有同步模式和异步模式两种1同步模式又分为DLL(Dynamically Linked Libraries)模式和多进程模式,异步模式又分为简单异步模式和全异步模式1由于DLL模式与ProΠE紧密集成且运行稳定,通常情况下采用同步模式DLL进行系统开发,本文所述方法均采用DLL模式[7]1尽管ProΠToolkit是PTC公司提供的纯C语言函数包,用C语言进行开发,但由于VC和MFC的功能和资源要比C语言强大且丰富很多,因此近年来,一些研究人员已经探索出用VC和MFC进行二次开发的方法,可以方便地使用MFC的资源和VC 的可视化界面进行高效率的程序开发[1]1例如创建对话框,连接数据库等功能1对话框的界面简单,且内容不丰富,仅适用于对ProΠE现有功能进行简单扩充或添加一些功能简单的子模块,不适用于复杂且功能相对独立的系统,无法为用户提供结构完整的界面1因此对于某些要求高的复杂系统应该使用具有文档-视结构的程序框架进行开发,但是采用同步DLL的开发模式中,DLL应用程序中并没有任何文档-视结构框架,且如何在ProΠE系统之上构建另外的文档2视结构也是难题1本文提出如何基于ProΠE,利用ProΠToolkit和MFC开发具有文档-视结构的应用程序13 文档-视结构应用程序的开发方法311 VC环境设置为了在VC环境下统一编译ProΠTool K it函数、Windows API函数和MFC函数,需要对VC610设置正确的环境参数,如下环境设置保证了文档-视结构应用程序的顺利编译,同时改正了文献[1]中的环境设置下,因无法避免参数的重复定义而产生47个warning的不足1(1)Project→Settings→CΠC++→Preprocess definitions:WIN32,DE BUG,WINDOWS,M BCS,USRDLL,PRO USE V AR ARG S,hypot=hypot,MS B L EFT,far=ptc far,huge=p huge,near=p near,AFX DLL;(2)Project→Settings→CΠC++→Precompiled Headers:Automatic use of precompiled headers;(3)Project→Settings→Link→G eneral→ObjectΠlibrarymodules:protk dllmd1lib prodev dllmd.lib wsock32.lib mpr.lib;(4)Project→Settings→Link→Input→Ignore libraries:libcmt1lib,msvcrtd1lib312 程序结构和运行过程标准的ProΠToolkit程序结构和运行过程如图1所示,系统以user initialize()为入口函数,user ter2 minate()为出口函数,程序体在这两者之间完成用户自定义功能1图1 一般的ProΠToolkit程序结构和运行过程与该标准的程序结构相比,为了实现具有文档-视结构的程序的开发,需要以如图2所示的程序结构进行开发1其中,程序启动首先定义全局变量theApp,此时重载theApp的初始化函数,在该函数中创建文档模板并实现加载,程序调用CMain2 Frame∷OnCreate()函数创建主框架1因此可在该函数中编写创建工具栏、状态栏以及设置窗口浮动特性等代码;然后才调用ProΠToolkit的user initial2 ize()函数注册菜单、定义菜单响应函数等;之后执行程序体,最后在注销此应用程序之前应该使用DestroyWindow()函数注销窗口131129期王 恒等:ProΠE上二次开发具有文档-视结构的应用程序313 关键技术(1)主窗口的创建时机如图2所示,主窗口需要在Pro ΠToolkit 程序启动的时候创建,即在Pro ΠE 中注册加载DLL 应用程序时创建;否则,如果在Pro ΠToolkit 程序完全启动后,通过在Pro ΠE 上加载的菜单项来创建主窗口,系统无法正确地获取当前资源句柄(即A f x Current 2ResourceHandle ==NULL ),将会导致Pro ΠE 非正常退出1图2 具有文档-视结构的Pro ΠToolkit应用程序结构和运行过程(2)主窗口的显示、隐藏和注销由于主窗口的创建是在应用程序启动时,但通常此时并不需要显示该窗口,因此主窗口的显示可以通过在Pro ΠE 上添加的自定义菜单项来完成1同理,主窗口会经常被关闭或重新显示,因此应该修改主窗口的OnClose ()函数,实现窗口的隐藏而不是注销1若确实需要注销主窗口,则可以添加窗口的注销函数,利用DestroyWindow ()来注销主窗口1(3)相关类的添加由于应用程序是通过VC 的向导创建的MFC DLL 工程,该工程中没有任何有关文档2视的类,因此需要手工添加相关类,包括CMyDoc ,CMyView ,CMainFrame 类1(4)相关资源的添加同理,DLL 工程不包括创建窗口、文档-视结构应用程序所需的资源,因此需手工添加,包括Menu ,Toolbar 和Icon ,它们的默认ID 为IDR MAINFRAM E 1简便可行的方法是利用MFC App 2Wizard 生成标准的MFC 的可执行程序,并拷贝其中的相关资源14 开发实例按照本文方法在Pro ΠE 上开发装配精度预分析系统,该系统采用具有文档-视结构的程序框架,其界面如图3右半部分所示,它在保证了与Pro ΠE 无缝交互的同时,又具有相对独立的界面框架、独立的文档数据和视图数据,因而保持了应用程序的独立性,且在程序开发中,CDocument ,CView ,CFrame 等类的所有函数、功能等均可方便调用1图3 示例界面5 结 论如何运用MFC 进行Pro ΠE 的二次开发得到解决后,基于Pro ΠE 的应用程序的功能和界面得到了很大程度的优化,但是局限于只能应用对话框进行开发,其功能和应用仍旧受到较大限制1本文方法较好地解决了这个问题,可以在Pro ΠE 上成功地开发出具有文档-视结构的应用程序,大大扩展了二次开发应用程序的适用面,在保持程序独立性的基础上,可以与Pro ΠE 进行紧密的无缝交互,并可以完全使用MFC 提供的强大功能和丰富资源,这对于较复杂应用系统的开发具有重要的应用价值1参 考 文 献[1]Wang Heng ,Ning Ruxin ,Zhang Xu ,et al 1Customized devel 2opment of Pro ΠE based on MFC and Visual C ++610[J ]1Journal of Computer Aided Design &Computer Graphics ,2004,16(6):869~872(in Chinese )(王 恒,宁汝新,张 旭,等1利用MFC 二次开发Pro ΠE [J ]1计算机辅助设计与图形学学报,2004,16(6):869~872)4112计算机辅助设计与图形学学报2005年[2]Zhong Yuan,Liu Shengqing,Luo Yang,et al1The technologyabout MFC dialog application in ProΠE[J]1Machinery,2003, 30(1):50~52(in Chinese)(钟 元,刘胜青,罗 阳,等1ProΠE调用MFC对话框技术[J]1机械,2003,30(1):50~52)[3]He Fei,Liu Z ijian1Technology of CAD system customized de2velopment based on ProΠE[J]1Computer Applications,2002, 22(11):123~125(in Chinese)(贺 菲,刘子建1基于ProΠE的CAD系统二次开发技术[J]1计算机应用,2002,22(11):123~125)[4]Xiao Y ing,Tong Shuiguang,Chen Min,et al1The develop2ment and research of the ProΠE32D standard part library based on Visual C++[J]1Mechanical Engineer,2001,31(11):22~24(in Chinese)(肖 颖,童水光,陈 敏,等1基于Visual C++的ProΠE三维标准件库的开发研究[J]1机械工程师,2001,31(11):22~24)[5]Zhu Chaokuan1Parametric design of multi2axis box based onProΠE[J]1Modular Machine Tool&Automatic Manufacturing Technology,2002,(10):35~37(in Chinese)(朱朝宽1基于ProΠE的多轴箱参数化设计[J]1组合机床与自动化加工技术,2002,(10):35~37)[6]David J Kruglinski,Scot Wingo,G eorge Shepherd1Inside Vi2sual C++[M]1Beijing:Hope Press,1999(in Chinese)([美]David J Kruglinski,Scot Wingo,G eorge Shepherd1希望图书创作室译1Visual C++610技术内幕[M]1北京:希望出版社,1999)[7]ProΠToolkit Wildfire User’s Guide[M]1Needham:ParametricTechnology Corporation,2002 王 恒 男,1975年生,博士,主要研究方向为CADΠCAM集成技术、虚拟制造技术1 宁汝新 女,1942年生,博士,教授,博士生导师,主要研究方向为先进制造技术1 杜 龙 男,1976年生,硕士,主要研究方向为虚拟装配1 牟联常 男,1980年生,硕士,主要研究方向为CADΠCAM集成技术151129期王 恒等:ProΠE上二次开发具有文档-视结构的应用程序。

mfc 程序框架

mfc 程序框架

mfc 程序框架
MFC(Microsoft Foundation Class Library)是微软提供的一个C++框架,主要用于开发Windows桌面应用程序。

以下是MFC程序的基本框架:
1. 应用程序启动过程:
应用程序的启动从main()函数开始,main()函数通过CWinApp类创建一
个应用程序对象,然后调用该对象的Run()函数进入消息循环。

2. 文档/视图结构:
MFC程序通常采用文档/视图结构,这种结构将应用程序的数据(文档)和数据的显示与修改(视图)分开。

在MFC中,框架对象、文档对象和视图
对象是通过一个单文档模板指针有机地组织在一起,并利用AddDocTemplate函数把这个单文档模板添加到文档模板中,从而把这三
个类组织成为一个整体。

3. 对话框和控件:
MFC程序可以使用对话框和控件来与用户交互。

对话框可以通过类向导创建,控件可以通过类向导添加到对话框中。

4. 事件处理:
MFC程序通过事件处理来响应用户的操作。

事件处理函数通常在类向导中
创建,并在函数中添加处理代码。

5. 资源管理:
MFC程序使用资源管理器来管理界面资源,包括对话框、控件等。

资源管
理器负责加载和卸载资源。

6. 数据库操作:
MFC程序可以通过MFC提供的数据库类来进行数据库操作,如CRowset 类、CRecordset类等。

7. 网络编程:
MFC程序也可以进行网络编程,通过MFC提供的网络类如CSocket类等。

以上是MFC程序的基本框架,具体实现会根据具体需求有所不同。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

}
4. 在CTESTView类的OnDraw()函数添加代码:
void CTESTView::OnDraw(CDC* pDC)
{
CTESTDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
BOOL Rectangle(int x1, int y1, int x2, int y2);
BOOL Rectangle(LPCRECT lpRect); (5)画椭圆
BOOL Ellipse(int x1, int y1, int x2, int y2);
BOOL Ellipse(LPCRECT lpRect); (6)获取客户区的大小
3. 在文档类中对数据成员初始化
return FALSE; // TODO: add reinitialization code here // (SDI documents will reuse this docum r=CRect(100,60,260,100);
s="同舟共济 自强不息";
return TRUE;
//合成红色 //合成黄色 //合成白色
POINT:MFC的结构类型,表示平面上的一个点,
数据成员是x和y COLORREF:32位整数类型,表示颜色 例如:
COLORREF C1=RGB(0, 0, 0)) COLORREF C2=RGB(255, 0, 0)) COLORREF C3=RGB(255, 255, 0)) COLORREF C4=RGB(2l(POINT point, COLORREF crColor); 说明:
例如:
COLORREF C1=RGB(0, 0, 0))
//合成黑色
COLORREF C2=RGB(255, 0, 0)) COLORREF C3=RGB(255, 255, 0)) COLORREF C4=RGB(255, 255, 255))
pDC->Rectangle(pDoc->r);
pDC->TextOut(110,70,pDoc->s);
} 说明: (1)ClassView有5个类和1个全局对象:
CAboutDlg类:about对话框类,由CDialog派生。 CMainFrame类:窗口框架类,由CFrameWnd派生 CTESTApp类:应用程序类,由CWinApp派生 CTESTDoc类:文档类,由CDocument派生 CTESTView类:视图类,由CView派生 theApp全局对象
第八章 文档/视图结构应用程序
8.1 文档/视图结构 8.2 图形与文字输出 8.3 定时器 8.4 鼠标和键盘消息处理 8.5 对话框 8.6 菜单设计 8.7 程序举例
8.1 文档/视图结构
文档:用于管理应用程序的数据 视图:用户界面,用于显示、打印文档中的数据
管理与用户的交互。 数据的管理与显示分离的思想简化了开发过程 文档/视图结构应用程序:
SDI MDI
【例8.1】在窗口中显示一个矩形框,框中显示“同舟共济 自强不息
工程名为 TEST
1. 生成SDI应用程序框架
BOOL CTESTDoc::OnNewDocument( {
2. 在CTESTDoc类中添加数据成员: if (!CDocument::OnNewDocument())
public: CRect r; CString s;
//合成黑色 //合成红色 //合成黄色 //合成白色
(3)画线 起点: CPoint MoveTo(int x,int y);
CPoint MoveTo(POINT point); 终点: BOOL LineTo(int x, int y);
BOOL LineTo(POINT point); (4)画矩形
void GetClientRect( LPRECT lpRect ) const;
【例8.2】改变窗口时,矩形框和文字总是显示在窗口的中央
void CTESTView::OnDraw(CDC* pDC) {
CTESTDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CRect a,b; int w=160; int h=40; GetClientRect(&a); b.left=(a.Width()-w)/2; b.top=(a.Height()-h)/2; b.right=b.left+w; b.bottom=b.top+h; pDC->Rectangle(b); pDC->TextOut(b.left+10,b.top+10,"同舟共济、自强不息!"); }
//重新绘制这个矩形区域。
InvalidateRect(矩形, FALSE) //原有内容保留,再绘制矩形区域。
(1)文字输出
BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
(2)画点
COLORREF SetPixel(int x, int y, COLORREF crColor);
(2)CRect描述一个矩形,有4个数据成员:
left、top、right和bottom。
(3)GetDocument() 返回值指向当前文档的指针。
示例:CTESTDoc* pDoc= GetDocument();
作用:让pDoc指向当前文档
(4)输出在OnDraw()中完成
pDC指向窗口中央的客户区对象
}
(5) OnDraw()的调用
➢自动调用:当窗口发生变化时
➢手工调用:调用Invalidate()和InvalidateRect()函数时
Invalidate(TRUE)
//擦除窗口原有的内容,重新绘制。
Invalidate(FALSE)
//窗口原有的内容保留,再进行绘制。
InvalidateRect(矩形, TRUE)
void CTESTView::OnDraw(CDC* pDC)
{
CTESTDoc* pDoc = GetDocument();
// 获得指向文档类对象的指针
ASSERT_VALID(pDoc);
// 检查pDoc是否有效,若无效结束程序
// TODO: add draw code for native data here
相关文档
最新文档