详细说明基于文档视图结构应用程序的构建,写出其各派生类的调用关系,并写出其主要关键的代码.越详越好

详细说明基于文档视图结构应用程序的构建,写出其各派生类的调用关系,并写出其主要关键的代码.越详越好,第1张

程序启动机制:

1从CFrameWnd类派生自己的框架窗口类 CMyFrameWnd

11 从CWinApp类派生自己的应用程序类CMyWinApp

重写 CWinApp成员虚函数InitInstance,在这个函数中

注册窗口类/创建窗口/显示窗口/刷新窗口

2 程序的执行流程

21 构造 theApp对象 执行 CWinApp类的构造函数

将theApp对象地址保存到 当前程序模块状态信息中

将theApp对象地址保存到 当前程序线程状态信息中

AfxGetThread/AfxGetApp - 返回theApp对象地址

22 进入入口函数WinMain,调用AfxWinMain

3AfxWinMain函数的内部执行流程

31 获取 应用程序类的全局对象 theApp的地址。

32 调用 应用程序类的成员虚函数InitApplication初始化应用

程序。

33 调用 应用程序类的成员虚函数InitInstance 注册窗口类,

创建并显示窗口

34 调用 应用程序类的成员虚函数Run实现消息循环

1)如果没消息调用应用程序类的成员虚函数OnIdle空闲

处理

2)调用 应用程序类的成员虚函数PumpMessage实现提取/

翻译/派发 消息

3)调用 应用程序类的成员虚函数ExitInstance实现善后处

二 窗口创建机制(2)

1 加载菜单

2 调用CreateEx函数

21 调用PreCreateWindow 设计并注册窗口类

211 调用AfxDeferRegisterClass设计窗口类

WNDCLASS wndcls;

wndclslpfnWndProc = DefWindowProc;//

调用 _AfxRegisterWithIcon,在函数内部调用

AfxRegisterClass,在函数内部调用WIN32 API函数

::RegisterClass 将窗口类成功注册到 *** 作系统中

22 调用AfxHookWindowCreate函数

221 利用SetWindowsHookEx 函数在程序中埋下一个类型为

WH_CBT的钩子

222 将 自己new的框架类对象地址(pFrame)保存到当前程序

线程信息中

23 调用windows API函数::CreateWindowEx创建窗口,马上执行

钩子处理函数

3 钩子处理函数

31 将窗口句柄 和 框架类对象 建立 一对一的绑定关系

32 将窗口处理函数 更改为 AfxWndProc(真正的处理函数)

三 消息映射机制的执行过程

1 利用当前窗口对象(pFrame)调用GetMessageMap获取本类静态变量

messageMap的地址pMessageMap。

2 利用pMessageMap第二个成员获取相应静态数组首地址,在静态

数组中查找消息ID对应处理函数地址,如果找到了执行4

3 如果没找到,获取父类静态变量地址并给pMessageMap赋值,如

果为NULL,停止循环,如果不为NULL,执行2

4 调用获取到的静态数组元素中最后一个成员(成员函数地址)

完成消息的处理。

四运行时类信息

1运行是类信息的作用

在程序运行过程中,可以获取对象的类信息,以及继承派生关系

2运行时类信息的使用

21自己的类必须从CObject派生

22类内添加声明宏 DECLARE_DYNAMIC

23类外添加实现宏 IMPLEMENT_DYNAMIC

3如何判断

利用CObject::IsKindOf判断对象是否属于该类

4数据结构

struct CRuntimeClass

{

LPCSTR m_lpszClassName;//类名称

int m_nObjectSize;//类的大小(sizeof)

UINT m_wSchema; //类的版本(0XFFFF)

CObject (PASCAL m_pfnCreateObject)();//用于动态创建机制,运行时类信息机制为NULL

CRuntimeClass m_pBaseClass;//

CRuntimeClass m_pNextClass; //为NULL

};

5RUNTIME_CLASS(theClass)

(CRuntimeClass)(&CAnimal::classCAnimal)//返回成员变量theClass的地址

有点乱,这确实不是三言两语就能解释清楚的,我看带着你走一下源程序还能勉强给你讲清楚,这样看,你绝对看不懂的啊。我也无能为力哦

