- 1、本文档共93页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第12章 VISUAL C 开发环境简介
第12章 Visual C++开发环境简介 12.1 Windows编程模式 12.2 Visual C++可视化集成开发环境 12.3 MFC和应用程序框架 12.4 基于MFC程序设计的基本方法 习 题 十 二 12.1 Windows编程模式 Microsoft Windows 已经被软件设计人员和广大用户广泛接受,人们越来越体会到图形用户界面的优越性,因此,基于Windows风格的编程方法已经成为软件设计的一种有代表性的方法。 Windows操作系统是在DOS操作系统的基础上发展起来的。和DOS编程模式相比,Windows编程模式的主要特点是:多任务和多线程、先进的内存管理、事件驱动的消息处理机制、图形设备接口、基于资源的程序设计和动态连接。下边我们简要说明Windows编程模式的这些特点。 1.多任务和多线程 Windows是一个多任务操作系统,它提供了一次运行多个应用程序的能力。到目前为止,Windows的多任务操作系统主要有两种类型:Windows 3.x型(或称Win 16)和Windows 95型(或称Win 32)。 Windows 3.x的多任务是一种借助于每个应用程序的消息循环这种软件协议方式来实现的多任务,是一种有限的非抢先式的多任务。Windows 3.x管理所有的消息,并存放于系统的消息队列中。操作系统判断消息应归哪一个窗口去处理,再将消息发送给该窗口。每个应用程序窗口处于等待消息状态,有消息来则进行处理,处理完毕将控制权交给操作系统。在对消息进行处理时,对于用户用键盘或者鼠标输入的任何命令,Windows 3.x都不会理睬。如若用WORD装入一个文件时,其它程序都得等待文件I/O操作完成后才能获得响应。而且,一个应用程序切换到另一个应用程序时,需要较长的等待时间。各应用程序在取得消息和处理消息时是平等的,无优先级的,系统无法设置应用程序的优先级和时间片的大小。Windows 3.x是基于进程概念的。 Windows 95的多任务是一种抢先式多任务。例如,在用资源管理器复制一个文件的同时,用户还可以启动另外一个应用程序,如画图软件,而且随时都可以切换回资源管理器,查看文件复制进度,系统始终保持较好的响应和灵活性。Windows 95的抢先式多任务机制是基于线程概念的。调入内存准备执行的应用程序叫做进程。每个进程可以有多个线程。一个进程包含代码、数据和其它属于应用程序的资源。一个线程包含一组指令、相关的CPU寄存器值和一个堆栈。 在抢先式多任务操作系统中,系统在所有运行的所有线程之间对CPU时间进行共享,从而保证每个线程都能频繁的访问处理器,并且实现指令的连续执行。这样,每个线程都需要分配一个优先级,系统调度程序利用这种优先级来决定哪一时刻该运行哪一个线程。优先级高的线程可以中断当前线程的执行。同一优先级的线程通过时间片来调度。一个线程处于以下三种状态之一:正在执行、挂起和准备运行。 2.先进的内存管理 对于各种操作系统和开发平台来说,内存管理是一个非常重要的问题。Windows操作系统有两种形式的内存管理函数:局部的和全局的。 在Win 16下,全局内存管理函数从物理内存中分配一段,然后返回一个句柄值。全局内存对所有的应用程序都是可见的,局部内存管理则是从64 KB的段内分配内存并返回所分配内存的16位偏移量。 在Win 32下,局部内存管理函数和全局内存管理函数基本相同,但是Win 32引入了连续32位内存管理概念。在Win 32中,每个进程都有其特有的32位虚拟地址空间,该地址空间最大可达4 GB。如图12.1所示,低端内存的2 GB是用户可用的,高端内存的2 GB为内核保留。其中,最高的1 GB用于VxD、内存管理和文件系统;下面的1 GB用于共享的Win 32 DLL、内存映射文件和共享内存区域。虚拟地址空间是指进程所使用的虚拟地址空间,并不代表内存的实际物理位置。操作系统为每个进程维护一个映射表,根据该映射表将虚拟地址映射到真正的物理位置处(RAM或者交换页文件中)。 3.事件驱动的消息处理机制 当用户用C语言编写DOS应用程序时,程序中必须要有一个main函数。在main函数中,如果需要进行人机交互,例如需要用户从键盘输入数据时,或者需要使用操作系统提供的某个功能时,程序设计的常规方法是调用C语言提供的相应函数,如getchar函数。 在Windows操作系统运行程序时,将首先调用程序中的WinMain函数。因此,Windows应用程序中必须要有一个WinMain函数。WinMain函数要完成的一个最主要的任务,就是要创建应用程序的主窗口。应用程序的主窗口中必须包含用来处理Windows操作系统
文档评论(0)