2011-03-21 36 views
3

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

外部* .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吗?

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

回答

1

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

澄清:

RC.EXE编译的.rc文件到.RES,但其执行实际嵌入到可执行文件的链接。

2

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

如果您想从另一个模块加载它,您将不得不记住从LoadLibrary返回的句柄,或者调用GetModuleHandle再次检索它。