单文档应用程序:单文档界面(SDI)应用程序

多文档应用程序:多文档界面 (MDI) 应用程序

区别:

1、窗口数量不同

单文档界面(SDI)应用程序:只有一个窗口

多文档界面 (MDI) 应用程序:有多个子窗口

2、同时处理多个窗体的方式不同

单文档界面(SDI)应用程序:不能同时处理多个窗体,要想同时处理多个窗体,需要打开应用程序的多个副本。需要不断的实例化多个Form,然后通过show()方法打开。

多文档界面 (MDI) 应用程序:可以同时显示多个文档,每个文档显示在各自的窗口中,MDI 应用程序中常有包含子菜单的“窗口”菜单项,用于在窗口或文档之间进行切换。

扩展资料

1、创建MDI父窗体

MDI 父窗体是包含 MDI 子窗口的窗体,子窗口是用户与 MDI 应用程序进行交互的副窗口,要将窗体指定为子窗口的 MDI 容器只需将窗体的IsMDIContainer 属性设置为 True,建议将 WindowState 属性设置为 Maximized,因为当父窗体最大化时 *** 作 MDI 子窗口最为容易。MDI 父窗体的边缘将采用系统颜色。

2、创建MDI子窗体

多文档界面 (MDI) 应用程序的基本元素是MDI 子窗体,因为它们是用户交互的中心。

例如:创建子窗体的代码如下:

FormnewMDIChild = new Form();

// 设置该窗体的父窗体

newMDIChildMdiParent= this;

// 显示新建窗体

newMDIChildShow();

参考资料:

百度百科 - MDI

答:

第一种:顺序结构

顺序结构表示程序中的各个 *** 作时按照它们在源代码中的排列顺序依次执行的,其流程如图所示。

图中的S1和S2表示;两个处理步骤,这些处理步骤可以是一个非转移 *** 作或多个非转移 *** 作,甚至可以是空 *** 作,也可以是三种基本 *** 作中的任意一种结构,整个顺序结构只有一个入口点a和一个出口点b。这种结构的特点是:程序从a出开始,按顺序执行所有 *** 作,知道出口b处,所以称为顺序结构。

第二种:选择结构 选择结构表示程序处理需要根据某个特定条件选择其中一个分支执行。选择结构有单选择、双选择、多选择。其流程如图所示。

第三种:循环结构 循环结构表示程序反复执行某个或某些 *** 作,直到满足特定条件时结束,循环结构有两种基本形式:当型循环和直到型循环,其流程如图所示。

1源程序文件的构成

要编写Java程序,首先应该知道Java程序文件中必须包括什么内容,Java程序的源程序文件结构如下:

package语句,0~1句,必须放在文件开始,作用是把当前文件放入所指向的包中。import语句,0~多句,必须放在所有类定义之前,用来引入标准类或已有类。public classDefinition,0~1句,文件名必须与类的类名完全相同。classDefinition,0~多句,类定义的个数不受限制。

interfaceDefinition,0~多句,接口定义的个数不受限制。Java程序的源代码文件要求包含三个要素:

1)以package开始的包声明语句,此句为可选。若有,且只能有一个package语句且只能是源程序文件的第一个语句,若没有,此文件将放到默认的当前目录下。

2)以import开始的类引入声明语句,数量可以是任意个。

3)classDefinition和interfaceDefinition分别代表类和接口的定义。由public开始的类定义只能有一个,且要求源程序文件名必须和public类名相同,Java语言对字符的大小写敏感,因此文件名相同意味着字母大小写也完全相同。如果源程序文件中有主方法main(),它应放在public类中。    这三个要素在程序中必须严格按上述顺序出现。

2类的构成

Java程序都是由类(class)所组成的,类的概念的产生是为了让程序语言能更清楚地表达出现实事物的本性。在Java中,类就是用于创建对象的模板,包含了特定对象集合的所有特性。Java类由两种不同的信息构成:属性和行为。

属性由一系列区别对象的数据组成,可用于确定属于类的对象的外观、状态和其他性质。在Java程序中,属性往往以类的成员变量形式出现。

