0

I am working on a MFC project with multiple GUI applications. The objective is to move all the resources from individual projects to a single resource dll.

After some change I have a single resource-only dll project and multiple GUI project. Each GUI project is using the following code to access the resource dll:

BOOL CFooApp::InitInstance()
{
    HINSTANCE hRes = NULL;
    hRes = LoadLibrary(_T("Resource.dll"));
    if(hRes) AfxSetResourceHandle(hRes);
    ....

So far things work fine except there are two issues:

  1. The GUI exe files lose there icons in Windows explorer. Although there are some MFC boilerplate code that load the icon from IDR_MAINFRAME, that only affects the icon in the top of the application window.
  2. The Class Wizard won't work anymore. For example I can no longer click on a dialog button in the resource view to add a button handler?

How to solve these issues?

4

2 回答 2

1

Explorer 从嵌入在 exe 中的资源中获取它的图标。如果 exe 从 dll 中提取所有资源,则资源管理器将找不到任何东西。你不能只在exe中添加一个图标吗?

至于2,那我觉得你吃饱了。我之前在使用多个卫星语言资源 dll 时遇到过这个问题。修复它的唯一方法是在 exe 本身中保留一组(英文)资源,但由于我们特定的各种原因,这是不可能的。最后,我只是习惯了没有向导的编码。:/

于 2012-09-05T10:07:06.053 回答
0

现在我正在使用一种几乎解决问题的简单方法。我只是将中央 rc 文件(例如上面示例中的 Resource.rc)添加到每个 GUI 项目中。因此: 1) 可以使用 ClassWizard。2) 为每个 GUI 生成图标。3)虽然GUI工程引用的是英文版rc文件,但GUI exe仍然可以加载其他语言的Resource.dll。唯一的缺点是每个 GUI 现在都有相同的图标,大概是他们在 rc 文件中找到的第一个图标。

于 2012-09-10T16:27:49.910 回答