- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.net程序资源组件浅析
导语:?net程序和以往的Windows应用程序有一个显著不同的地方:它的可执行文件的组织方式,不像以往的应用程序。 .net程序的不同
.net程序和以往的Windows应用程序有一个显著不同的地方:它的可执行文件的组织方式,不像以往的应用程序。.net程序是由MSIL语言进行组织,运行时需要调用即时编译器(JIT)编译成本地汇编指令再来执行,好比以前的VB程序一样,是一个解释执行的过程。
与指令相对应的是数据,一部分静态数据或者说是资源,对它们来说.net程序和传统程序也大大不同。本文主要对.net应用程序资源的组成以及对它的操作进行简单分析。
托管资源说明
应用程序资源主要包括字符串、图像、声音、视频等,目前最常用的是前面两种,本文主要是以在应用bmp文件过程中的经验做一下简单说明。在过去,对应于MFC,资源以.rc文件方式组织,程序在使用资源时使用它的资源ID号做为索引,用起来很不方便,而且如果想把资源从应用程序做成一个单独的资源dll文件,无论是制作还是使用,都是一件非常麻烦的事。
.net程序在这些方面进行了改进,首先在设计阶段,它把各种资源统一保存在资源文件里,称作托管资源。这里的资源文件包括两种,一种是XML文件,一种是.resources文件。我们使用.net编程序,尤其是用VC.net编程,首要建立一个form窗体,在上面加一些菜单和按钮,然后在上面添加一些图标,这时对应窗体名还另外生成了一个.resx文件,这就是XML型资源文件。
XML资源文件是由XML标签文本组成,用托管资源编辑器把这个窗体打开,就可以看到我们添加的图标和文本。另一种资源文件.resources是以二进制方式存储资源,它的体积要比XML资源文件小得多,这个文件在设计阶段并不存在,只有VS在编译.net程序时,才会把XML资源文件转化为.resources文件,同时VS还会把XML资源文件里的资源打包进应用程序和dll文件中。
MS为什么要这么做,是否有必要做成两种资源文件形式,还有MS为实现资源打包,还在VS中添加了像托管资源编译器之类的小工具,这么不怕麻烦又是为什么?这所有的问题都指向一个最有深度的解释:服从.net战略需要。
托管资源的使用
为方便使用这些资源,需要使用VS中包含的System::Resources程序集,其中操作.resx资源文件的类有ResXResourceSet()、ResXResourceReader()、ResXResourceWriter()。操作.resources文件的类有ResourceSet()、ResourceReader()、ResourceWriter()。这些类大体作用是为前两个读资源所用,后一个为写资源用。
这是直接操作资源文件,当资源被打包进exe或dll(在.net术语中称为程序集)中之后,我们用ResourceManager类,这个类只能读资源。这里要说明一下如何引用这些资源,用最简单直接的方式是用名称引用。举个例子,如果有一个程序集a.dll,里面打包一个r.resx文件,r.resx里有一个 img.bmp文件,使用这个程序集里的img.bmp怎么办?用几句话便可以轻松解决:
System::Resources::ResourceManager ?es = n然是比较合乎逻辑的做法,如果要直接把资源(这里特别指的是bmp文件)放进程序集,而不经过打包这一步,是否可行?答案是没有问题。事实上MS就做了这样的事,在控件开发过程中,如果要给控件弄一个图标,可以让这个图标显示在VS的工具箱中,那就必须要给这个图标(比如一个bmp文件)起一个和控件一样的名字:(程序集名).(控件名).bmp,然后把这个图标设置为链接器的嵌入托管资源文件。具体设置的方法是,在解决方案资源管理器中,在项目名称上点右键->属性,在弹出的对话框左面一栏选择链接器->输入 =assembly-GetManifestResourceStream(“img.bmp”);
Image
=System::Drawing::Image::FromStream(strm);
这里仅仅是对bmp文件的直接嵌入做了说明,如果读者感兴趣的话,也可以试试别的资源。
可以看出,这样的方法更直接,但并没有数据可以证明这种方法的速度和常规方法相比有多大差距,单从开发的角度来看,无论是嵌入还是引用,这种方法都是比较简洁。当然从管理的角度上这种做法不可取,效率和规范化经常是一对不可调和的矛盾。
后记:开发工具的选择
下面介绍一下在开发.net程序过程中经常使用到的两
您可能关注的文档
最近下载
- 第1课 我是小学生啦(课件)心理健康一年级上册(鲁教版).pptx VIP
- 2022年全国新高考II数学试卷真题深度解读及答案详解.pdf VIP
- 医生高级职称晋升工作量证明.docx VIP
- 离婚协议书范文下载(可打印直接用).docx VIP
- 《熔炼与铸锭》课件.ppt VIP
- 《红星照耀中国》7—12章分章分节练习及答案.doc VIP
- 流程管理-中石化存货管理业务流程.pdf VIP
- (完整版)铸造熔炼炉安全检查表.docx VIP
- 2023-2024学年江苏省苏州市姑苏区胥江实验中学初一(上)第一次月考数学试题及答案.pdf VIP
- 电外科安全使用指南(2025版)的解读与实践PPT课件.pptx VIP
文档评论(0)