Проблема загрузки статической библиотеки MFC и иконки внешних файлов (ресурсов) - PullRequest
3 голосов
/ 21 марта 2011

У меня проблема с загрузкой значков из внешних файлов ресурсов в основном приложении. Я постараюсь объяснить, как приложение установлено прямо сейчас. Ресурсы основного приложения включают внешний диалог * .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?

P.S. - Содержание файлов здесь только примеры.

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

AfxGetApp()->LoadIcon(IDI_MY_ICON); пытается загрузить значок из текущего приложения (exe).

Если вы хотите загрузить его из другого модуля, вам придется либо запомнить дескриптор, возвращенный из LoadLibrary, либо вызвать GetModuleHandle, чтобы получить его снова.

1 голос
/ 22 марта 2011

Ваш файл .rc скомпилирован rc.exe для встраивания значка в ваш исполняемый файл. rc.exe использует путь включения для поиска ресурсов. Это задается либо переменной среды INCLUDE, либо с помощью параметра / I для rc.exe. Если «my_icon.ico» не работает, попробуйте переместить файл или изменить путь включения.

Пояснение:

rc.exe компилирует .rc файлы в .res, но это компоновщик, который выполняет фактическое встраивание в исполняемый файл.

...