第三章 单文档应用程序

时间:2019-05-13 17:10:12下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《第三章 单文档应用程序》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《第三章 单文档应用程序》。

第一篇:第三章 单文档应用程序

第三章 单文档应用程序

在本学习情境中主要学习:(1)单文档应用框架(2)文档与视图

3.1 MFC消息处理

3.1.1事件驱动程序设计

事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的的用户用各种合理的顺序来安排程序的流程。对于需要用户交互的应用程序来说,事件驱动的程序设计有着过程驱动方法无法替代的优点。它是一种面向用户的程序设计方法,它在程序设计过程中除了完成所需功能之外,更多的考虑了用户可能的各种输入,并针对性的设计相应的处理程序。它是一种“被动”式程序设计方法,程序开始运行时,处于等待用户输入事件状态,然后取得事件并作出相应反应,处理完毕又返回并处于等待事件状态。它的框图如图1所示:

图1事件驱动程序模型

3.1.2 MFC的消息处理

在DOS应用程序下,可以通过getchar()、getch()等函数直接等待键盘输入,并直接向屏幕输出。而在Windows下,由于允许多个任务同时运行,应用程序的输入输出是由Windows来统一管理的。

Windows操作系统包括三个内核基本元件:GDI, KERNEL ,USER。其中GDI(图形设备接口)负责在屏幕上绘制像素、打印硬拷贝输出,绘制用户界面包括窗口、菜单、对话框等。系统内核KERNEL支持与操作系统密切相关的功能:如进程加载,文本切换、文件I/O,以及内存管理、线程管理等。USER为所有的用户界面对象提供支持,它用于接收和管理所有输入消息、系统消息并把它们发给相应的窗口的消息队列。消息队列是一个系统定义的内存块,用于临时存储消息;或是把消息直接发给窗口过程。每个窗口维护自己的消息队列,并从中取出消息,利用窗口函数进行处理。框图2如下:

图2 消息驱动模型

从消息的发送途径上看,消息分两种:队列消息和非队列消息。队列消息送到系统消息队列,然后到线程消息队列;非队列消息直接送给目的窗口过程。

Windows维护一个系统消息队列(System message queue),每个GUI线程有一个线程消息队列(Thread message queue)。

鼠标、键盘事件由鼠标或键盘驱动程序转换成输入消息并把消息放进系统消息队列,例如WM_MOUSEMOVE、WM_LBUTTONUP、WM_KEYDOWN、WM_CHAR等等。Windows每次从系统消息队列移走一个消息,确定它是送给哪个窗口的和这个窗口是由哪个线程创建的,然后,把它放进窗口创建线程的线程消息队列。线程消息队列接收送给该线程所创建窗口的消息。线程从消息队列取出消息,通过Windows把它送给适当的窗口过程来处理。

除了键盘、鼠标消息以外,队列消息还有WM_PAINT、WM_TIMER和WM_QUIT。这些队列消息以外的绝大多数消息是非队列消息。

通过消息映射,我们可以把消息和它的消息处理函数联系起来。VC++为我们提供了Class Wizard 来为用户添加一个消息映射关系,而用户只需编写该消息发生响应的函数即可。

从View菜单中选择“ClassWizard”命令,便可调出如图3所示的ClassWizard对话框,它一共分为五个选项卡,依次分别是消息映射、成员变量、自动化、ActiveX事件和类信息。最常用的是消息映射和成员变量两个选项卡,如果程序中使用了ActiveX控件,那么还需要使用ActiveX事件选项卡来添加事件处理函数,类信息选项卡可用来了解各个类的文件名、基类和资源等信息,自动化选项卡只有在编写OLE自动化服务器时才用得着。下面我们就来看看消息映射和成员变量两个选项卡的特点和用途。

消息映射选项卡主要用途是为选中的类添加消息处理函数。其中,Projects组合框用于选择Workspace中的一个工程,Class name组合框用于选择工程中的一个类。Objects IDs中列出了所选择的类的名称及属于它的一系列ID,对于CXXXView类来说,列出的ID基本上都是菜单命令,对于一个对话框类来说,列出的ID多数对应着对话框模板中的控件。

