【问题标题】:MFC static library and external rc(resource) file icon loading problemMFC静态库和外部rc(resource)文件图标加载问题
【发布时间】:2011-03-21 15:45:30
【问题描述】:

我在从主应用程序的外部资源文件加载图标时遇到问题。我将尝试解释如何立即设置应用程序。主应用程序的资源包括外部对话框 *.rc 和适当的 *.h。链接器包括对话框实现(CDialog/CFormView),它位于外部静态库 *.lib 中。

外部 *.rc 有:

IDI_MY_ICON ICON "my_icon.ico"

外部 *.h 有:

#define IDI_MY_ICON 10000

静态库 *.cpp 中的对话框实现有:

HICON MyDialog::GetNeededIcon()
{
  return AfxGetApp()->LoadIcon(IDI_MY_ICON);
}

我认为它应该与外部 *.rc 文件位于同一文件夹中。我也尝试将它们放在主应用程序文件夹中,但应用程序仍然没有加载它们。有人可以解释一下 my_icon.ico 的搜索位置吗?

附: - 文件内容在这里只是示例。

【问题讨论】:

    标签: c++ mfc resources icons


    【解决方案1】:

    AfxGetApp()->LoadIcon(IDI_MY_ICON); 尝试从当前应用程序 (exe) 加载图标。

    如果您想从另一个模块加载它,您要么必须记住从 LoadLibrary 返回的句柄,要么调用 GetModuleHandle 再次检索它。

    【讨论】:

      【解决方案2】:

      您的 .rc 文件由 rc.exe 编译以将图标嵌入到您的可执行文件中。 rc.exe 使用包含路径来查找资源。这由 INCLUDE 环境变量或使用 rc.exe 的 /I 选项指定。如果“my_icon.ico”不起作用,请尝试移动文件或更改包含路径。

      澄清:

      rc.exe 将 .rc 文件编译成 .res,但它是真正嵌入到可执行文件中的链接器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-29
        • 1970-01-01
        • 1970-01-01
        • 2020-06-24
        • 2017-05-18
        • 2018-12-17
        相关资源
        最近更新 更多