MFC静态库和外部rc(资源)文件图标加载问题

时间:2011-03-21 15:45:30

标签: c++ mfc resources icons

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

外部* .rc有:

IDI_MY_ICON ICON "my_icon.ico"

外部* .h有:

#define IDI_MY_ICON 10000

静态lib * .cpp中的对话实现具有:

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

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

P.S。 - 文件内容仅为示例。

2 个答案:

答案 0 :(得分:2)

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

如果要从其他模块加载它,您必须记住从LoadLibrary返回的句柄,或者调用GetModuleHandle再次检索它。

答案 1 :(得分:1)

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

澄清:

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