行为指类对象对本身和其他对象所可以完成的事情,可以用于修改对象的属性,接收来自其他对象的信息和向其他要求执行任务的对象发送信息。在Java中,行为往往以一段小程序的形式出现,Java称这种小程序为“方法”(method)。统称为类的成员方法。

Java中类定义的语法形式为:

修饰符 class <类名> [extend<父类名>]{  type类变量1;type类变量2;

成员变量  修饰符 type<类方法名1>(参数列表){    type局

部变量;    方法体

}修饰符 type<类方法名2>(参数列表){     type局部变量;    方法体

}      成员方法}

其中class是Java的关键字,表明其后定义的是一个类。class前面的修饰符用来限定所定义的类的使用方式。类名是用户为该类起的名字,应该是一个合法的标识符。紧接着类定义语句的大括号之间的内容称为类主体。type指的是变量或方法的数据类型。类主体由成员变量和成员方法两部分组成。

以上所有提到或未提到的概念,在后面的章节中将详细为大家介绍。

3注释语句的添加

在开发Java程序的过程中,经常需要在适当的地方加上注释语句,以便其他人阅读

程序,一般来说,Java语言的源文件中,任何地方都可以加注释语句,一个好的程序应该在

其需要的地方适当地加上一些注释,以便于其他人阅读并理解程序。

注释语句有三种格式:

1)//注释内容     用于注释一行语句。

2)/ˇ注释内容ˇ/   用于注释一行或多行语句。

3)/ˇˇ注释内容ˇˇ/   用于注释一行或多行语句且注释语句中的内容可以通过使用Javadoc生成API文档,实现文档与程序同步实现的功能。

计算机的软件系统可分为两大类:系统软件和应用软件,虽然各自的用途不同,但他们的共同点是都存储在计算机存储器中,以某种格式编码书写的程序或数据。1、系统软件各种应用软件,虽然完成的工作各不相同,但它们都需要一些共同的基础 *** 作,例如都要从输入设备取得数据,向输出设备送出数据,向外存写数据,从外存读数据,对数据的常规管理,等等。这些基础工作也要由一系列指令来完成。人们把这些指令集中组织在一起,形成专门的软件,用来支持应用软件的运行,这种软件称为系统软件。系统软件是指控制和协调计算机及外部设备,支持应用软件开发和运行的系统,是无需用户干预的各种程序的集合,主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。一般来讲,系统软件包括 *** 作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具),是支持计算机系统正常运行并实现用户 *** 作的那部分软件。系统软件一般是在计算机系统购买时随机携带的,也可以根据需要另行安装。系统软件的主要特征是:与硬件有很强的交互性能对资源共享进行调度管理能解决并发 *** 作处理中存在的协调问题其中的数据结构复杂,外部接口多样化,便于用户反复使用2、应用软件应用软件(Application)是和系统软件相对应的,是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,分为应用软件包和用户程序。应用软件包是利用计算机解决某类问题而设计的程序的集合,多供用户使用。应用软件是为满足用户不同领域、不同问题的应用需求而提供的那部分软件。 它可以拓宽计算机系统的应用领域,放大硬件的功能。常用分类:办公室软件文书试算表程式投影片报告数学程式创建编辑器绘图程式基础数据库档案管理系统文本编辑器。互联网软件即时通讯软件电子邮件客户端网页浏览器客户端下载工具。多媒体软件媒体播放器图像编辑软件音讯编辑软件视讯编辑软件计算机辅助设计计算机游戏桌面排版。分析软件计算机代数系统统计软件数字计算计算机辅助工程设计。协作软件协作产品开发。商务软件会计软件企业工作流程分析客户关系管理Backoffice企业资源规划供应链管理产品生命周期管理。更多相关知识,请访问常见问题栏目!

以上就是关于详细说明基于文档/视图结构应用程序的构建,写出其各派生类的调用关系,并写出其主要关键的代码.越详越好全部的内容,包括:详细说明基于文档/视图结构应用程序的构建,写出其各派生类的调用关系,并写出其主要关键的代码.越详越好、单文档与多文档应用程序有何区别、结构化程序设计的三种基本结构是什么。各有什么特点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10211096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存