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

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

05.07.2011, 12:41. Показов 9055. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru