MFC:重写附属 DLL 中 RC 文件中的位图路径
MFC: Overriding a bitmap path in RC file in satellite DLL
我有一个使用以下RC文件的主要可执行文件:
main.rc
bitmaps.rc
main.rc
将#include bitmaps.rc
.
我希望位图(和其他资源)在运行时是可交换的,因此我决定使用 DLL 方法并使用AfxSetResourceHandle
交换资源。
我目前的方法: 在卫星DLL项目中,它的RC文件将简单地执行一个#include main.rc
,首先从主可执行文件中获取所有资源。 然后,我使用以下方法替换特定的位图(只有少数需要更改的位图):
#undef IDB_ICON
IDB_ICON BITMAP "..\newIcon.bmp"
#undef IDB_ABOUT
IDB_ABOUT BITMAP "..\newAbout.bmp"
该#undef
使其编译而不会喷出"重复资源"错误。 但是,替换在运行时不起作用。
我能让它工作的唯一方法是复制bitmaps.rc
卫星项目中的bitmapsSatellite.rc
,然后进行少量路径交换。当然,根据项目的不同,main.rc
调整为仅包含一个位图rc文件。
我想要的方法将是更干净和不言自明的。 有没有办法让它工作,也许使用#undef
以外的东西?
无需取消定义资源 ID。
一个资源文件中可能存在具有相同 ID 的资源,这些资源可能具有不同的语言 ID。
要将它们分开,很容易使用命令行设置编译 RC 文件,该命令行设置预制AFX_RESOURCE_DLL
.
当为资源编译器定义AFX_RESOURCE_DLL
时,它仅包括也在命令行上定义的语言的资源,如AFX_TARG_ENU
或AFX_TARG_DEU
。
对于可能始终包含在 satelaite DLL 中的资源,我使用AFX_TARG_NEUD
(中性资源)。
因此,您可能将所有资源都放在一个文件中,或者您可能将资源吐到多个 RC 文件中。您可以通过#include
语句将所有需要的资源文件包含在一个编译过程中,并通过命令行定义选择所需的目标语言。
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- 将Qt qml文件转换为位图图像
- 如何从资源文件(.rc 文件)加载位图?
- MFC:重写附属 DLL 中 RC 文件中的位图路径
- 如何生成位图头数据,然后使用 C++ 写入文件
- JPEG编码位图(BMP)图像从文件使用libjpeg / C++
- 从位图图像文件读取像素数据值
- 分析位图文件时,如何替换WORD和DWORD数据类型
- C++:将整数的文本文件转换为BMP格式的位图图像文件
- Win32从设备上下文到文件和/或BLOB创建位图
- 用于 pbm 文件的预编码字符和数字资源(便携式位图)
- C++ 如何创建位图文件
- 我正在尝试读取位图文件
- 如何从位图文件创建纹理
- 除非先使用MS Paint打开/保存文件,否则带有QRCode位图的LoadImage()将失败
- 使用Windows图像组件将EMF转换为BMP(元文件转换为位图)
- Win32 C++:使用开放文件名并显示位图文件
- 将IplImage转换为位图的错误头文件
- 保存位图文件
- FFMPEG -读取视频文件并转换为位图