从Objects IDs选择不同的类名或ID后,右边的Messages列表框中的内容也会跟着改变,选中类名时,Messages列表框中会显示出所有该类能处理的标准Windows消息以及该类可以重载的成员函数,选中一个ID时,Messages列表框中会显示出这个ID对应的对象(菜单选项或控件)所能引发的命令消息和通知消息。在Messages列表框中选择一条消息(或一个可以重载的成员函数)后,如果该消息还没有相应的消息处理函数(或还未重载该成员函数),那么ClassWizard对话框右上角的Add Function按钮就会变为有效,提示我们可以添加一个消息处理函数(或重载该成员函数),按下Add Function按钮后,ClassWizard就会在所选的类中添加一个处理函数(为一个ID添加处理函数时,还会弹出一个对话框,要求输入函数名),并在Member funtions列表框中显示出刚添加的函数,在这个列表框中双击该函数名后,ClassWizard对话框将自动关闭,文本编辑器会定位在函数的实现代码处,这些代码及它在类定义中的声明都是由ClassWizard自动生成的。

图 3Class wizard 对话框

Member functions列表框并没有列出类的所有成员函数,而只是列出了消息处理函数和重载的成员函数,其中每个函数的左边都有一个小图标,如果小图标为“W”字样,表示该函数是一个消息处理函数,除了Add function按钮外,消息映射选项卡中还有三个按钮,其中Delete Function用来删除一个消息处理函数或重载的成员函数,但是此按钮只能删除函数在类定义中的声明,函数的实现代码还需要手工来删除;Edit Code按钮的用途相当于在Member functions中双击一个成员函数;Add Class按钮则可用于向工程中添加一个新的类。3.1.3 文档与视图

先利用Appwizard 来新建一个单文档工程。在SDI框架程序中,主要包含四个类:

主框架类:CMainFrame用于管理主程序窗口,从MFC 类的CFrameWnd派生。

应用类:CXXXApp负责初始化及程序结束前的整理工作,从MFC 类的CWinApp派生。

文档类:CXXXDoc负责存放程序数据和在磁盘上读写数据,从MFC 类的CDocment派生。

视图类:CXXXView负责数据的显示及处理用户的输入,从MFC类的CView派生。用户对话框类:CAboutDlg负责用户对话框的设置,从MFC类的CDialog类派生。

文档是存储的对象.文档类负责数据的维护,包括数据的读取、存储和修改,并将更改的数据通知相关视图,另外它还负责将数据存储到文件及从文件中读取数据。

文档是一种数据源,数据源有很多种,最常见的是磁盘文件,但它不必是一个磁盘文件,文档的数据源也可以来自串行口、网络或摄像机输入信号等。文档对象负责来自所有数据源的数据的管理。

视图类的作用是与用户交互。视图对象负责对保存在文挡对象中的数据以某种方式进行显示,并接受用户的输入,将这些输入交文挡类进行处理。

视图是数据的用户窗口,为用户提供了文档的可视的数据显示,它把文档的部分或全部内容在窗口中显示出来。视图还给用户提供了一个与文档中的数据交互的界面,它把用户的输入转化为对文档中数据的操作。每个文档都会有一个或多个视图显示,一个文档可以有多个不同的视图。比如,在Excel电子表格中,我们可以将数据以表格方式显示,也可以将数据以图表方式显示。一个视图既可以输出到窗口中,也可以输出到打印机上。

图 文档与视图关系

3.1.4 鼠标消息举例

我们先通过一个例子来说明如何用class wizard 来实现捕获鼠标消息,进行消息映射和定义消息处理函数.利用class wizard来设置消息选项。选择ClassName中的CXXXView,选择其中相对应的WM_LBUTTONDOWN,双击选中的消息,单击Edit Code 按纽,如图4所示,并增加相关代码,如图5所示。

图4 增加鼠标消息映射

图5 增加代码

图6 运行结果

