如何使图标和类向导适用于资源专用dll的无资源应用程序?

时间:2012-09-04 19:18:22

标签: windows visual-studio mfc visual-c++

我正在开发一个包含多个GUI应用程序的MFC项目。目标是将所有资源从单个项目移动到单个资源dll。

经过一些更改后,我只有一个资源专用的dll项目和多个GUI项目。每个GUI项目都使用以下代码来访问资源dll:

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

到目前为止,除了有两个问题外,事情还可以。

  1. GUI exe文件丢失了Windows资源管理器中的图标。虽然有一些MFC样板代码从IDR_MAINFRAME加载图标,但只会影响顶部的图标 应用程序窗口。
  2. 类向导将不再起作用。例如,我不能再单击资源视图中的对话框按钮来添加按钮处理程序?
  3. 如何解决这些问题?

2 个答案:

答案 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文件中找到的第一个图标。