Здравствуйте.
Вопрос следующий:
Как следует поддерживать XP Themes в
DLL (Addin).
DLL использует MFC, и этого не изменить.
Насчет варианта от MS:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mmc/mmc/upporting_visual_styles_in_mfc_snap_ins.asp
я вкурсе, но постоянно вылезают всякие грабли, типа ImageList_Create() из MFC.
Услышал от умных людей, что можно перекомпилировать MFC с флагом ISOLATION_AWARE_ENABLED,
и далее использовать этот "Custom Build" MFC (как статическую библиотеку).
Попробовал проделать это, но получил ряд ошибок компиляции...

В связи с этим вопрос: перекомпиляция MFC — это хорошо и проблемы компиляции
не должны останавливать настоящих индейцев?
Или как народ решает подобные трудности с поддержкой тем в DLL ...
насколько я понимаю проблема не в DLL а именно в COM/DLL..
если бы другая прога (Office) грузила твою DLL обычным образом то ресурсы из DLL выглядели бы
как в основной программе...
лечится это так...
в DLL в stdafx.h
#define ISOLATION_AWARE_ENABLED 1 (до всех инклудов)
в ресурсах
2 RT_MANIFEST "res\\<your manifest>.manifest"
для двойки есть свой константа но она определена только для больших WINVER
(в exe вместо 2 1)
"...Услышал от умных людей, что можно перекомпилировать MFC с флагом ISOLATION_AWARE_ENABLED,
и далее использовать этот "Custom Build" MFC (как статическую библиотеку)..."
это ты от глупых людей слышал

)
Posted via RSDN NNTP Server 1.9 gamma
Здравствуйте, Misaw.
Спасибо за ответ.
M>насколько я понимаю проблема не в DLL а именно в COM/DLL..
M>если бы другая прога (Office) грузила твою DLL обычным образом то ресурсы из DLL выглядели бы
M>как в основной программе...
Не понял причем тут COM
M>в DLL в stdafx.h
M>#define ISOLATION_AWARE_ENABLED 1 (до всех инклудов)
M>в ресурсах
M>2 RT_MANIFEST "res\\<your manifest>.manifest"
Это само-собой (все это УЖЕ СДЕЛАНО, без этого темы ВООБЩЕ НЕ РАБОТАЮТ)...
Проблема именно с использованием MFC. Поясняю на примере:
// Код не работает:
CImageList il;
il.Create(....) // Это вызов MFC (скомпилированной без ISOLATION_AWARE_ENABLED)
// Код работает:
CImageList il;
il.Attach(ImageList_Create(....) // Это вызов API IsolationAwareImageList_Create()
M>"...Услышал от умных людей, что можно перекомпилировать MFC с флагом ISOLATION_AWARE_ENABLED,
M>и далее использовать этот "Custom Build" MFC (как статическую библиотеку)..."
M>это ты от глупых людей слышал
)
А вы можете предложить лучший вариант?
Здравствуйте, megadoZ, Вы писали:
Z>Получилось что-нибудь сделать?
Z>А то я уже перерыл все форумы, ничего не нашёл ;(
Глухо
С mfc42.dll походу ниче более разумного чем "ручками" не получается сделать...
т.е. ничего более работоспособного чем описано в той
статье на MS получить не удалось ....
это работает, просто геморойно...