|
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
|
|
Создание dll для поддержки скинов05.07.2011, 12:41. Показов 9424. Ответов 74
Метки нет (Все метки)
Добрый день, понадобилась помощь в разработке dll для поддержки скинов в других ЯП, сам пишу на AutoIt но там не очень хорошо создавать скины,вся графика находится снаружи скрипта и защиты ни какой, пробую написать на PureBasic, там есть функции по созданию PAK архивов, по моему от туда можно загружать графику и одевать окно не извлекая ни чего из архива, листаю справку по PureBasic 2ой день, пока не очень понятно,так как переход с одного языка на другой сложноват, прошу помощи у знающих людей в создании dll, с чего начать и как двигаться дальше, если есть примеры, хотелось бы очень увидеть, заранее спасибо.
0
|
|
| 05.07.2011, 12:41 | |
|
Ответы с готовыми решениями:
74
Использование скинов для приложения Как установить классы скинов для c# Компонент для создания шкурок (скинов) |
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
|||||||||||||
| 30.12.2011, 14:12 | |||||||||||||
|
Окно перетаскивается за картинку, правда, лучше заменить эту строку
1
|
|||||||||||||
|
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
|
|
| 30.12.2011, 16:14 [ТС] | |
|
Да перемещается, значит такой вариант можно использовать...есть ещё 2 проблемы, титл печатается на окне только когда окно прорисовывается, а при появлении окна текста нету, я добавил обработку #WM_NOTIFY и на окне всегда есть текст, правдо он всегда ресуется поверх придедущего текста если получает сообщения #WM_PAINT и #WM_NOTIFY, как это сделать корректно?
А 2я проблема, я создал на заголовке кнопку (Картинку) Close, но она не реагирует на клик и за неё тоже можно перемещать окно.
0
|
|
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
|||
| 30.12.2011, 17:29 | |||
|
Можно упростить задачу если поверх рисунка поместить дочернее окно (Static) с прозрачным фоном, нулевой кистью и с расширенным стилем #WS_EX_COMPOSITED. В этот Static нужно выводить текст заголовка окна. По сути, это обычный рисунок и чтобы его "оживить", должны быть обработчики события перемещения мышки над ним и клика левой кнопкой мышки по нему.
0
|
|||
|
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
|
|
| 30.12.2011, 18:27 [ТС] | |
|
В данном коде нет, но я его писал, не работал, и примеры смотрел, делал, и всё равно не работал, наверное 1я, 2я и 3я картинка почему то перекрывают остальные, чего по сути и не должно быть.
0
|
|
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
|||||||
| 30.12.2011, 18:54 | |||||||
1
|
|||||||
|
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
|
|
| 30.12.2011, 19:10 [ТС] | |
|
Спасибо, работает, но сразу закрывается при нажатии, а в обычных окнах, если нажали на кнопку и отпустили лкм и если курсор находится над этой кнопкой то только тогда должна сработать, иначе я не буду успевать картинку менять для визуального представления
0
|
|
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
||
| 30.12.2011, 19:46 | ||
|
А чтобы работало как нужно, следует сделать немного по другому. На ум приходит вариант с вклиниванием в функцию контрола hWnd_Close и обработка кликов мышкой и перемещением мышки над контролом. На словах долго объяснять, посмотрите пример из архива, который демонстрирует вышесказанное.
1
|
||
|
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
|
|
| 30.12.2011, 20:09 [ТС] | |
|
Супер, спасибо, попробую разобраться
0
|
|
|
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
|
|
| 02.01.2012, 22:40 [ТС] | |
|
Вроде с кнопкой всё понятно, но лучше сразу может придумать как упаковать все картинки в один файл, и потом их извлекать и применять, пока не поздно???
0
|
|
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
||
| 03.01.2012, 02:02 | ||
|
Если картинки должны хранится внутри DLL, то тогда нужно собрать их всех в один файл (естественно что кроме самих рисунков нужно хранить инфу о размере файлов), сжать его с помощью PackMemory() и добавить в DLL с помощью IncludeBinary. При загрузке DLL, распаковка выполняется функцией UnpackMemory() и затем производится процесс разложения данных на отдельные рисунки.
1
|
||
|
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
|
|
| 03.01.2012, 14:55 [ТС] | |
|
Нужно именно в отдельном файле и как Вы сказали с информацией о размерах
Добавлено через 12 часов 22 минуты C файлами понятно, я уже тестировал и упаковку и распаковку и вывод в окно из памяти, а как быть с информацией о размерах?
0
|
|
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
|
| 03.01.2012, 15:10 | |
|
Если упаковка / распаковка выполняется с помощью функций CreatePack() и OpenPack(), то при упаковке, размер файла вычисляется функцией AddPackFile() и записывается в архив. При распаковке, размер можно получить с помощью функции PackFileSize().
0
|
|
|
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
|
|
| 03.01.2012, 15:21 [ТС] | |
|
Не, не стой инфой о размерах, то есть хотя бы например создать INI файл где будут указаны первоначальные размеры всех картинок на окне, потом например его можно тоже добавить в pack но после распаковки мне даётся адрес в памяти где этот файл INI находится, как его прочитать из памяти?
0
|
|
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
|
| 03.01.2012, 15:54 | |
|
INI файл нужно сохранить на диск и работать с ним с помощью функций библиотеки Preference.
Если нежелательно создавать файл на диске, то можно хранить информацию, скажем, в XML формате. Данные можно экспортировать в память функцией ExportXML() и загрузить из памяти функцией CatchXML().
1
|
|
|
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
|
|
| 03.01.2012, 15:56 [ТС] | |
|
Спасибо, XML в принципе не критичен.
0
|
|
| 03.01.2012, 15:56 | |
|
Установка скинов для Visual Studio Создание dll для Hook' ов Создание dll в delphi для 1С создание dll для подключения к бд oracle
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|