资源虽已打包进.exe文件,可是除了上面提到的那两个方法,似乎再没有其它读取内部资源的函数了,那怎么办呢?
前传3:看到解决问题的曙光
打开MSDN,查找有关"资源"的索引,看了半天,最后终于弄明白了,原来.net框架对通过资源编辑器(.rc)打包进程序的资源不再提供支持,而改用一种名为"托管资源"的资源。那么这种资源与普通的非托管资源有何异同?既然不能使用Visual Stdio 200x提供的资源编辑器(.rc)打包资源,这种资源又该怎么打包进程序?打包成功后又应该怎样去使用呢?
正传1:什么是托管资源
资源可以理解为是在逻辑上由应用程序部署的任何非可执行数据,托管资源其本质也大抵如此。那么mfc使用的rc资源和.net使用的托管资源有什么区别呢?请看下表:
索引方式
95/98/me/nt/2000及以上
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)依靠资源ID找到资源
不可以
使用纯资源DLL,比较麻烦
由程序员决定,管理混乱
还没想好:)
目前还没有支持的
取消资源ID,改为依靠资源名,也可以依靠资源的值(内容)
可序列化的就可以
使用专用的资源文件,很简单
由程序集统一管理(注2)
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/) 注1:比如说,对一个文件夹右键选"属性"-"自定义"-"更改图标",在"浏览"中选择.exe文件,如果被系统支持则会读出.exe中打包的所有图标,反之只能读出1个;注2:有关程序集的讨论超出了本文的范围,感兴趣的读者可以参考MSDN; 从上表可以看出,虽然托管资源的本质概念和以往的"资源"没有区别,但是使用方式却被彻底颠覆了。托管资源将一个资源视为一个对象,对资源的查找引用不再使用资源ID,改为资源名,就像使用一个对象一样;反过来给可序列化的任意对象起个好记的名字就可以当作资源保存起来。.net托管资源的打包方式有两种,分别是打包进程序的资源和独立的资源文件。独立资源文件的组织方式也有两种形式,一种 猜你喜欢