RES文件都是把资源放在一个EXE文件中,这样将会变得很庞大,
也不方便修改(虽然有修改软件,但总不如单个替换文件方便)
最可恶的是只能有一个RES文件。
我希望能把所有资源集中在一个外部文件中,并且是可以替换的(但却是不可缺的)
为了保持兼容,及多程序共享,当然不能用自定义文件格式。
好像,以前有专门放资源的动态链接库?(与程序版本无关的那种)请问,如何把资源分散在不同文件中?

解决方案 »

  1.   

    将资源编译到另一个dll中
    用LoadLibrary加载dll
    再用资源API去读取这叫做资源dll技术
      

  2.   

    编资源dll用VC++比较好打开VC++ 6.0
    菜单:文件->新建
    工程类型中选择“Win32 Dynamic-Link Library”,确定
    然后点完成
    菜单:插入->资源
    顺便选一种,确定
    再点保存,这样会弹出对话框让你选择保存资源文件
    切换到“FileView”页面
    右击鼠标,选择“Add File To Folder”,选择刚才保存rc文件
    这样就会多出“ResourceView”页面,现在可以狂添加资源了
    关于资源API,看MSDNVS6的MSDN:
    平台SDK
    User Interface Services
    ResouresVS2003的MSDN:
    MSDN Library
    用户界面设计和开发
    Windows管理
    Windows User Interface
    Resoures
      

  3.   

    是要解决的问题呵,我也遇到了,像很多声音文件做到一个RES当中很是不便
      

  4.   

    比如这样:
    首先你新建个ActiveX Dll,然后用资源编辑器添加个资源ID为101的位图资源。
    接着,添加新类CResAgent,给其添加一个方法用以专门获得位图
    Public Function GetBMP(ByVal lResID As Long) As IPictureDisp
        Set GetBMP = LoadResPicture(lResID, vbResBitmap)
    End Function有了这个Dll后,你在别的工程里只要引用它,并创建CResAgent对象,就能过这个对象来得到Dll中的资源了。
    Private Sub Command1_Click()
        Dim oResAgent As CResAgent
        Set oResAgent = New CResAgent
        Set Picture1.Picture = oResAgent.GetBMP(101)
    End Sub这种办法避免了使用API的麻烦。如果你实在要用API的话,还是建议你去参考我以前写的那个添加更新资源的 ResourceUpdate 源程序