欢迎来到天天文库
浏览记录
ID:41033413
大小:149.00 KB
页数:21页
时间:2019-08-14
《VC++讲义第09单元 WINDOWS编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第9单元WINDOWS编程-194-第9单元WINDOWS编程教学目标介绍WINDOWS编程的基本思想和MFC程序的基本结构。学习要求理解WINDOWS的基本编程思想,特别是其消息传递机制,弄清MFC程序的组成及各部分的作用。授课内容MicrosoftWindows是广泛应用的台式机计算机操作系统,具有图形用户界面和多任务、多窗口等特点。目前Windows已成为微机上的主流操作系统,几乎一统天下,在Windows平台上进行软件开发也已成为程序设计的主流。9.1WINDOWS编程的基本思想应用程序Windows取消息消息队列键盘消息处理消息鼠标消息其他消息图9-1事件驱
2、动原理Windows编程使用事件驱动的程序设计思想。在事件驱动的程序结构中,程序的控制流程不再由事件的预定发生顺序来决定,而是由实际运行时各种事件的实际发生来触发,而事件的发生可能是随机的、不确定的,并没有预定的顺序。事件驱动的程序允许用户用各种合理的顺序来安排程序的流程。对于需要用户交互的应用程序来说,事件驱动的程序设计有着传统程序设计方法无法替代的优点。事件驱动是一种面向用户的程序设计方法,在程序设计过程中除了完成所需要的程序功能之外,更多的考虑了用户可能的各种输入(消息),并有针对性地设计相应的处理程序。事件驱动程序设计也是一种“被动”9第9单元WINDOWS编
3、程-194-式的程序设计方法,程序开始运行时,处于等待消息状态,然后取得消息并对其作出相应反应,处理完毕后又返回处于等待消息的状态。使用事件驱动原理的程序的工作流程如图9-1所示。事件驱动围绕着消息的产生与处理展开,事件驱动是靠消息循环机制来实现的。消息是一种报告有关事件发生的通知。Windows应用程序的消息来源有以下四种:(1)输入消息:包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由应用程序来处理消息。(2)控制消息:用来与Windows的控制对象,如列表框、按钮、检查框等进行双向通信。当用户在列表框中
4、改动当前选择或改变了检查框的状态时发出此类消息。这类消息一般不经过应用程序消息队列,而是直接发送到控制对象上去。(3)系统消息:对程序化的事件或系统时钟中断作出反应。一些系统消息,象DDE消息(动态数据交换消息)要通过Windows的系统消息队列,而有的则不通过系统消息队列而直接送入应用程序的消息队列,如创建窗口消息。(4)用户消息:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分内部处理。9.2MFC编程Microsoft提供了一个基础类库MFC(MicrosoftFoundationClass),其中包含用来开发C++应用程序和Windows应
5、用程序的一组类。这些类用来表示窗口、对话框、设备上下文、公共GDI对象如画笔、调色板、控制框和其他标准的Windows部件,封装了大部分的WindowsAPI(ApplicationProgrammingInterface:应用程序接口)。使用MFC,可以大大简化Windows编程工作。MFC中的类可分为两种:CObject类的派生类及非CObject派生类。非CObject派生类数量不多,但大都很常用。几个常用的非CObject派生类如CTime,CTimeSpan,CString和CFile已分别在第7单元和第8单元中介绍过。CObject派生类的基本特征为:支持
6、序列化(Serialize,应用见第13单元)、运行时类信息访问(Dynamic,应用见第12单元)、对象诊断输出(参看10.6.4:“CObject::Dump()成员函数”)和与集合类兼容(参看12.7:“集合类”)等。MFC将Windows应用程序从开始运行、消息传递到结束运行所需的各步骤均封装在CWinApp类中,CWinApp类表示MFC应用程序的应用对象。CWinApp类从CObject类的子类CWinThread类(定义MFC内的线程行为)派生。一个MFC应用程序必须有且只能有一个从WinApp类派生的全局应用程序对象,此对象在运行时刻控制应用程序中所有
7、其他对象的活动。典型的Windows应用程序结构有以下四种:(1)控制台应用程序:在本教程第1单元到第8单元介绍的所有程序均为控制台应用程序。控制台应用程序结构简单,可以不使用MFC类库。(2)9第9单元WINDOWS编程-194-基于框架窗口的应用程序:某些应用程序仅需最小的用户界面和简单的窗口结构,这时可使用基于框架窗口的方案。在此方案中,主应用程序窗口为框架窗口,CFrameWnd派生类对象附属于应用程序的CWinApp派生类对象的m_pMainWnd成员。第9单元到第11单元的例题程序均为基于框架窗口的程序。(1)基于对话框的应用程序:基于对
此文档下载收益归作者所有