3.1.4键盘消息举例

键盘的输入是从扫描码开始的,windows键盘驱动程序将这些扫描码转换成为与硬件无关的形式,即虚拟键码.WM_CHAR:此消息在键被按下时产生,通常用于处理非打印键中的按键消息.图7 在工程中增加相关变量

图8 增加变量Text

图9 初始化变量为空

图10 增加键盘的消息影射

图11 编写Onchar处理函数

图12 输出接收到的字符

图13 运行结果 为了能够实现输入字符的换行功能,在CXXXDoc类中增加一个用来计算行数的成员变量m_Line,如图14所示,并初始化变量m_Line,如图15所示。

图 增加成员变量

图15 初始化成员变量

为了保存字符串行的数据,定义一个字符串列表变量m_strList,如图16所示。

图16 定义字符串列表变量

修改CXXXView类中的OnChar函数,如下所示。

void CSDIView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){ // TODO: Add your message handler code here and/or call default

CSDIDoc *pDoc=GetDocument();ASSERT_VALID(pDoc);

} if(nChar==VK_RETURN){ pDoc->m_Line++;pDoc->m_strList.AddTail(pDoc->Text);pDoc->Text.Empty();

Invalidate();} else {

pDoc->Text+=nChar;

CClientDC dc(this);

TEXTMETRIC tm;

dc.GetTextMetrics(&tm);

int nLineHeight=tm.tmHeight+tm.tmExternalLeading;

dc.TextOut(0,pDoc->m_Line*nLineHeight,pDoc->Text);} CView::OnChar(nChar, nRepCnt, nFlags);为了保证能够将CXXXDoc类中m_strList的数据输出出来,增加一个DrawText函数,如图17所示和图18所示。

图17 在CXXXDoc类中增加成员函数

图18 增加DrawText函数

实现CXXXDoc类中的DrawText函数,如下所示。void CSDIDoc::DrawText(CDC *pDC){

TEXTMETRIC tm;

CString str;int line=0;

pDC->GetTextMetrics(&tm);

int nLineHeight=tm.tmHeight+tm.tmExternalLeading;

POSITION pos=m_strList.GetHeadPosition();for(;pos!=NULL;m_strList.GetNext(pos)){

str=m_strList.GetAt(pos);

pDC->TextOut(0,line*nLineHeight,str);

line++;} } 修改CXXXView类中的OnDraw函数,如下所示。

void CSDIView::OnDraw(CDC* pDC){ CSDIDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);

pDoc->DrawText(pDC);

// TODO: add draw code for native data here }

第二篇:Windows应用程序——画图教案

《Windows应用程序—画图》教案

西民中初一 邹政宏

教材分析

本节内容目的是使学生了解和掌握信息技术的基础知识,具有使用计算机工具进行简单图形绘制和图形处理的基础能力。

学情分析

授课对象为七年级学生。学生经过计算机基础知识和windows操作系统的学习,对计算机基本操作有了一定的了解。通过本节课的学习,大部分学生能用画图程序进行简单的图形绘制和图像处理,提高学生应用信息技术的能力。

教学目标

1.知识与技能

(1)学会启动与退出画图程序。

(2)认识画图窗口的组成和画图工具箱中的工具。

(3)能用画图程序画一幅图画。

2.过程与方法

(1)通过Windows 7附件程序的学习,让学生体验学习应用程序的方法。

(2)通过画图程序的学习,培养学生创造性探索和解决问题的能力。

3.情感、态度与价值观

培养学生良好的学习习惯和学习兴趣。

教学重点与难点

重点:

1、“画图”程序的启动。

2、熟悉“画图”程序工具箱中的工具。

难点:“画图”程序中工具的使用。

教学准备

多媒体课件、图片。

教学方法

讲授法、演练法、自主探究法

课时安排

一课时

教学过程

1、启动“画图”程序

问题:如何打开“画图”程序?(1)学生动手探索。(2)教师讲解并演示启动“画图”程序的操作步骤。

步骤:开始→程序→附件→画图

启动后的屏幕窗口如下图所示:

