(Win32 DLL 工程,或者其他Console或MFC工程等)

1。在VC编译器中,选择Insert --》Resource,选中Bitmap--》Import,将文件类型修改为所有类型。

---》找到bmp文件,并载入,此时产生一个IDB_BITMAP1资源句柄。

2。载入后,先别急,保存一次,则会产生这个bmp文件对应的rc资源文件。

3。这个时候,如果不是MFC工程,则需要在调用LoadImage或LoadBitmap函数的.CPP文件中,先包含一句:#include "resource.h"

如此,则之前产生的IDB_BITMAP1资源句柄可以被使用了,如果没有包含这个头文件,则很多时候会提示,这个句柄是无效的,无法找到。

4.而后应当将该.rc资源文件,也用文件的方式追加进工程。

5.在调用LoadImage或LoadBitmap函数时,我们很多时候习惯于从外界动态调入一个文件,比如将第二个参数设定为"test.bmp"文件,所以,我们对于第一个参数hInstance,常常是传入一个NULL,根本不去理会,

但对于一个已经载入DLL或EXE文件的位图资源而言,这个时候,是必须传入的。

那么DLL文件的该句柄从何而来呢?

这个就需要谈到DllMain函数了。

正如Console程序对应有main,win32 对应有Winmain函数作为入口函数一样,这个函数是DLL可以使用的入口函数。

当然,如果编DLL时不需要响应一些特殊的消息,比如DLL_PROCESS_ATTACH、DLL_PROCESS_DETACH之类的,不定义也无所谓。

提到这个函数,主要的目标是说一说它的形参表:

BOOL WINAPI DllMain(HINSTANCE hInstDll,DWORD fdwReason,PVOID fImpLoad);

第一个形参,是由操作系统传入的指向该DLL模块所得基地址的指针,就是我们所需要的实例句柄

那么,这个时候就只要将之保存为一个全局变量,我们就可以在调用LoadBitmap等函数时,直接传入。

OK,说完在DLL中调用,就说一说EXE文件中。

这个其实是类似的,主要的问题,还是这个HINSTANCE实例句柄如何获得。

如果是MFC程序,那么好办,调用AfxGetApp()->m_hInstance,就可以直接获得了。

如果是Win32程序呢?

那么其实也可以使用这个函数:HINSTANCE GetModuleHandle(LPCTSTR lpModuleName)

实现:HINSTANCE hInstance =GetModuleHandle(NULL);

就可以获得当前进程的载入基地址。

当然,如果大家没有传入这个实例句柄的话,则读取位图是会失败的(没有提供查找范围)。而后,调用GetLastError,返回的错误一般是1814或者1812,指的是无法在提供的资源段找到这个位图资源,或者无法找到这个位图资源名称。

转载于:https://www.cnblogs.com/carekee/articles/2394237.html

VC中将bmp作为资源文件写入EXE或DLL,然后内部调用(转)相关推荐

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

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

  2. Windows下C++将各种资源文件引入exe文件(即无需携带很多res资源包)

    环境:Visual Studio2010 语言: C++ 实际操作: 1.将文件导入资源文件 资源文件中右键-添加----资源 选择导入-导入资源----并设置资源类型.资源类型命名随意,但是最好还是 ...

  3. 随想录(exe和dll的相互调用)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 有一种编程方法,就是需要在exe和dll之间进行相互调用.比如整个软件的功能都是比较简单的,大部 ...

  4. Android中打包含有Activity以及资源文件的jar包在工程中调用

    如何将资源以及activity文件打包成jar文件供项目调用,从android的官方文档中找到的完美的解决,这里做一个总结. 最近刚刚发布了一款小应用<诗词大全>,有兴趣的朋友请实用提出您 ...

  5. 学习使用资源文件[11] - DLL 中的资源文件

    本例将把一张 bmp 图片, 以资源文件的方式嵌入 dll, 然后再调用. 第一步: 建一个 DLL 工程, 如图: 然后保存, 我这里使用的名称都是默认的. 第二步: 建一个资源原文件, 如图: 编 ...

  6. Struts2的资源文件和国际化(i18n)

    文章目录 资源文件的命名 资源文件基名的指定 struts.xml 文件指定资源文件的基名 struts.properties 文件指定资源文件的基名 通过标签 i18n 指定资源文件的基名 资源文件 ...

  7. Windows 资源文件(.rc文件)小记

    在windows下使用Qt时,通常会用到Windows的资源文件(给exe设置图标和版本信息等),比如命名为 main.rc #include "winver.h" IDI_ICO ...

  8. java jar包资源文件_深入jar包:从jar包中读取资源文件

    我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...

  9. 深入探究VC —— 资源编译器rc.exe(3)

    Windows应用程序中,图标.菜单.畏途.图标.工具条.对话框等是以资源的形式存在的.开发人员也可以自定义资源类型.如果一个程序使用了资源,那么它在构建时需要对资源进行编译.程序所使用的资源会在资源 ...

最新文章

  1. java禁止放大_java 所有组件缩放、放大
  2. jenkins清除、修改admin主账号的密码
  3. php pdo查询sqlserver,php pdo sqlserver分页sql的处理
  4. php对接xenserver,XenServer虚拟机管理工具XenCenter安装配置图文教程
  5. cfiledialog对话框大小_CFileDialog类 通用对话框
  6. STM32F103_study46_The punctual atoms(STM32 The location of all interrupt service functions )
  7. CGAL::2D Arrangements
  8. linux常用命令导图
  9. 为什么要做售后五星服务认证?
  10. 【力扣刷题】121.买卖股票的最好时机(python)
  11. 车管所免检测审车流程
  12. 机场航班起降与协调管理系统飞机航班(含源码+论文+答辩PPT等)
  13. 深信服超融合数据通讯口地址冲突报错处理
  14. 如何判断视频的比例(4:3/16:9)和分辨率?
  15. Python数据分析【第11天】| DataFrame转化格式并保存(to_excel(),to_json(),to_csv())
  16. 有趣的排序算法——Monkey King排序 详细介绍
  17. CentOS7 安装 Oracle
  18. win10开启/取消自动关机
  19. mysql查询1万条数据要1秒钟_SQL查询效率:100万数据查询只需要1秒钟
  20. MS-DOS信息英汉对照 计算机英语强化

热门文章

  1. 问题 L: 求100以内的素数
  2. 深度学习李宏毅PPT学习笔记一(深度学习介绍)
  3. mysql 高并发 优惠券_转 mysql处理高并发,防止库存超卖
  4. LVS——DR模式(负载均衡)
  5. c语言编写指针函数求和与两数交换值
  6. SAP License:HANA在线日志被误删后如何恢复?
  7. SAP License:SAP IDES 4.71的安装补充
  8. prd移动端通用产品需求文档+Axure高保真app社交订餐通用prd文档+产品业务说明+PRD功能性需求+移动端公工通用模板说明+需求分析+竞品分析+产品结构图+产品业务流程图+产品信息图+餐饮系统
  9. 布局:多列等高布局方法
  10. 软件工程学习进度第三周暨暑期学习进度之第三周汇总