Компиляция rc-файлов
-есть проект, в котором для диалоговых окон используется один *.rc-файл
-в этот проект хочу подключить свой компонент, в котором есть свое окно с меню и диалогом. Т.е. для этого компонента (класса) есть свой файл *.rc.
Как теперь все скомпилировать?
Ведь в проекте может быть не больше одного *.rc-файла.
P.S. Может можно как и иначе
Ведь в проекте может быть не больше одного *.rc-файла.
Может быть и больше одного файла.
Может быть и больше одного файла.
можно объяснить подробнее.
Я хочу реализовать отдельный компонент в виде класса, отображающего окно со своей строкой меню. Т.е. структуру меню я прописываю в *.rc-файле, а затем в конструкторе класса создаю окно (оно имеет своего родителя - хэндл родительского окна передается в конструктор, а также содержит идентификатор меню) и показываю его пользователю модально.
Это должен делать компонент.
Как теперь задействовать этот компонент в виде класса, который мы, предположим, создали?
По идее, мы добавляем в тот проект, где мы хотим использовать этот компонент, один файл component.cpp, прописываем #include <component.h>,
а затем можем создавать экземпляры этого класса с помощью операции new.
Но как скомпилируется ресурс, ведь он должен относиться к компоненту (классу), а не к проекту, в котором уже может быть свой *.rc файл?
По идее, мы добавляем в тот проект, где мы хотим использовать этот компонент, один файл component.cpp, прописываем #include <component.h>,
а затем можем создавать экземпляры этого класса с помощью операции new.
Но как скомпилируется ресурс, ведь он должен относиться к компоненту (классу), а не к проекту, в котором уже может быть свой *.rc файл?
Ну добавь к проекту ещё один .rc файл.
Обычно дефолтовый .rc называется имя_проекта.rc,
назови свой component.rc и добавь его к проекту.
Не забудь, что вместе с rc создается еще и соотв. .h файл.
Ну добавь к проекту ещё один .rc файл.
Обычно дефолтовый .rc называется имя_проекта.rc,
назови свой component.rc и добавь его к проекту.
Не забудь, что вместе с rc создается еще и соотв. .h файл.
Но VC не дает включать в проект несколько *.rc-файлов (даже с разными именами), говорит
Multiple .rc files exist in this project. Only one can be marked as included in the build.
У меня VC5.0.
Неудобно конечно переносить все в один *.rc-файл. Есть ли другие способы разделить ресурсы компонента и проекта?
Но VC не дает включать в проект несколько *.rc-файлов (даже с разными именами), говорит
Multiple .rc files exist in this project. Only one can be marked as included in the build.
У меня VC5.0.
Неудобно конечно переносить все в один *.rc-файл. Есть ли другие способы разделить ресурсы компонента и проекта?
У меня на 6 VC, аналогично. Проблему решил следующим образом. Назвал второй ресурс как Resource2.rc и Resource2.h, в Resource2.rc исправил инклюд на нужній мне (то-есть Resource2.h) и уже в самой проге пишу #include "Resource2.h" и все работает.
и все работает.
Стоп. Не работает :(
инфа из МСДН:
To include resource files that will be added to your project at compile time
1.Place the resources in a resource script file with a unique filename. (Do not use projectname.rc, since this is the filename used for the main resource script file.)
2.From the View menu, choose Resource Includes.
3.In the Compile-time directives box, use the #include compiler directive to include the new resource file in the main resource file in the development environment.
The resources in files included in this way are made a part of your executable file at compile time. They are not directly available for editing or modification when you are working on your project’s main .rc file. You need to open included .rc files separately.
4. Click OK.
Сделал так - все ок, смотри аттач.
Но VC не дает включать в проект несколько *.rc-файлов (даже с разными именами), говорит
Multiple .rc files exist in this project. Only one can be marked as included in the build.
У меня VC5.0.
Неудобно конечно переносить все в один *.rc-файл. Есть ли другие способы разделить ресурсы компонента и проекта?
Да, припоминаю такие траблы, но сейчас я использую 7.0
Впредь, лучше сразу указывать версию инструмента.
Ну в принципе, Matush тебе дал исчерпывающий ответ.
Еще один нюанс: если ты пишешь некий обобщенный код, то может быть смысл заключить его в .lib ?
Да, припоминаю такие траблы, но сейчас я использую 7.0
Впредь, лучше сразу указывать версию инструмента.
Ну в принципе, Matush тебе дал исчерпывающий ответ.
Еще один нюанс: если ты пишешь некий обобщенный код, то может быть смысл заключить его в .lib ?
А что в 7.0 это решается по-другому?
А что в 7.0 это решается по-другому?
В 7.0 можно сделать .rc более одного
В 7.0 можно сделать .rc более одного
Значит нужно посмотреть VC7. Сколько занимает его установленная версия?
Значит нужно посмотреть VC7. Сколько занимает его установленная версия?
Все зависит от параметров установки. В среднем около 1Gb.
Все зависит от параметров установки. В среднем около 1Gb.
Я думаю без апгрейда не поставишь такого монстра (333 Celeron у меня). Полный VC5 занимает почти в 3 раза меньше на диске.