Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.043 c
2-1186128052
Dmitry_177
2007-08-03 12:00
2007.08.26
из строки systemtime


2-1185666098
WittySpark
2007-07-29 03:41
2007.08.26
Жуткая проблема с жутким компонентом в Delphi 7 !!!


2-1186099361
Riply
2007-08-03 04:02
2007.08.26
RtlDecompressBuffer - использование в цикле.


1-1181888482
JanMihail
2007-06-15 10:21
2007.08.26
Смена иконки папки под Vista


1-1181787504
Yus
2007-06-14 06:18
2007.08.26
Вопрос по шрифтам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский