01绪论.docx
- 文档编号:30489156
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:28
- 大小:267.78KB
01绪论.docx
《01绪论.docx》由会员分享,可在线阅读,更多相关《01绪论.docx(28页珍藏版)》请在冰豆网上搜索。
01绪论
第1章绪论
Windows是PC机的主流操作系统,具有流行的图形用户界面,其图形子系统经历了GDI、GDI+和WPF等三个发展阶段。
.NET是微软所提倡的一种跨语言、跨平台、面向组件的新技术,由包含运行环境与类库的.NET框架和应用程序开发平台VisualStudio两部分组成,前者是新版Windows操作系统WindowsVista和Windows7的核心,后者则是本书所使用的编程环境。
Java、C#、VisualBasic和VisualC++等是Windows的主要编程语言和工具,其中,除了Java是Sun/Oracle公司的产品外,其余都由微软公司的开发平台VisualStudio所提供。
Java是网络编程的首选、C#是.NET编程的首选、VisualC++的MFC则是编写大型和系统Windows程序的传统工具。
本书主要介绍使用VisualC++的MFC和VisualC#编写传统和.NET的具有图形用户界面的Windows应用程序。
MFC是一种应用程序框架,是对WindowsAPI的C++类封装,还提供了方便的消息映射机制和有用的文档/视图架构。
C#则是微软专门为.NET开发的一种类似于Java的程序设计高级语言,具有简单、现代、面向对象和类型安全等特点。
本章先介绍操作系统的发展和图形用户界面的组成,再讨论Windows的特点、构成和主要版本及Windows图形子系统的发展,接着简介.NET技术中的.NET框架和VisualStudio,最后给出Windows编程的常用工具和选择。
1.1操作系统与图形用户界面
操作系统经历了控制面板、字符界面、图形界面、多媒体界面等多个发展阶段。
图形用户界面由图形显示设备和指示跟踪设备构成,图形界面元素包括窗口、菜单、工具条、功能区、对话框、图标和各种控件等。
Windows的图形子系统,经历了GDI、GDI+和WPF等三个发展阶段。
1.1.1操作系统及其发展
操作系统(OperatingSystem,OS)是计算机硬件和用户之间的接口,负责管理和协调计算机资源的活动和分配,参见图1-1。
最早的计算机没有操作系统,使用控制面板进行手工操作。
有了操作系统后,又经历了批处理、多任务和分布式等多个发展阶段。
图1-1操作系统
操作系统的用户界面(UserInterface,UI),从简单原始的字符界面,发展到直观易用的图形界面,再到人性化的多媒体界面,目前正向智能感知、无处不在的普适计算(PervasiveComputing)的方向发展,参见图1-2。
图1-2操作系统的发展
1.1.2图形用户界面
图形用户界面(GraphicalUserInterface,GUI)是当前各主流操作系统的标准构件。
GUI是计算机的一种人机接口,由图形显示设备(屏幕、投影仪等)和指示跟踪设备(鼠标、跟踪球、光笔/手写笔、[单点/多点触控的]触摸屏等)组成,用户可通过指示设备来操作图形设备上的界面元素(窗口、菜单、工具条、功能区、对话框、图标、各种控件等)以完成各种工作。
与DOS(DiskOperatingSystem,磁盘操作系统)和原始Unix等基于命令行的字符界面的旧式OS相比,GUI的优点有:
形象直观、使用简单、操作方便、人性化、不需记忆各种命令和参数、应用软件基本功能的操作一致或相似、有大量API(和类库)供程序员调用。
下面列出GUI的发展简史:
●1950年MIT(麻省理工学院)的林肯实验室推出CRT显示器。
●1963年DouglasEngelbart发明鼠标,1968年他又推出视窗与人机界面。
●1972年AlanKay设计出面向对象的Smalltalk语言,首创下拉式菜单,提出GUI概念。
●1973年Xerox(施乐)公司的PARC(PaloAltoResearchCenter,帕洛阿尔托研究中心)的CharlesP.Thacker和ButlerLampson设计出具有图形用户界面的原型机Alto(男高音/女低音)。
●1982年美国的多伦多大学和贝尔实验室发明了多点触控屏幕。
●1984年Apple公司(受Alto的启发)推出Macintosh(胶布雨衣)计算机,率先在商品微机中引入图形用户界面。
●1985年MIT设计出Unix的图形用户界面X-Window。
●1985年Microsoft公司(仿照Macintosh)推出PC机DOS操作系统的图形用户界面Windows;1990年推出的Windows3.0获得成功;1993年推出基于微内核结构的独立操作系统WindowsNT。
●1995年5月微软推出的Windows95中,增加了任务栏和可视主题(visualtheme)——一种包含图形外观细节的预置包,用于定制操作系统、部件集(widgetset)或窗口管理器的外表体验(lookandfeel)。
●1998年和1999年分别发布了由MathiasEttrich和GNU成员开发的运行于Unix以及Linux、FreeBSD等类Unix操作系统上的自由开源桌面环境(GUI)——KDE(KDesktopEnvironment,K桌面环境)和GNOME(TheGNUNetworkObjectModelEnvironment,GNU网络对象模型环境)。
●2001年3月24日推出MacOSX(第10版),引入全新的Aqua(水/溶液/浅绿色)GUI,具有明快的颜色、半透明和光反射的效果、小水滴般的元素、果冻式的按钮等。
●2006年11月8日微软推出的WindowsVista中,包含了(似MacOSXAqua的)Aero(气体/航空/飞行)新用户界面,具有兼具专业感及透明感的磨砂玻璃外观、圆滑的窗口动画、Flip3D窗口等角排列方式、即时缩略图、字体更清晰边缘更平滑的ClearType新字体。
此外,Vista还引入了新型图形子系统WPF。
●2006年11月30日微软在其推出的Office2007中,使用了流畅用户界面(FluentUserInterface),其主体是功能区(ribbon,缎带)——一种用于替代传统的菜单、工具条工具条和用户对话框的窗体。
功能区UI也被用于Windows7的画图和写字板等其他软件中。
功能区的雏形是1995年NickBradbury为BorlandDelphi开发的网页编辑器HomeSite中的选卡式工具条(tabbedtoolbars),1997年Nick带着HomeSite加入了Allaire公司,2001年Macromedia公司并购了Allaire,并在其DreamweaverMX软件中使用了选卡式工具条,2005年Macromedia又被Adobe公司并购了。
●2007年苹果发表了应用多点触控技术的产品iPhone与iPodtouch,2010年4月3日又推出了支持多点触控技术的iPad系列产品。
1.2Windows
Windows(视窗)是Microsoft(微软)公司为PC(PersonalComputer,个人计算机)机开发的具有图形用户界面的多任务操作系统,占有近90%的市场份额。
1.2.1发展历程
早期的Windows并不是一个独立的操作系统,而只是DOS的一个补丁程序。
最初的Windows1.0(于1985年11月20日推出)和2.0,运行于16位的286PC机上,又慢又差,被业界所唾弃。
随着386CPU的推出和微软公司的不断改进,1990年推出的(16位)Windows3.0获得了巨大的成功,后来推出的带浏览器IE的(32位)Windows95/98也得到广泛好评。
但2000年推出的面向家用、强调多媒体的WindowsMe(MillenniumEdition,千年版),由于笨拙、差慢,导致失败,传统DOS外挂GUI模块型的Windows也走到了尽头。
1993年微软开发出基于微内核结构的32位独立操作系统WindowsNT(NewTechnology,新技术),2000年和2001年分别推出基于NT的Windows2000和WindowsXP(eXPerience,体验),大受好评,被广泛使用。
2006年底,微软推出(同样基于NT)的WindowsVista(远景/街景/展望)内含.NET框架和DirectX模块、还引入了全新的WPF图形子系统,具有华丽的Aero用户界面。
但由于Vista对硬件要求高、兼容性差、且速度慢,惨招失败。
微软痛定思痛,对Vista进行了大量的改进,于2009年秋推出了运行效率高、对硬件要求低、而且兼容性好的Windows7,获得了一致好评。
将于2012年推出Windows8引入Metro(地铁)卡片界面,支持ARMCPU和多点触控,同时支持PC机、平版电脑和智能手机,意欲改变Windows操作系统在平版电脑和智能手机领域的落后状态。
1.2.2主要版本
表1-1列出了Windows的主要版本,包括发布时间、商品名、系统内核版本号、主要特点等基本内容。
其中,Windows的内核分成两大类:
传统的外挂内核(1.0~4.9)和现代的微内核(NT3.1~6.1),前者已被淘汰,新版Windows(如2000、XP、Vista、7、8)都基于后者。
表1-1Windows的主要版本
发布时间
商品名
版本号
位数
说明
1985年11月
Windows1.0
1.0
16
GUI、GDI、16位、差/慢
1987年11月
Windows2.0
2.0
16
1990年5月
Windows3.0
3.0
16
成功
1992年3月
Windows3.1
3.1
16
多媒体
1992年10月
WindowsforWorkgroups3.1
3.1
16
工作组,本地网
1993年7月
WindowsNT3.1
NT3.1
32
独立、32位、微内核
1994年9月
WindowsNT3.5
NT3.5
32
1995年5月
Windows95
4.0
16/32
32位,IE,任务栏、可视主题
1996年7月
WindowsNT4.0
NT4.0
32
1998年6月
Windows98
4.1
32
2000年2月
Windows2000
NT5.0
32
NT+98,流媒体
2000年10月
WindowsMe
4.9
32
家用,多媒体,失败
2001年10月
WindowsXP
NT5.1
32
GDI+、功能强大,成功
2003年3月
WindowsXP64位版
NT5.2
64
支持IA-64
2003年4月
WindowsServer2003
NT5.2
32/64
服务器版、支持x64和IA-64
2005年4月
WindowsXP专业x64位版
NT5.2
64
支持x64
2006年11月
WindowsVista
NT6.0
32/64
.NET框架、WPF、AeroGUI、支持x64和多核,对硬件要求高、兼容性差、速度慢,失败
2008年2月
WindowsServer2008
NT6.0
32/64
服务器版、支持x64和IA-64
2009年10月
Windows7
NT6.1
32/64
基于Vista、高效、对硬件要求较低、兼容性好
2012年?
月
Windows8
NT6.2
32/64
支持ARMCPU/多点触控/Metro界面、同时支持PC机/平版电脑/智能手机
为了适应客户端和服务器计算机的不同的需要,Windows操作系统又被划分成普通版与服务器版两大类,前者用Windows命名,后者则用WindowsServer来命名。
随着64位CPU的推出和普及,新版的Windows操作系统一般包含x86、x64和IA64三个版本。
其中的IA64,由于硬件贵且兼容性差,用户很少。
此外,Windows还有用于嵌入式和移动设备的WindowsCE(EmbeddedCompact,嵌入式小型)、PocketPC和WindowsMobile,但是因其结构老旧、系统臃肿、功能落后、性能差,用户很少。
不过,微软于2010年10月11日推出的,用于智能手机的操作系统WindowsPhone7,有所改进。
而计划于明年推出的Windows8,将引入Metro界面、优化多点触控,并增加了对ARMCPU的支持、可大大改进对平版电脑和智能手机的支持。
另外,每个Windows版本(version)在销售时,针对不同用户的需求,按其所提供功能的多少,又被分成若干具体的版本(edition)。
如WindowsXP主要有初级版(StarterEdition)、家庭版(HomeEdition)、专业版(ProfessionalEdition)和媒体中心版(MediaCenterEdition),Windows7则有初级(Starter)版、家庭普通(HomeBasic)版、家庭高级(HomePremium)版、专业(Professional)版、企业(Enterprise)版和旗舰(Ultimate)版等六种版本。
1.2.3主要特点
Windows的主要特点有:
面向对象、消息/事件驱动、多任务、与设备无关的图形设备接口。
Windows编程也有与此对应的特点:
1.面向对象
在Windows中,窗口、菜单、事件皆是对象,而对话框与各种控件只是一些特殊的窗口,所以对界面元素的操作和消息/事件的处理都涉及到对象。
这些对象的属性和操作,由API的数据结构和函数(或由MFC和.NET框架中的类)提供。
因此,Windows编程一般都采用面向对象的程序设计(ObjectOrientedProgramming,OOP)语言工具和类库,如VisualC++的MFC和VisualC#与.NET的框架类库FCL。
2.消息/事件驱动
在字符界面型OS(如DOS)中执行应用程序时,程序必须取得CPU的控制权,整个运行过程都由程序本身来控制,称之为过程驱动的程序结构。
而对GUI型OS(如Windows),情形则完全不同:
在应用程序的运行过程中,大部分时间是由OS掌握控制权,只是在发生用户或系统事件(如移动鼠标、按下键盘、选择菜单,或发生时钟、通信事件)后,OS才调用程序中的对应事件处理模块,所以称之为事件驱动的程序结构。
在GUI型OS中,事件发生后会产生对应的消息,消息提供了应用程序与OS之间、应用程序与应用程序之间的通信手段;多数应用程序的大部分代码都是用来响应和处理这些消息,所以也可称之为消息驱动的程序结构。
Windows维护着一个系统消息队列,Windows也为每个应用程序创建一个应用消息队列,事件所产生的消息,首先进入系统消息队列,然后再被传送到对应的应用消息队列,最后才被发送到消息所对应的窗口,参见图1-3。
图1-3Windows消息处理
3.资源共享与数据交换
操作系统负责计算机的资源管理,资源包括:
CPU、内存、I/O设备等。
标准的MS-DOS程序在运行时,可独占计算机的所有资源。
但由于Windows是一种(抢先式)多任务操作系统,所以Windows应用程序必须和正在运行的其他程序共享这些资源。
因此在进行Windows程序设计时,必须时刻记住资源共享这一多任务OS的特点,以避免耗尽资源而造成系统死机。
多任务操作系统Windows提供了多种手段在应用程序与系统之间、应用程序与应用程序之间进行数据交换与共享,如剪接板(Clipboard)和动态数据交换(DynamicDataExchange,DDE)。
4.与设备无关的GDI
Windows为应用程序提供了丰富的与设备无关API,免去了为不同的I/O设备编写软件的不同版本之烦恼。
如利用与设备无关的GDI,应用程序使用同一函数,可在不同的显卡、打印机和显示器上输出同一个图形。
1.2.4系统构成
内核、用户和GDI为传统Windows的三大子系统(subsystem)。
内核(Kernel)负责内存和进程管理、数据I/O和中断处理等;用户(User)负责界面的窗口管理和消息处理等;GDI(GraphicsDeviceInterface,图形设备接口)则负责与设备无关的图形绘制和文本显示等。
它们所对应的系统文件分别为Kernal32.dll、User32.dll和Gdi32.dll。
WindowsNT由内核模式(KernelMode)和用户模式(UserMode)两层构成,内核模式包括硬件抽象层(HardwareAbstractionLayer,HAL)、驱动程序、微内核(microkernel)和若干执行程序(executive)等,用户模式则包括系统支持进程、服务进程、应用程序和环境子系统等,参见图1-4。
在Windows操作系统的新版本WindowsVista和Windows7中,又引入了.NET框架、DirectX、WPF图形子系统等新内容。
图1-4WindowsNT架构(其中的彩色部分为执行程序)
Lsass=Localsecurityauthenticationserver,本地安全验证服务器
POSIX=PortableOperatingSystemInterface(forUniX),(Unix的)可移植操作系统界面
DLL=DynamicLinkLibraries,动态链接库
1.2.5图形子系统
Windows的图形子系统经历了GDI、GDI+和WPF三个发展阶段。
1.GDI
传统的GDI(GraphicsDeviceInterface,图形设备接口)是微软随Windows1.0(1985年11月)推出的Windows基本图形子系统,用于与显卡和显示设备无关的图形界面编程,支持WYSIWYG(WhatYouSeeIsWhatYouGet,所见即所得)。
2.GDI+
新式的GDI+是随WindowsXP(2001年10月)推出的GDI的改进版,增加了α混色、渐变画刷、样条曲线、矩阵变换、图像处理、持久路径等新功能,GDI+也是.NET框架中Windows窗体使用的图形子系统。
3.WPF
随WindowsVista和.NET框架3.0(2006年11月)微软又推出了全新的Windows图形子系统WPF(WindowsPresentationFoundation,视窗展示基础),它统一了桌面和浏览器等客户端应用程序的图形界面,基于DirectX和.NET框架,采用声明式XAML进行界面设计,是Windows的下一代GUI显示系统。
XAML(eXtensibleApplicationMarkupLanguage,可扩展应用程序标记语言)是一种基于XML(eXtensibleMarkupLanguage,可扩展标记语言,一种由万维网协会定义的通用数据描述语言)的用户界面标记语言,用于定义UI元素、数据绑定、事件和其他特性。
1.3.NET
.NET(网络)是微软提倡的一种操作系统新技术,由(包含运行环境和类库的).NET框架和对应的应用程序开发平台VisualStudio这两部分组成。
本节只对.NET技术作一个简单的介绍,更为详细的介绍将在第16章中进行。
1.3.1.NET框架
.NET框架(.NETFramework)是微软公司为了与Sun/Oracle公司的Java(EE)竞争,于2000年6月提出来的一种新的跨语言、跨平台、面向组件的操作系统环境,适用于Web服务(Webservices)和因特网(Internet)分布式应用程序的生成、部署和运行。
.NET框架也是WindowsVista、Windows7和Windows8等新版Windows操作系统的核心部件。
2002年2月微软推出了.NET框架的1.0版,2003年5月推出了1.1,2005年10月推出了2.0,2006年11月6日推出了3.0、2007年11月16日推出了3.5、2008年8月11日推出了3.5SP1、2010年4月12日推出了4.0,.NET框架的4.5版将于2012年随Windows8一起推出。
.NET框架由运行环境CLR和类库FCL两个主要部分组成,参见图1-5。
1.公共语言运行库
CLR(CommonLanguageRuntime,公共语言运行库)在组件的运行时和开发时的操作中都起着很大作用:
●
图1-5.NET框架
在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。
●在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单。
特别是反射等功能显著减少了开发人员为将业务逻辑转变为可重用组件而必须编写的代码量。
为了程序的安全有效运行,CLR提供了自动内存分配和垃圾内存回收功能,即内存的使用不再像C/C++由程序员负责,而是似Java由系统代为管理。
为了区别于传统的Windows运行环境,一般称在CLR环境中运行的.NET程序为托管(managed)应用程序,而称传统的Windows应用程序称为非托管应用程序或本地(local)应用程序。
CLR是CLI(CommonLanguageInfrastructure,公共语言基础设施)在Windows平台上的一种实现。
CLI包含CTS(CommonTypeSystem,公共类型系统)和CIL(CommonIntermediateLanguage,公共中间语言)两个主要组成部分。
其中的CLI已经成为ECMA(EuropeanComputerManufacturersAssociation,欧洲计算机厂商协会)标准(ECMA-335)和ISO(InternationalOrganizationforStandardization,国际标准化组织)标准(ISO/IEC23271)。
2.框架类库
FCL(FrameworkClassLibrary,框架类库)为开发人员定义并提供了统一的、面向对象的、分层的和可扩展的类库集,其主要部分是.BCL(BaseClassLibrary,基类库)。
通过创建跨所有编程语言的公共API集,公共语言运行库使得跨语言继承、错误处理和调试成为可能。
从JScript、VisualBasic到VisualC++、C#、F#的所有编程语言(通过托管扩展)具有对框架的相似访问,开发人员可以自由选择它们要使用的语言。
相对于贫乏的C++类库和丰富的Java类库,.NET框架类库异常庞大,包含数百个命名空间、数千个类、接口和值类型。
该库提供对系统功能的访问,是建立.NE框架应用程序、组件和控件的基础。
框架类库采用命名空间来组织和使用,如4.0版的类库提供了440个命名空间,其中用于应用编程的BCL(System型)命名空间有363个。
1.3.2VisualStudio
VisualStudio(VS,可视工作室)是基于.NET框架软件的开发平台,也是.NET的主要组成部分。
VisualStudio采用了支持可视编程的集成开发环境。
1.语言工具
在VS中集成了VisualC++、Visu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 01 绪论