2、认识“画图”程序

(1)标题栏:它包含了程序的名称和图画的命名。

(2)菜单栏:有六个下拉式菜单。

(3)工具箱:有许多绘图工具,绘画时任选一项工具,选择工具后,讲鼠标移到绘图区,指针就变成工具的形状。

(4)绘图区:在该区作图、绘画。

(5)调色板:左面是交叉重叠的矩形,左上角的矩形显示当前前景色,右下角矩形显示当前背景色,右边有28种颜色供选择。

3、认识“画图”工具

(1)重点讲解

橡皮工具:可以擦除图面中不想要的部分

涂色工具:用前景色对封闭区填充。

喷枪工具:该工具由鼠标的拖动速度决定的,速度越们慢,斑点越密,速度越快,斑点越稀少。

文字工具:利用文字工具可以在图画上写字。

直线工具:利用它可以画直线、水平线、垂直线。

曲线工具:利用它可以画单弯头曲线、双弯头曲线。

铅笔工具:可以在绘图区内任意画线。

椭圆工具:可以画一些垂直或水平的椭圆环。

(2)简单讲解

剪切工具、选定工具、取色工具、放大镜、刷子工具、矩形、多边形 圆角矩形。

存盘:选择“文件”菜单下的“保存”命令, 将所绘制的图画保存磁盘上。退出画图程序:

方法一:单击画图窗口右侧的关闭按钮;

方法二:单击菜单中“文件”选项中的退出命令

三、课堂练习

(1)绘制学案上的“小房子”图。(2)学生作品展示。

五、课后作业

使用画图工具绘制一张节日贺卡图片。

第三篇:Windows应用程序——画图教案

《Windows XP应用程序—画图》教案

教材分析

本节内容为上海科技教育出版社出版的七年级信息技术教材第二单元第四小节《使用应用程序》,目的是使学生了解和掌握信息技术的基础知识,具有使用计算机工具进行图形绘制和图形处理的能力。

学情分析

授课对象为七年级学生。学生经过计算机基础知识和windows XP操作系统的学习,对计算机基本操作有了一定的了解。通过本节课的学习,大部分学生能用画图程序进行简单的图形绘制和图像处理,提高学生应用信息技术的能力。

教学目标

1.知识与技能

(1)学会启动与退出画图程序。

(2)认识画图窗口的组成和画图工具箱中的工具。

(3)能用画图程序画一幅图画。

2.过程与方法

(1)通过Windows XP附件程序的学习,让学生体验学习应用程序的方法。

(2)通过画图程序的学习,培养学生创造性探索和解决问题的能力。

3.情感、态度与价值观

培养学生良好的学习习惯和学习兴趣。

教学重点与难点

重点:

1、“画图”程序的启动。

2、熟悉“画图”程序工具箱中的工具。

难点:“画图”程序中工具的使用。

教学准备

多媒体课件、图片。

教学方法

讲授法、演练法、自主探究法

课时安排

一课时

教学过程

一、导入

回忆:同学们都上过美术课,都画过画,画画时大家都用过哪些工具呢?

学生回答„„。展示图片:

这两幅图是我用你们刚才说的这些工具来画的,只不过我是用电脑来画的,同学们这两幅图漂亮吗?学生回答„„。这两幅图是我用Windows XP系统自带的应用程序—画图程序来画的,同学们想不想学习这个画图程序呢?学生回答„„,好,这节课我就和大家一块来学习Windows XP应用程序—画图。

二、新课探究

1、启动“画图”程序

问题:如何打开“画图”程序?(1)学生动手探索。

(2)教师讲解并演示启动“画图”程序的操作步骤。

步骤:开始→程序→附件→画图

启动后的屏幕窗口如下图所示:

2、认识“画图”程序

(1)标题栏:它包含了程序的名称和图画的命名。(2)菜单栏:有六个下拉式菜单。

(3)工具箱:有许多绘图工具,绘画时任选一项工具,选择工具后,讲鼠标移到绘图区,指针就变成工具的形状。

