С Новым годом! Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/42: Рейтинг темы: голосов - 42, средняя оценка - 4.76
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64

Создание dll для поддержки скинов

05.07.2011, 12:41. Показов 8947. Ответов 74
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, понадобилась помощь в разработке dll для поддержки скинов в других ЯП, сам пишу на AutoIt но там не очень хорошо создавать скины,вся графика находится снаружи скрипта и защиты ни какой, пробую написать на PureBasic, там есть функции по созданию PAK архивов, по моему от туда можно загружать графику и одевать окно не извлекая ни чего из архива, листаю справку по PureBasic 2ой день, пока не очень понятно,так как переход с одного языка на другой сложноват, прошу помощи у знающих людей в создании dll, с чего начать и как двигаться дальше, если есть примеры, хотелось бы очень увидеть, заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.07.2011, 12:41
Ответы с готовыми решениями:

Использование скинов для приложения
Приветик всем!!! Как получить шаблон 2007 для своей программы

Как установить классы скинов для c#
Помогите пожалуйста, мне нужно установить классы скинов на C#, как это можно реализовать, просто новичек в этом деле, и если кто может,...

Компонент для создания шкурок (скинов)
сам не знаю что хочу, но гдето видел некто не подскажет))) вообщем вот: Где и что скачать,как установить (вроде) "модуля" для...

74
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 18:59
Проблемы с созданием dll или с кодом скинов?
Сразу скажу, тема не простая (про поддержку скинов). Сделать можно, но для этого нужно нормально владеть языком и знать WinAPI.
Если изучаете язык всего второй день, то будет очень сложно - сначала нужно хоть немного выучить язык и усвоить все его особенности.
Для начала прочитайте это. http://www.pure-basic.narod.ru... tents.html
1
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 19:34  [ТС]
Спасибо большое за ссылку,буду учить,я понимаю что это очень сложная задача,просто с одного языка прыгать на другой очень трудно, по мере своих возможностей постараюсь понять PureBasic и разобраться с ним, в создании dll быстрота не нужна в смысле она не срочно мне нужна, пусть плывёт по своей калие , первое что нужно реализовать - это скин самого окна, элементы потом, я думаю так лучше будет, за помощь и отзыв +1


Я вот так скин окна прогружал:

PureBasic
1
2
3
4
5
6
ProcedureDLL LoadSkin(hWnd,Image$)
 
  hBitmap = LoadImage(0, Image$)
  SkinWin(hWnd, hBitmap)
 
EndProcedure
Но картинки находятся в открытом виде и любой кому это нужно сможет изменить и поменять скин,да и программа будет компактней состоящая из одной dll, пака с картинками и непосредственно самой программы, запаковывать файлы уже умею, не могу научится не извлекая их из пака прогружать в окне,мне приводили пример да и в справке тоже есть пример,но разобраться пока не могу, я быстрее учусь на примерах связанных по теме.
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 19:47
Цитата Сообщение от SergeyA Посмотреть сообщение
запаковывать файлы уже умею
Функции из Packer?
Предположим что в файле MySkin.pak уже упакован один рисунок.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
ProcedureDLL LoadSkin(hWnd)
  If OpenPack("MySkin.pak")
    *Point=NextPackFile()
    Size=PackFileSize()
    If *Point And Size>0
      hBitmap = CatchImage(0, *Point, Size)
      If hBitmap
        SkinWin(hWnd, hBitmap)
      EndIf
    EndIf
    ClosePack()
  EndIf
EndProcedure
Только отдельный PAK файл может не понадобиться если добавить рисунок непосредственно в dll.
Code
1
2
3
4
5
6
7
8
9
10
11
12
ProcedureDLL LoadSkin(hWnd)
  hBitmap = CatchImage(0, ?im1, ?im1end-?im1)
  If hBitmap
    SkinWin(hWnd, hBitmap)
  EndIf
EndProcedure 
 
DataSection
  im1:
  IncludeBinary "Image.bmp"
  im1end:
EndDataSection
1
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 19:50  [ТС]
Вот это пояснение, спасибо огромное выручаете, буду постепенно учится и добавлять функции в dll, а например если в паке не одна картинка находится а несколько,одна на окно, другая на кнопки, как быть, или это по ходу дела?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 20:01
Это уже зависит от того, нужно ли все скиновые файлы спрятать в dll или можно чтобы они были в отдельном файле.
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 20:03  [ТС]
Только отдельный PAK файл может не понадобиться если добавить рисунок непосредственно в dll.
Понимаете просто пак будет как файл скина,который можно менять на другой с предварительно загруженной графикой, просто если непосредственно в dll добавлять , то придётся каждый раз новую dll создавать с графикой чтобы поменять скин
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 20:06
Тогда действительно лучше отдельный файл.
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 20:44  [ТС]
Протестировал код,работает на ура, только тянуть за окно нельзя и Title окна не показывает, Title по моему можно вывести через DrawText !?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 20:49
Окно что без заголовка?
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 20:51  [ТС]
Да на этом ЯП приходится окну указывать стиль POPUP что бы картинка прорисовывалась лучше и была с прозрачными краями - то есть с закруглёнными
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 20:59
Тогда нужно самому формировать заголовок окна с надписью и кнопками.
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 21:03  [ТС]
А как это сделать? ,а лучше по моему вернутся к паку чтоб к нему не возвращатся,загрузить в пак все картинки элементов окна и после написания нужной функции вызывать нужную графику из пака? хотя как знающий человек больше меня в PureBasic, Вы лучше знаете последовательность действий
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 21:21
Тема довольно сложная и на пальцах не объяснить.
Нужно также хорошее знание WinAPI для реализации этого проекта.

