Форум: "Начинающим";
Текущий архив: 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.051 c