У меня есть основной исполняемый файл, который использует следующие RC-файлы:
main.rc
будет #include bitmaps.rc
.
Мне бы хотелось, чтобы растровые изображения (и другие ресурсы) могли быть заменены во время выполнения, поэтому я решил использовать подход DLL и поменять ресурс с помощью AfxSetResourceHandle
.
Мой текущий подход:
В проекте Satellite DLL его RC-файл просто сделает #include main.rc
, чтобы сначала получить все ресурсы из основного исполняемого файла. Затем я заменяю определенные растровые изображения (только несколько, которые требуют изменения) следующим образом:
#undef IDB_ICON
IDB_ICON BITMAP "..\\newIcon.bmp"
#undef IDB_ABOUT
IDB_ABOUT BITMAP "..\\newAbout.bmp"
* * * * * * * * * * * * * * #undef
делает его компиляцией, не выдавая ошибку "дубликата ресурса". Однако замена не работает во время выполнения.
Единственный способ заставить его работать - это реплицировать bitmaps.rc
как bitmapsSatellite.rc
в спутниковом проекте, а затем сделать несколько обменов путями. И, конечно, main.rc
был настроен так, чтобы включать только один битовый файл rc-файла, в зависимости от проекта.
Мой желаемый подход был бы более понятным и понятным. Есть ли способ заставить его работать, возможно, используя что-то кроме #undef
?