(4)绘图区:在该区作图、绘画。

(5)调色板:左面是交叉重叠的矩形,左上角的矩形显示当前前景色,右下角矩形显示当前背景色,右边有28种颜色供选择。

3、认识“画图”工具

(1)重点讲解

橡皮工具:可以擦除图面中不想要的部分

涂色工具:用前景色对封闭区填充。

喷枪工具:该工具由鼠标的拖动速度决定的,速度越们慢,斑点越密,速度越快,斑点越稀少。

文字工具:利用文字工具可以在图画上写字。

直线工具:利用它可以画直线、水平线、垂直线。

曲线工具:利用它可以画单弯头曲线、双弯头曲线。

铅笔工具:可以在绘图区内任意画线。

椭圆工具:可以画一些垂直或水平的椭圆环。

(2)简单讲解

剪切工具、选定工具、取色工具、放大镜、刷子工具、矩形、多边形 圆角矩形。

4.实例:荷塘月色(教师演示)5.作品存盘退出:(讲解并演示)

存盘:选择“文件”菜单下的“保存”命令, 将所绘制的图画保存磁盘上。退出画图程序:

方法一:单击画图窗口右侧的关闭按钮;

方法二:单击菜单中“文件”选项中的退出命令

三、课堂练习

(1)绘制学案上的“小鸡吃米”图。(2)学生作品展示。

四、课堂小结

本节课主要学习了画图程序的启动与退出,画图窗口的组成以及画图工具箱中工具的使用。

五、课后作业

使用画图工具绘制一张圣诞贺卡图片。

六、课后反思

第四篇:Android应用程序开发-个人总结

《Android应用开发》个人总结报告

一、项目简介:

送祝福App是一款逢年过节为方便发送祝福信息的软件,并且介绍各种节日的相关情况。包含节日祝福短信,支持直接发送短信给好友,也可定时发送给好友,编写模版。为生活提供了便利。

二、个人在项目中承担的任务:

我是任务是整合成员负责的模块,把各个模块整合到一起,然后把主界面的效果做出来,主界面参考的是微信的界面

三、学习本门课程收获、体会及建议:

在本门课程中,我初步认识了安卓应用开发所需基本知识,比如安装体系结构,常用的控件以及API的使用方法,知道了安卓体系存储数据的方式。这一学期,安卓相关的知识自己掌握的不多,不过也透过安卓课程看到移动端应用的火热。这一个学期里,老师讲得比较细,自己单独下来练一个知识点了,也可以,不过当几个知识点的内容整合到一起,自己就凌乱了,自己的思路就不清晰。在期末项目中,我是任务是整合成员负责的模块,把各个模块整合到一起,然后把主界面的效果做出来,主界面参考的是微信的界面,由于时间和能力的限制,只完成了部分功能,功能没有完全实现。

第五篇:怎样解决iexplore.exe应用程序错误

作者:江西新华电脑学院

怎样解决iexplore.exe应用程序错误

最近观察到有很多用户上网时,系统经常报错:iexplore.exe-应用程序错误。分析了常见iexplore.exe 应用程序错误的原因后,发现主要是病毒木马影响,其次是浏览器加载项。

iexplore.exe应用程序错误的现象:浏览器是上网的最主要通道。目前,使用IE浏览器的人仍然是主流,国内流行的第三方浏览器也大多是IE内核。任何原因导致IE出错,都会导致上网浏览障碍。

比如很多网民浏览器频繁崩溃时会问:

(1)iexplore.exe应用程序错误

(2)iexplore.exe是什么进程可以结束吗

(3)iexplore.exe 遇到问题需要关闭

(4)iexplore.exe是什么进程

而浏览器崩溃时出错的提示往往是“iexplore.exe 应用程序错误”,“0x02e87a90”指令引用的“0x02e87a90”内存.该内存不能为“read”等等。

iexplore.exe应用程序错误的原因:情况主要有以下几种:

1:iexplore.exe会经常被病毒假冒或者病毒直接插入iexplore.exe进程,病毒木马程序的BUG会经常导致iexplore.exe应用程序错误。但显然,病毒木马作者会无视这一点。

