Не могу указать ресурс для диалога, В DLL; Visual C++

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Eugie, Romeo, Hawk

Ответить
char_ser
Сообщения: 17
Зарегистрирован: 29 сен 2004, 18:49
Откуда: МИФИ, Москва

15 дек 2004, 18:15

У меня есть dll и есть exe

// Вот участок из dll
CDialogEnterPassword2::CDialogEnterPassword2()
: CDialog(IDD_ENTERPASSWORD2, pParent)
{
// Какое-то наполнение
...
}


Какого CDialog ищет IDD_ENTERPASSWORD2 в ресурсах экзешника, а не в в своей dll? Как с этим бороться?
Это порождает ошибку:
Error 1812: Указанный файл образа не содержит секции ресурсов
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

15 дек 2004, 18:45

При загрузке любого ресурса указывается инстанс (instance) модуля, из которого должна происходить загрузка. По ошибке использован инстанс exe-модуля, вместо инстанса dll-модуля, вот и вся ошибка. Причины ищи сам, либо предоставляй больше исходной информации.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

15 дек 2004, 18:56

а МСДН зачем???
AfxManageModuleState()
или нечто подобное
В SAD - все в SAD.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

15 дек 2004, 19:00

Верно, такая функция переписывает данные, который впоследствии использует AfxGetApp(). Возможно дело и в этом.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

16 дек 2004, 14:16

char_ser, AfxSetResourceHandle() позволяет явно указать, в каком модуле MFC ищет ресурсы по умолчанию
Ответить