多媒体编程基础_2_第1页
多媒体编程基础_2_第2页
多媒体编程基础_2_第3页
多媒体编程基础_2_第4页
多媒体编程基础_2_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微软提供的Microsoft Visual Studio 2010集成开发环境 (IDE,Integrated Development Environmen)是比较流行的开发工具,它在前期产品Visual Studio 2010的基础之上进行了全面升级,它是面向Windows 7、Office 2010、Web 3.0的开发工具。Visual Studio 2010环境中集成了Visual C+,Visual C#、Visual Basic等常用软件。创建应用程序 简单了解VC2010的用法, 使用VC2010创建 使用VC2010创建 使用VC2010创建托管C+非 Unicode 环境 (

2、Code Once,Run Anywhere)。)。 由两个主要因素组成:CLR(the Common Language Runtime)公共语言运行库和FCL(Framework Class Library).NET Framework类库。程序在CLR中运行。FCL则提供了程序所需的功能,而不管是用何种语言开发的程序。一种是用符合ISO/ANSI语言标准开发的,此类程序称为程序;一种是在,此类程序成为程序。.NET Framework严格地说不是VC+ 2008的一部分,而是Windows操作系统的一部分,它使得运行程序和Web变得很简单。公共语言运行库是一个运行用高级语言编写程序的标准环

3、境,高级语言包括Visual Basic,C#和C+。ECMA(欧洲计算机制造商,European Computer Manufactures)把作为CLI(通用语言基础结构,Common Language Infrastructure)、ECMA-335的标准。同样,CLR也被选为ISO/IEC23171的标准。所以,这就是为什么C+为CLR制定了CLI,并且CLI编译器可以在其他操作系统上运行的原因。,虚拟机可以使运用高级语言编写的软件在不同的系统环境中不用改变和重新编译程序而生成目标代码。用高级语言编写的代码在进行编译时CLI为虚拟机定义了一些中间语言的标准。生成的中间语言称为MSIL(

4、Microsoft Intermediate Language)。在运行软件时,中间代码被JIT(just-in-time)编译成最终的机器代码。中间代码可以在任何有CLI的平台上运行。CLR是仅有的一个运行在Windows平台下的CLI平台,当然在其他操作系统和硬件上也有其他CLI平台。虽然CLI和CLR不同,但是有时这两个平台在运用时可以相互交换。CLI是一个标准的定义,而CLR则是CLI在微软平台下的实现。使用C+/CLI 例:利用向导创建基于CLR的“Windows窗体应用程序” 运行时可以看出,标题栏的图标不再是MFC的了,因为它已经是一个CLR程序。 再看代码: FCL是一套以支持

5、Web标准和应用为主的、易用的、高度可扩展的类库。该类库是面向对象的,并提供用户自己的托管代码,可以从中导出功能的类型。FCL包括BCL(Basic Class Library),Data,XML类,以及用于Web Services、Web Forms、Windows Forms类。 .NET框架的FCL统一了应用程序的开发模式,通过提供一致的功能,任何程序语言和开发模式都可以使用一致的API。 FCL以命名空间(Namespace)和类(Class)分层组织,并提供了统一的类型系统(Unified Type System),还提供了面向组件的类库(Component Oriented)、属性

6、、方法、事件及属性信息。正如图所示,Windows 内核分为三层,与硬件直接打交道的这一层称为硬件抽象层(Hardware Abstraction Layer,简称HAL),这一层的用意是把所有与硬件相关联的代码逻辑隔离到一个专门的模块中,从而使上面的层次尽可能做到独立于硬件平台。HAL之上是内核层,有时候也称为微内核(micro-kernel),这一层包含了基本的操作系统原语和功能,如线程和进程、线程调度、中断和异常的处理、同步对象和各种同步机制。在内核层之上则是执行体(executive)层,这一层的目的是提供一些可供上层应用程序或内核驱动程序直接调用的功能和语义。Windows 内核的执

7、行体包含一个对象管理器,用于一致地管理执行体中的对象。执行体层和内核层位于同一个二进制模块中,即内核基本模块,其名称为ntoskrnl.exe。内核层和执行体层的分工是,内核层实现操作系统的基本机制,而所有的策略决定则留给执行体。执行体中的对象绝大多数封装了一个或者多个内核对象,并且通过某种方式(比如对象句柄)暴露给应用程序。这种设计体现了机制与策略分离的思想。图2.3 显示了Windows 内核的详细组成结构。Windows 内核为用户模式代码提供了一组系统服务,供应用程序使用内核中的功能。应用程序通常并不直接调用这些系统服务,而是通过一组系统DLL,最终通过ntdll.dll 切换到内核模

8、式下的执行体API 函数中,以调用内核中的系统服务。Ntdll.dll 是连接用户模式代码和内核模式系统服务的桥梁。对于内核提供的每一个系统服务,该DLL 都提供一个相应的存根函数,这些存根函数的名称以“Nt”作为前缀,例如NtCreateProcess、NtOpenFile和NtSetTimer。另外,ntdll.dll 还提供了许多系统级的支持函数,比如映像加载器函数(以“Ldr”为前缀)、Windows 子系统进程通信函数(以“Csr”为前缀)、调试函数(以“Dbg”为前缀)、系统事件函数(以“Etw”为前缀),以及一般的运行支持函数(以“Rtl”为前缀)和字符串支持函数等。执行体API

9、 函数接收的参数来自于各种应用程序,因此,为了确保系统的健壮性,以及抵抗来自用户模式的恶意攻击,所有的执行体API 函数必须保证参数的有效性。这意味着它们必须在恰当的时刻检查参数的值,若是指针的话,还必须保证调用者可以访问指针所指的内存。通常,执行体系统服务函数会在其开始处,对所接收的参数逐一探查它们的可访问性。 面向对象的特性 窗口,句柄 消息,消息循环 Debug,Release MFC框架(Dlg成员生命周期,堆、栈) 消息映射 对话框、控件、菜单、工具栏、状态栏(子窗口)函数的重载在文档/视图结构的应用程序中,当用户单击某个菜单项时, 程序会先执行模板对象的OnCmdMsg方法;然后执

10、行框架的OnCmdMsg方法。框架的OnCmdMsg方法代码如下 :BOOL CFrameWnd:OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) CPushRoutingFrame push(this); CView* pView = GetActiveView(); if (pView != NULL & pView-OnCmdMsg(nID, nCode, pExtra, pHandlerInfo) return TRUE; if (CWnd:OnCmdMsg(nID, nCode, pEx

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论