Страница 1 из 1

Добавлено: 04 Июнь 2004, 12:27
Гость
Здравствуйте.
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)

Добавлено: 04 Июнь 2004, 16:09
Гость
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)