Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Картинки, иконки внутрь EXEшника.


Автор: Mal Hack 19.1.2006, 02:00
Когда создаешь vcl приложение и ляпаешь к примеру TImage или иконку пришиваешь к какому-ть элементу меню или форме, то сама картинка пишется в dfm файл.

Если создавать объекты динамически, то в них можно будет подгружать иконку из файла, но при этом, иконка всегда должна быть рядом с файлом.

Я хочу, чтобы эхзешник был один, без всяких граф. файлов.

Можно ли как-ть добавит картинки в проект при динамическом создании объекта указать как-бы ссылку на ресурс, но при компиляции все это будет единым exe.

Работаю в BDS 2006.

Автор: azesmcar 19.1.2006, 09:33
Используй компонент TImageList..не знаю как в BDS2006, не видел его...но в Borland C++ Builder 6 он есть...

Автор: AntonChik 19.1.2006, 11:45
может я туплю, но что мешает засунуть картинки и иконки в ресуры ?!?!?!?

Автор: Mal Hack 19.1.2006, 14:24
Цитата(azesmcar @ 19.1.2006, 09:33 Найти цитируемый пост)

Используй компонент TImageList..не знаю как в BDS2006, не видел его...но в Borland C++ Builder 6 он есть...

Нужна внешняя картинка или dfm файл.
Цитата(AntonChik @ 19.1.2006, 11:45 Найти цитируемый пост)

может я туплю, но что мешает засунуть картинки и иконки в ресуры ?!?!?!?

Отсутствие знаний. Можно поподробнее.

Автор: azesmcar 19.1.2006, 14:44
Цитата

Нужна внешняя картинка или dfm файл.


Проблемы не понял...
TImageList и запихнет твои картинки и иконки в DFM (ресурс)...

Автор: _hunter 19.1.2006, 14:49
Цитата(Mal Hack @ 19.1.2006, 13:24 Найти цитируемый пост)

Нужна внешняя картинка или dfm файл.

она должна остаться внешней и после сборки проекта? или включаться в проект на стадии сборки?

Автор: Mal Hack 19.1.2006, 14:59
После сборки должен остаться только один exe файл, без внешних картинок.
Цитата(azesmcar @ 19.1.2006, 14:44 Найти цитируемый пост)

TImageList и запихнет твои картинки и иконки в DFM (ресурс)...

Да, если я ляпаю компонент на форму и туда подгружаю картинку через Properties, а если я создаю объект динамически?

Автор: _hunter 19.1.2006, 15:19
тогда засовывай их всех как ресурсы:
создаеш текстовый файл с расширением .rc
и в нем ( на каждую картинку ) пишеш строки:
имя IMAGE "путь"

потом, в программе, загружаеш их с помощью LoadImage


так же можно ( чтобы меньше лишних движений делать ) где-нить на главную форму повесить ImageList, в него засунуть все используемые картинки и потом, по мере необходимости, брать их

Автор: Mal Hack 19.1.2006, 15:51
Цитата(_hunter @ 19.1.2006, 15:19 Найти цитируемый пост)

создаеш текстовый файл с расширением .rc
и в нем ( на каждую картинку ) пишеш строки:
имя IMAGE "путь"

При компиляции они будут включены в exe?
Цитата(_hunter @ 19.1.2006, 15:19 Найти цитируемый пост)

потом, в программе, загружаеш их с помощью LoadImage

Как? Я не знаю, как обратиться к ресурсу.

Автор: _hunter 19.1.2006, 16:57
Цитата(Mal Hack @ 19.1.2006, 14:51 Найти цитируемый пост)

При компиляции они будут включены в exe?

а, ну да, его еще к проекту добавить нужно -- Project->Add to project
Цитата(Mal Hack @ 19.1.2006, 14:51 Найти цитируемый пост)

Как? Я не знаю, как обратиться к ресурсу.

а это просто:
Код

HANDLE LoadImage(
    HINSTANCE hinst,
    LPCTSTR lpszName,
    UINT uType,
    int cxDesired,
    int cyDesired,
    UINT fuLoad
);

все ресурсы в exe-шнике идут одним куском

Автор: Mal Hack 19.1.2006, 19:28
Окей. Спасибо. В ближайшее время попробую.
ЗЫ: А подключать ресурсный файл в коде как-ть надо?

Автор: _hunter 19.1.2006, 20:05
если к проекту добавил -- не надо. он и скомпилируется сам

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)