Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.26;
Скачать: CL | DM;

Вниз

Dll с иконками   Найти похожие ветки 

 
Yekver   (2007-08-06 10:59) [0]

Вопрос может конечно и глупый, но я никогда не работал с Dll"ками. Мне нужно создать библиотеку с n-числом иконок в ней. Вопрос как их туда добавить?


 
Dib@zol ©   (2007-08-06 11:09) [1]

Создаёшь с помощью дельфяного редактора изображений (imgEdit.exe, в той же папке что и Delphi23.exe) ресурсный файл (напр icons.res), добавляешь туда все свои иконки, а в длл добавляешь так:

library Ico;
{$R Icons.res} // Этот файл должен находиться там же где и dpr
begin
end;

Компилируешь. Радуешься жизни...


 
ПЛОВ ©   (2007-08-06 11:52) [2]

dll файлы вообще-то предназначены несколько для других целей


 
Dib@zol ©   (2007-08-06 11:53) [3]

> dll файлы вообще-то предназначены несколько для других целей

Moricons.dll - а как ты объяснишь этот феномен?


 
Yekver   (2007-08-06 11:54) [4]

Не получается. Во-первых у меня Delphi 2007, а во вторых то что делается в виде ресурса не видно ни в одном просмоторщике иконок :( Они там есть, но в каком-то непонятном закодированным виде...(


 
Dib@zol ©   (2007-08-06 11:57) [5]

> то что делается в виде ресурса не видно ни в одном просмоторщике
> иконок

Оно так и не должно быть! Сделал ресурс - подгружай в ДЛЛ!


 
Инс ©   (2007-08-06 12:01) [6]


> dll файлы вообще-то предназначены несколько для других целей

DLL вообще предназначены для разных целей, в т.ч. и для таких. В подтверждение этому см. флаг LOAD_LIBRARY_AS_DATAFILE функции LoadLibrary


 
Инс ©   (2007-08-06 12:02) [7]

LoadLibraryEx


 
ПЛОВ ©   (2007-08-06 12:03) [8]

Делать dll только для того чтобы запихнуть в нее иконки - это бред. Их можно запихнуть в exe-шник и брать оттуда. В нем такие-же ресурсы как и в dll.

> Moricons.dll - а как ты объяснишь этот феномен?

Тоже не совсем правильно, но Moricons.dll это часть системы а не какой-то программы.


 
Yekver   (2007-08-06 12:04) [9]

Так и сделал. Только ресурс делал с помощью компилятора BRCC32.exe


 
stanislav ©   (2007-08-06 12:06) [10]

ПЛОВ ©   (06.08.07 12:03) [8]
в полне норамльно. Чем ОС не какая-то программа?


 
Инс ©   (2007-08-06 12:06) [11]


> [8] ПЛОВ ©   (06.08.07 12:03)

Я бы не был так категоричен. Иногда общий ресурс должны использовать разные приложения, как в cards.dll, например. Или если картинки или прочие ресурсы нужно обновить в уже распространяемой программе, удобно будет просто заменить DLL-ку.


 
\/iKTOR   (2007-08-06 12:08) [12]

Я извиняюсь за отклонение от темы, но меня интересует как организованны иконки в винде, я знаю что они лежат в файле Shell32, но когда из извлекаеш от туда, они как бы склеены в одну линейку, как скины для проигрывателей, так как они извлекаются из таких наборов?
И как такие наборы создаются.


 
palva ©   (2007-08-06 12:09) [13]

Не очень понятно, что у вас не получается. Файлы иконок у вас имеются? Ресурсный файл Res вам удалось получить? И потом что значит не видны? Вы спрашивали как их туда положить. Тогда подробно расскажите, как вы их собираетесь просматривать или доставать.


 
\/iKTOR   (2007-08-06 12:09) [14]

Всмысле средствами делфи их можно создать, и как тогда обращаться к каждой из них в отдельности.


 
Yekver   (2007-08-06 12:10) [15]


> Инс ©   (06.08.07 12:06) [11]


Именно для этого мне и нужна dll. Как это правильно реализовать мне тут объяснять?)


 
Dib@zol ©   (2007-08-06 12:11) [16]

> [12] \/iKTOR   (06.08.07 12:08)

С помощью банального битБЛТ. У иконок одинаковая ширина и высота, поэтому для загрузки нужной надо просто помножить номер иконки на высоту линейки и отчекрыжить её из этой линейки в заранее уготовленный битмап.


 
palva ©   (2007-08-06 12:11) [17]


> Yekver   (06.08.07 12:04) [9]
>
> Так и сделал. Только ресурс делал с помощью компилятора
> BRCC32.exe

Вот это правильно. А строку исходного файла описывающую иконку можете привести?


 
Dib@zol ©   (2007-08-06 12:12) [18]

> Как это правильно реализовать мне тут объяснять?)

Ну так ты ресурсный то файл получил (скомпилировал из *.RC в *.res)?


 
ПЛОВ ©   (2007-08-06 12:18) [19]


> Я бы не был так категоричен. Иногда общий ресурс должны
> использовать разные приложения, как в cards.dll, например.
>  Или если картинки или прочие ресурсы нужно обновить в уже
> распространяемой программе, удобно будет просто заменить
> DLL-ку.

