Диалог загрузки приложения MFC из другой библиотеки DLL - PullRequest
0 голосов
/ 26 августа 2010

У нас очень большое приложение MFC, в котором есть 16 проектов. Каждый проект - это DLL. Четыре (4) из этих проектов - это то, что мы называем «Сеть». В каждой сети есть диалоговое окно, которое мы будем называть X. Это диалоговое окно ОЧЕНЬ отличается в каждой сети, но имя самого диалога одинаково в каждом из resource.h. В resource.h они также имеют одинаковый идентификатор (значение).

Что сейчас происходит, так это то, что, когда я нахожусь в сети 1 и загружаю класс с помощью диалогового окна X, он пытается использовать диалоговое окно из сети 2. Поскольку они не имеют одинакового контроля, сбой в DoDataExchange при попытке найти элементы управления, которых нет в другой сети.

Кто-нибудь знает, что может вызвать это? Попытки изменить имя в сети, которые не работают, ничего не изменили, так как он использует идентификатор ...

Я всегда думаю, что DLL использовала свой собственный resource.h, но теперь кажется, что это не так ...

Кто-нибудь может помочь? Спасибо

1 Ответ

3 голосов
/ 26 августа 2010

Звучит так, как будто вам нужно позвонить AfxSetResourceHandle, чтобы указать библиотеку DLL, из которой нужно загрузить диалоговое окно.

Редактировать: учитывая ваше описание, вам, в основном, нужно будет вызвать этотс правильным значением каждые каждый раз, когда вы выводите диалоговое окно.Изменение таких вещей, как порядок загрузки DLL, не решит проблему - в любой момент времени MFC будет пытаться использовать один порядок для DLL / EXE для загрузки всех диалогов, и этомодальный, поэтому он остается неизменным, пока вы не измените его.Учитывая, что один и тот же идентификатор ресурса должен ссылаться на разные ресурсы в разное время, вы должны указать ему, какой из них в любой момент времени - в противном случае вы получите первое, что он найдет с правильным идентификатором, и почти не будете контролировать, какой из них будетбудет.

...