2:病毒木马感染系统文件的过程中,采取了一些非主流的方式加载,这类方式非常不稳定,容易导致iexplore.exe的崩溃,出现iexplore.exe应用程序错误;最常见的也就是出现iexplore.exe 遇到问题需要关闭;

3:具体表现一般为“internet explorer遇到加载项需要关闭,我们对此引起的不便表示道歉.如果你正处于进程中,请提交„„ 等对话框。

4:一般的加载到iexplore.exe的病毒多为盗号木马,主要是针对大型网游和网银进行盗号;还有对淘宝支付宝帐号下手。除此之外,有些病毒木马还是下载器,中毒后,会下载大量其它木马。或者安装不需要的软件,或弹出广告。

5:除病毒之外的原因就是第三方厂商设计的浏览器加载项,一般称之为浏览器插件。插件的BUG,也会导致iexplore.exe应用程序错误。

工具/原料

a:金山毒霸2011

b:控制面板,IE选项

解决iexplore.exe应用程序错误的步骤/方法

方案一:采用金山毒霸最新版本查杀病毒,并修复系统错误。一般情况下不需要全盘查杀,只需要快速查杀,3-5分钟之后,按提示选择修复即可。

方案二:如果金山毒霸最新版本没有检查到病毒,但仍然有iexplore.exe应用程序错误的情况发生,应检查IE加载项。方法是启动控制面板,找到internet选项,高级页,点击管理加载项。将可能有影响的插件禁用。

若管理插件无效,还可以重置或重装IE。

注意事项:

浏览器故障通常是小问题,不要匆匆忙忙重装系统。绝大多数情况下,3-5分钟即可搞定。

2013-4-5

下载第三章 单文档应用程序word格式文档
下载第三章 单文档应用程序.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    《PHP应用程序技术》课程教学大纲

    四川水利职业技术学院信息工程系课程教学大纲 《PHP应用程序技术》教学大纲 一、课程目的 通过本课程的学习,课堂上先结合案例讲解PHP的基本语法等知识,再通过上机实践和课后......

    五子棋网络应用程序开发 课程设计

    网络应用程序开发报告 1 概述 游戏说明 五子棋在我国的历史可谓是源远流长,喜爱它的玩家也是大有人在,是很多人的娱乐首选,也是一种竞技项目。但很多的五子棋软件一般都是单机......

    Windows窗体应用程序基础教学大纲

    第1章 Windows窗体应用程序基础 1. 课程目标 Windows窗体可用于设计窗体和可视控件,以创建丰富的基于Windows的应用程序。 2. 回顾 无 3. 本章内容  了解窗体基础知识和常用......

    PHP程序员开发win32应用程序之梦

    PHP程序员开发win32应用程序之梦 相信做纯WEB开发的PHP程序员都会想过,要是PHP能开发windows本地应用程序多好,于是上网一查找出来的很多都是“PHP-GTK”的老文章,这东西好像已......

    用应用程序模拟键盘和鼠标按键

    用应用程序模拟键盘和鼠标按键在Windows大行其道的今天,windows界面程序受到广大用户的欢迎。对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制。有时,对于繁杂的,或重复......

    简单应用程序系统开发的心得与体会

    班级:物管1101班 姓名: 润物惠无声 学号:1102094028 第一次: 课程设计心得体会及总结 有关于数据库实验的心得体会,总的来说,受益匪浅。在这些天中,我们学到了很多东西,包括建表,导......

    java应用程序的开发小技巧[范文模版]

    java应用程序的开发小技巧假如你是一名Java开发者,正在开发和维护包含2000个类并使用了很多框架的应用程序。你要如何理解这些代码呢?老师说到整篇文章的重点在于,对项目进行必......

    将Android应用程序打包的方法

    选中项目右击ExportAndroidExport Android ApplicationNextNextCreate new keystore(创建新密钥) { Location:表示要将打包的项目放置的位置 Password:表示密码 Confirm:确......