В пак, файлы добавляются вызовом функции AddPackFile.
1
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 21:48  [ТС]
Да, в пак я умею добавлять,я также все функции раздела пак добавил в dll чтобы была возможность в другом ЯП запаковывать файлы.

Добавлено через 25 минут
А где можно про WinAPI почитать? а лучше с примерами
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 21:59
Цитата Сообщение от SergeyA Посмотреть сообщение
А где можно про WinAPI
На сайте http://microsoft.com
1
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 22:01  [ТС]
Спасибо, я тогда пошёл изучать и завтра буду
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 22:14
Эм...
Там WinAPI функций как собак нерезаных!
Надо изучать не все подряд, а только то, что непосредственно связанно с работой с окнами.
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
06.07.2011, 21:40  [ТС]
Хорошо

Добавлено через 12 часов 36 минут
Я посмотрел WinAPI и нашёл такую функцию CreateWindowsEx её можно ставить как кнопкой также и любым статическим элементом

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Procedure WindowCallback(hWnd, Msg, wParam, lParam) 
  Shared hButton 
  
  Select Msg 
    Case #WM_COMMAND 
       If hButton = lParam 
         MessageBox_(hWnd,"Ну что за день та такой"+Chr(10)+"Все меня закликали бедную!","Бедная я кнопко",64) 
       EndIf 
    Case #WM_CLOSE 
      DestroyWindow_(hWnd) 
    Case #WM_DESTROY 
      PostQuitMessage_(0) : Result  = 0 
    Default 
      Result  = DefWindowProc_(hWnd, Msg, wParam, lParam) 
  EndSelect 
  
  ProcedureReturn Result 
EndProcedure  
  
InitCommonControls_() 
DefaultFont = GetStockObject_(#DEFAULT_GUI_FONT) 
  
WindowClass.s    = "PureBasic_Window" 
wc.WNDCLASSEX 
wc\cbsize        = SizeOf(WNDCLASSEX) 
wc\lpfnWndProc   = @WindowCallback() 
wc\hCursor       = LoadCursor_(0, #IDC_ARROW) 
wc\hbrBackground = #COLOR_WINDOW 
wc\lpszClassName = @WindowClass 
RegisterClassEx_(@wc) 
  
Win_x=GetSystemMetrics_(#SM_CXSCREEN)/2-100 
Win_y=GetSystemMetrics_(#SM_CYSCREEN)/2-50 
  
hWndMain  = CreateWindowEx_(0, WindowClass, "Мелкая прога API", #WS_SYSMENU | #WS_MINIMIZEBOX, Win_x, Win_y, 200, 120, 0, 0, 0, 0) 
  
Text.s="Бинарник этой проги довольно мелкий и не требует дополнительных DLL для своей работы" 
hText=CreateWindowEx_(0,"Static", Text, #WS_CHILD | #WS_VISIBLE, 10,10,180,54, hWndMain, 0, 0, 0) 
SendMessage_(hText, #WM_SETFONT, DefaultFont, 1) 
  
hButton=CreateWindowEx_(0, "Button", "Типа кнопко", #WS_CHILD | #WS_VISIBLE, 100,64,50,20, hWndMain, 0, 0, 0) 
SendMessage_(hButton, #WM_SETFONT, DefaultFont, 1) 
  
  
ShowWindow_(hWndMain,  #SW_SHOWDEFAULT) 
UpdateWindow_(hWndMain); 
  
While GetMessage_(msg.MSG, #Null, 0, 0 ) 
  TranslateMessage_(msg) 
  DispatchMessage_(msg) 
Wend 
End
Добавлено через 10 часов 49 минут
Мне сказали что из пака нельзя будет всё её содержимое вернуть,я подумал а какой смысл тогда пака....
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
07.07.2011, 10:16
Цитата Сообщение от SergeyA Посмотреть сообщение
Мне сказали что из пака нельзя будет всё её содержимое вернуть
Интересно кто такое сказал?
Да, по умолчанию имена файлов не сохраняются, но сами файлы-то в паке и их можно извлечь от туда в той же последовательности как их добавили в пак.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.07.2011, 10:16
Помогаю со студенческими работами здесь

Установка скинов для Visual Studio
Подскажите как ПРАВИЛЬНО устанавливать скины и где их брать?

Создание dll для Hook' ов
подскажите, что нужно прописать в dll файле и основном, чтобы программа считывала нажатия клавиш в блокноте?

Создание dll в delphi для 1С
Есть dll без исходников, для нее есть интерфейс на delphi. Стоит задача подружить эту библиотеку с 1С. На сколько понял с прочитанного в...

создание dll для подключения к бд oracle
Пытаюсь вынести подключение к бд oracle в dll. Подскажите, пожалуйста, как можно вынести строку подключения строка вида: ...

Создание dll для связи бд с API
Здравствуйте!Надо написать dll для связи БД c формой скажем так, единственное что я знаю это подключение к SQL базе с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru