我正在开发一个包含多个GUI应用程序的MFC项目。目标是将所有资源从单个项目移动到单个资源dll。
经过一些更改后,我只有一个资源专用的dll项目和多个GUI项目。每个GUI项目都使用以下代码来访问资源dll:
BOOL CFooApp::InitInstance()
{
HINSTANCE hRes = NULL;
hRes = LoadLibrary(_T("Resource.dll"));
if(hRes) AfxSetResourceHandle(hRes);
....
到目前为止,除了有两个问题外,事情还可以。
如何解决这些问题?
答案 0 :(得分:1)
Explorer从exe中嵌入的资源中获取它的图标。如果exe从dll中提取所有资源,那么Explorer将找不到任何内容。你能不能只在exe中添加一个图标?
至于2,那我觉得你已经塞满了。我在使用多个卫星语言资源dll之前遇到过这个问题。修复它的唯一方法是在exe本身中保留一组(英语)资源,但由于我们特定的各种原因,这是不可能的。最后我习惯了没有巫师的编码。 :/
答案 1 :(得分:0)
现在我正在使用一种几乎解决问题的简单方法。我只是将中央rc文件(例如我上面例子中的Resource.rc)添加到每个GUI项目中。因此:1)可以使用ClassWizard。 2)为每个GUI生成图标。 3)尽管GUI项目引用了英文版rc文件,但GUI exe仍然可以加载其他语言的Resource.dll。唯一的缺点是每个GUI现在都有相同的图标,可能是他们在rc文件中找到的第一个图标。