Иконка в message
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5078
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 50 раз
Иконка в message
Раньше не требовалось, сейчас столкнулся. Если в message указать стандартную иконку, например, icon:question, то в разных версиях ОС она отображается по разному. Попробовал заменить на иконку из файла. Если указать 'myIcon.ico' и подложить к программе, то отображает. А если прилинковать к dll и указать '~myIcon.ico', то не работает. Кроме как отказаться от message и делать свое окно, может есть какой-то еще вариант? Это с рантаймом с6, скорее всего, на с11 будет аналогично.
C6/C11, ШВС, tps/btrieve.
- Дед Пахом
- Старичок
- Сообщения: 3267
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 48 раз
- Контактная информация:
Иконка в message
Обычно в dll делают WINDOW-процедуру без кода, просто чтобы накидать на окно картинок - они прилинкуются к dll и будут доступны через ~myIcon.ico. Можно и без окна, просто добавить файлы к проекту как ресурсы.
С уважением, ДП
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5078
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 50 раз
Иконка в message
Я так и делал. Если для кнопки устанавливать через prop:icon, то работает, а в message нет.
C6/C11, ШВС, tps/btrieve.
- Дед Пахом
- Старичок
- Сообщения: 3267
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 48 раз
- Контактная информация:
Иконка в message
Упс, прочитал по диагонали.
А это только для dll или в exe тоже не работает? Скорее всего, message просто не поддерживает формат "~myIcon.ico".
А это только для dll или в exe тоже не работает? Скорее всего, message просто не поддерживает формат "~myIcon.ico".
С уважением, ДП
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5078
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 50 раз
Иконка в message
Я для dll пробовал. Где-то на памяти, что когда-то давно этот вопрос поднимался, но не помню результата. Похоже, что дело именно в message.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7867
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 85 раз
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5078
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 50 раз
Иконка в message
Не работает.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5078
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 50 раз
Иконка в message
Я так понимаю, что message это уже уровень win api, там прилинкованные иконки не известны. То есть, решить проблему можно только заменив стандартный message своим окном. Мне это не проблематично, так как message я напрямую в прикладном коде не использую, в основном, через вызов функций прокладок. Когда-то во времена с55 с message были проблемы, и использовались свои окна, а в с6 вернулось на message.
У CapeSoft на эту тему библиотечка была, они хукают message и подменяют своим диалоговым окном с расширенными возможностями.
У CapeSoft на эту тему библиотечка была, они хукают message и подменяют своим диалоговым окном с расширенными возможностями.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7867
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 85 раз
Иконка в message
Хотелось бы увидеть пример демонстрирующий проблему (не фото / видео !) и прогнать его на заведомо рабочей среде разработки.
И тогда уже обсуждать решение. Есть опасения, что это локальная проблема ...
И тогда уже обсуждать решение. Есть опасения, что это локальная проблема ...
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5078
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 50 раз
Иконка в message
Забавный глюк. Из обычной оконной процедуры вызываем функцию с message из другой dll. В функции с message, вызываем message перед open(window), первый раз не работает. После open(window) - работает. При повторном вызове функции работает всегда. Закрываем окно, из которого вызываем функцию, открываем, первый раз до open(window) снова не работает. В общем, обход я нашел, надо перед message открыть пустое окно, а после закрыть. Глюк воспроизводится стабильно, делать пример на стандартных шаблонах времени нет. Главное, что понятно, как обойти.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7867
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 85 раз
Иконка в message
Возможно, что в штатных шаблонах Clarion этой проблемы и не было ...
Отлично, что получен результат, который Вас устроил.

Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5078
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 50 раз
Иконка в message
Это не проблема шаблонов, а проблема в рантайме.
Можете сами попробовать, должно получиться. Делаете в одной dll соурс процедуру без окна, в которой один только message со ссылкой на приликованную к этой dll иконку (типа ~myicon.ico). Из другой dll вызываете эту процедуру, например, при нажатии на кнопку. Message без иконки. Если в соурс процедуре сделать пустое окно и перед message добавить open(Window), то message с иконкой, как положено.
Один только момент, что рантайм C6. На C11 не пробовал, так как не актуально.
Можете сами попробовать, должно получиться. Делаете в одной dll соурс процедуру без окна, в которой один только message со ссылкой на приликованную к этой dll иконку (типа ~myicon.ico). Из другой dll вызываете эту процедуру, например, при нажатии на кнопку. Message без иконки. Если в соурс процедуре сделать пустое окно и перед message добавить open(Window), то message с иконкой, как положено.
Один только момент, что рантайм C6. На C11 не пробовал, так как не актуально.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7867
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 85 раз
Иконка в message
У Вас ещё и вызов процедуры с Message() из DLL ...
Попробуйте прилинковать тогда Icon к проекту вызывающего DLL (а не EXE, как я написал ранее).
RunTime работает с прилинкованными ресурсами проекта, список которых формирует шаблон.
C штатными шаблонами Clarion (по крайне мере ABC) я такой проблемы не вижу ...

Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5078
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 50 раз
Иконка в message
Да, если прилинковать иконку к dll, из которой вызывается, то работает корректно. Но это совсем костылище, так как процедура с message может вызываться из разных dll. Обход проблемы через открытие пустого окна меньшее из зол.Игорь Столяров писал(а): ↑27 Март 2023, 7:02 У Вас ещё и вызов процедуры с Message() из DLL ...
Попробуйте прилинковать тогда Icon к проекту вызывающего DLL (а не EXE, как я написал ранее).
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7867
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 85 раз
Иконка в message
В принципе, то же самое происходит и с иконками в PopUp().
Видимо (!!!) для RunTime доступны ресурсы проекта в котором создан текущий поток.
Как говорит молодёжь: не баг, а фича ...

Make Clarion Great Again ! 