Здравствуйте.
C55 ABC
Существует шаблон. Шаблон использует класс. В шаблоне пользователь указывает наименование иконки. Иконка при помощи шаблона линкуется в проект. В классе эта иконка "загружается" посредством API LoadImage(SYSTEM{Prop:AppInstance}...). И все хорошо пока дело касается только single-exe, или когда шаблон используется непосредственно в exe-файле.
Теперь ситуация с multi-dll - проектом. Иконки линкуются шаблоном в dll. А, насколько я понимаю, SYSTEM{Prop:AppInstance} относится только к exe-файлу. Т.е. я не знаю хэндлов dll. В итоге, там где надо, иконки не отображаются в следствии их якобы отсутствия. Если иконы прилинковать руками в exe-Файл, то все ОК.
Вопрос:
1. может есть какое либо стандартное решение такого случая ?
2. можно ли как нибудь узнать хэндл dll (она ведь загружается вместе с exe-шником, если не рассматривать экзотические варианты)
PS
линковка иконок обязательное условие.
--
С уважением,
Still mailto:zero@clarionlife.net
Написал: ClaList(2)
загрузка икон
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Zero,
Есть такое свойство SYSTEM{Prop:ImageInstance}, поддерживается начиная с версии Clarion 5.0, хотя и не документированное.
Указывает на текущий модуль, из которого загружаются ресурсы посредством обычного тильда-присваивания:
?Image{Prop:Text} = '~LinkedImage.gif'
?Control{Prop:Icon} = '~LinkedIcon.ico'
?Target{Prop:Cursor} = '~LinkedCursor.cur'
Возможно как чтение SYSTEM{Prop:ImageInstance}, так и его запись.
Чтобы _неявно_ установить SYSTEM{Prop:ImageInstance} на DLL модуль, достаточно открыть какое-нибудь окошко, которое определено в этой DLL. После чего уже это значение можно и сохранить про запас:
GLO:ImageInstance = SYSTEM{Prop:ImageInstance}
Насчет узнать {Prop:ImageInstance} для DLL посредством Windows API, мне это в свое время и не понадобилось, т.к. моя библиотека, где я пользовался SYSTEM{Prop:ImageInstance}, открывает таки свои окна. А если и не окрывает, то можно открыть и сразу закрыть окошко размером в один пиксел за пределами экрана. ИМХО, никому от этого плохо не станет.
С уважением,
---
Oleg Fomin <oleg@fomin.info>
Написал: ClaList(2)
Есть такое свойство SYSTEM{Prop:ImageInstance}, поддерживается начиная с версии Clarion 5.0, хотя и не документированное.
Указывает на текущий модуль, из которого загружаются ресурсы посредством обычного тильда-присваивания:
?Image{Prop:Text} = '~LinkedImage.gif'
?Control{Prop:Icon} = '~LinkedIcon.ico'
?Target{Prop:Cursor} = '~LinkedCursor.cur'
Возможно как чтение SYSTEM{Prop:ImageInstance}, так и его запись.
Чтобы _неявно_ установить SYSTEM{Prop:ImageInstance} на DLL модуль, достаточно открыть какое-нибудь окошко, которое определено в этой DLL. После чего уже это значение можно и сохранить про запас:
GLO:ImageInstance = SYSTEM{Prop:ImageInstance}
Насчет узнать {Prop:ImageInstance} для DLL посредством Windows API, мне это в свое время и не понадобилось, т.к. моя библиотека, где я пользовался SYSTEM{Prop:ImageInstance}, открывает таки свои окна. А если и не окрывает, то можно открыть и сразу закрыть окошко размером в один пиксел за пределами экрана. ИМХО, никому от этого плохо не станет.
С уважением,
---
Oleg Fomin <oleg@fomin.info>
Написал: ClaList(2)