Автор спрашивает про иконки а не про "прочие ресурсы". Интересно что за такая программа в которой нужно часто менять иконки? Если это общий ресурс, используемый разными приложениями то наверняка иконки можно было бы разместить в "главном" приложении (если конечно оно есть), зачем клепать для этого dll?


 
Yekver   (2007-08-06 12:18) [20]


> palva ©   (06.08.07 12:11) [17]


*.rc - файл:

DEFAULT ADDITION1 1.ICO
DEFAULT ADDITION1 2.ICO
DEFAULT ADDITION1 3.ICO



> Dib@zol ©   (06.08.07 12:12) [18]


Да. Только вот его когда открывает Restorator 2007, то в директории иконки он видит только иконку самого Делфи, а мои иконки идут отдельными директориями и отображаются в виде набора букв и цифр, а не картинки :(


 
Yekver   (2007-08-06 12:19) [21]


> ПЛОВ ©   (06.08.07 12:18) [19]


Затем что это Miranda IM и там иконки подгружаются из Dll


 
Инс ©   (2007-08-06 12:24) [22]


> [19] ПЛОВ ©   (06.08.07 12:18)

Посмтрел бы я как ПЛОВ подгрузил бы иконку для одного exe из другого :) В принципе можно, вот только логично ли...


 
ПЛОВ ©   (2007-08-06 12:27) [23]


> Посмтрел бы я как ПЛОВ подгрузил бы иконку для одного exe
> из другого :) В принципе можно, вот только логично ли..

Зачем делать ЕЩЕ ОДИН ФАЙЛ если можно успешно обйтись БЕЗ НЕГО? Ну тогда можно еще сделать несколько длл для каждой иконки...


 
Dib@zol ©   (2007-08-06 12:28) [24]

> Зачем делать ЕЩЕ ОДИН ФАЙЛ если можно успешно обйтись БЕЗ
> НЕГО? Ну тогда можно еще сделать несколько длл для каждой
> иконки...

Кхм. Логичность создания длл вам уже расписали. Теперь докажите логичность вашего "подхода"...


 
{RASkov} ©   (2007-08-06 12:29) [25]

> [23] ПЛОВ ©   (06.08.07 12:27)

Прекращай безобаснованный спор :) Можно кучей разных способов хранить ресурсы и Dll один из удобных случаев....
:о)


 
Инс ©   (2007-08-06 12:30) [26]


> [23] ПЛОВ ©   (06.08.07 12:27)

Не, я не про это. Вы никогда не разрабатывали сложные системы, состоящие из двух, трех и более exe? Иногда им требуются общие ресурсы. Включать по копии в каждый exe?
Только опять вы сейчас скажете, что пример надуман, автору нужно другое. Так что, насчет данного сабжа, то автор ясно сказал [21]


 
ПЛОВ ©   (2007-08-06 12:31) [27]


> Теперь докажите логичность вашего "подхода"...

Меньшее количество компонентов. Вместо приложений и dll только приложения.


 
palva ©   (2007-08-06 12:31) [28]


> Yekver   (06.08.07 12:18) [20]

Неправильно. Фактически вы используете пользовательский ресурс ADDITION1, и система не понимает, что это иконка. Кроме того у вас у всех иконок один и тот же идентификатор. Попробуйте так:

123 ICON "1.ICO"
124 ICON "2.ICO"
125 ICON "3.ICO"

Еще может быть, что у вас неправильные форматы иконок.
У меня работает такой вариант.

iiii.rc

131 icon "C:\Program Files\Common Files\Borland Shared\Images\Icons\construc.ico"
132 icon "C:\Program Files\Common Files\Borland Shared\Images\Icons\earth.ico"

iiii.pas

library iiii;
{$R iiii.res}
begin
end.


 
Dib@zol ©   (2007-08-06 12:33) [29]

> [27] ПЛОВ ©   (06.08.07 12:31)

Я не о том. Я про множество длл для одной иконки.


 
ПЛОВ ©   (2007-08-06 12:37) [30]


> Иногда им требуются общие ресурсы. Включать по копии в каждый
> exe? Только опять вы сейчас скажете, что пример надуман,
>  автору нужно другое. Так что, насчет данного сабжа, то
> автор ясно сказал [21]

Автор уже получил ответ. Так что это в продолжение развитой темы :)

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


 
Инс ©   (2007-08-06 12:39) [31]


> Я согласен, что если есть несколько приложений, использующих
> одни ресурсы, то их имеет смысл хранить в dll. Но если одно
> из етих приложений являеться основным и в любом случае будет
> присутствовать то можно хранить ресурсы в этом приложении.

С этим утверждением и я согласен, в принципе. Меня категоричность [8] смутила, вот я и комментирую.


 
Yekver   (2007-08-06 12:53) [32]

Спасибо всё, получилось....))



Страницы: 1 вся ветка

Текущий архив: 2007.08.26;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.022 c
2-1186372130
KPV-10k
2007-08-06 07:48
2007.08.26
Выпадающий список в DBComboBox


1-1180504967
Still Swamp
2007-05-30 10:02
2007.08.26
A class name TChartAxisTitle already exists


11-1168515485
Mabia
2007-01-11 14:38
2007.08.26
Установка Report&Print в D6


2-1186204452
vegarulez
2007-08-04 09:14
2007.08.26
Вопрос про ICQ.


15-1185954112
dr Gonzo
2007-08-01 11:41
2007.08.26
Справочник по Delphi издательства O Reilly