由于项目需要,项目发布时不能将UI资源暴露在外面,防止用户随意修改。所以我们在打包时需要将UI资源封装成DLL,再进行调用。
Duilib提供了4种ui资源加载方式
enum UILIB_RESTYPE{UILIB_FILE=1,        // 来自磁盘文件UILIB_ZIP,         // 来自磁盘zip压缩包UILIB_RESOURCE,        // 来自资源UILIB_ZIPRESOURCE,   // 来自资源的zip压缩包};
我们的操作步骤分为3步:
1. 新建DLL工程,假设命名为DLLResource.dll。
2. 将UI资源打包成.zip并导入DLLResource.dll中(可以通过视图资源导入),类型名填ZIPRES,并记下导入的压缩包资源ID,这里假设是101。(这里需要注意一下zip中的资源目录结构)
3. 通过以下代码将DLL中资源加载到主程序中即可:
 // 加载UI资源动态库CPaintManagerUI::SetInstance(hInstance);HINSTANCE hRCDll = ::LoadLibrary(_T("DLLResource.dll"));if (hRCDll){CPaintManagerUI::SetResourceType(UILIB_ZIPRESOURCE); // 设置资源类型(zip压缩包)CPaintManagerUI::SetResourceDll(hRCDll); // 设置资源DLL句柄}// 从资源中加载zip{HRSRC hResource = ::FindResource(CPaintManagerUI::GetResourceDll(), MAKEINTRESOURCE(101), _T("ZIPRES")); // 101为DLLResource.dll中压缩包的资源ID号if (hResource == NULL)return 0L;DWORD dwSize = 0;HGLOBAL hGlobal = ::LoadResource(CPaintManagerUI::GetResourceDll(), hResource);if (hGlobal == NULL){::FreeResource(hResource);return 0L;}dwSize = ::SizeofResource(CPaintManagerUI::GetResourceDll(), hResource);if (dwSize == 0)return 0L;g_lpResourceZIPBuffer = new BYTE[dwSize];if (g_lpResourceZIPBuffer != NULL){::CopyMemory(g_lpResourceZIPBuffer, (LPBYTE)::LockResource(hGlobal), dwSize);}::FreeResource(hResource);CPaintManagerUI::SetResourceZip(g_lpResourceZIPBuffer, dwSize);}

by cs 2022-08-22

Duilib资源文件打包成DLL并调用相关推荐

  1. iOS架构-静态库.a打包之资源文件打包成bundle(4)

    iOS架构-静态库.a的打包及使用(一) iOS架构-静态库.a的脚本化打包及使用(二) 资源文件主要包括:xib.图片以及其他文件资源(json.string等).这里主要介绍 xib.图片.其他的 ...

  2. iOS架构-静态库.framework之资源文件打包bundle(6)

    iOS架构-静态库.framework手动打包及脚本化打包(5)中介绍了.framework的脚本化打包,虽然在iOS架构-静态库.a打包之资源文件打包成bundle(4)中已经演示过,其实是一样的. ...

  3. C# DLL资源文件打包(图片、JS、CSS)[WebResource]

    先看下我的最终的目录结构(这是工程结构就是利用WebResource.axd通过一个URL来访问装配件的内置资源(译) 英文原站下载的代码):          这里需要说明几点:     1.    ...

  4. 将ocx和DLL文件打包成cab文件,inf的编写

    From: http://icrwen.iteye.com/blog/1118766 http://blog.csdn.net/yimiyangguang1314/article/details/65 ...

  5. vs中将网站aspx.cs文件打包成一个dll

    vs中将网站aspx.cs文件打包成一个dll 23小时前 vs中将网站asp.net cs文件打包成一个dll. 在vs2008以上的版本中可以建立web应用来开发网站,这样网站aspx.cs文件[ ...

  6. C#.NET如何将cs文件编译成dll文件 exe文件 如何调用dll文件

    比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...

  7. 将exe和dll文件打包成单一的启动文件

    将exe和dll文件打包成单一的启动文件   当我们用 VS 或其它编程工具生成了可执行exe要运行它必须要保证其目录下有一大堆dll库文件,看起来很不爽,用专业的安装程序生成软件又显得繁琐,下面这个 ...

  8. 使用压缩软件将exe和dll文件打包成一个exe启动文件

    问题:以搜狗输入法的截图软件为例,如何将exe和dll文件打包成一个的exe可执行文件,即将该软件目录下的文件合并成一个可以独立运行的exe文件 解决:通过压缩软件,本文我使用的软件是2345好压.( ...

  9. [转]Asp.net 将js文件打包进dll 方法

    Asp.net 将js文件打包进dll 方法 注:本文基于.NET 2.0 和 VS2005 我们在编写 Server Control 的时候难免要用到一些客户端脚本(javascript),如何把脚 ...

  10. 图像处理算法打包成dll

    本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 在进行一个 ...

最新文章

  1. vs安装一直在提取文件_Visual Studio 2019下载及安装教程
  2. SAP RETAIL 寄售模式的公司间STO发货过账后的物料凭证的特殊点
  3. Oracle 11g下加密表空间的使用
  4. linux vg主备机同步,切换VG主备链路(简)
  5. (error) CROSSSLOT Keys in request don‘t hash to the same slot 解决方法
  6. delphi 到出execl2010 文件损坏_Win7系统出现explorer.exe损坏的图像的解决方法是什么?...
  7. 用eclipse创建WebService项目
  8. 图方法:寻找无向图联通子集的JAVA版本
  9. PYTHON 高效编程
  10. BZOJ 1085 [SCOI2005]骑士精神 【A*启发式搜索】
  11. c/c++读取txt文件中指定行的内容_和尧名大叔一起从0开始学Python编程-简单读写文件
  12. 启动Tomcat时报错,一大堆的
  13. 转行学IT:零基础学什么技术好?
  14. 交换机和路由器技术-24-OSPF单区域配置
  15. [Transformer]SPViT:Pruning Self-attentions into Convolutional Layers in Single Path
  16. 基于Python实现对房价的预测
  17. vue3.0之-watch全面解析
  18. App避免被杀死,常驻后台
  19. Hutool(Excel工具使用)
  20. 想转行当程序员,该怎么做?|猿代码科技

热门文章

  1. 数学建模学习之模糊评价法
  2. 64位Windows2003下如何正确发布VesnData.Net(VDN)
  3. 壁纸小程序云开发+无限裂变+附安装视频教程
  4. 机器学习(一)协同过滤推荐算法
  5. 安川涂装机器人离线编程_安川机器人离线编程软件
  6. vue-aliplayer 阿里云播放器适配 vue
  7. 在ubuntu系统中安装sublime
  8. leetcode第1282题
  9. css字体红色调用,如何在这段CSS代码中字体变成红色?
  10. 神经网络 激励函数