Форум программистов, компьютерный форум, киберфорум
Наши страницы
Basic
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.56/36: Рейтинг темы: голосов - 36, средняя оценка - 4.56
SergeyA
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
1

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

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

Добрый день, понадобилась помощь в разработке dll для поддержки скинов в других ЯП, сам пишу на AutoIt но там не очень хорошо создавать скины,вся графика находится снаружи скрипта и защиты ни какой, пробую написать на PureBasic, там есть функции по созданию PAK архивов, по моему от туда можно загружать графику и одевать окно не извлекая ни чего из архива, листаю справку по PureBasic 2ой день, пока не очень понятно,так как переход с одного языка на другой сложноват, прошу помощи у знающих людей в создании dll, с чего начать и как двигаться дальше, если есть примеры, хотелось бы очень увидеть, заранее спасибо.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2011, 12:41
Ответы с готовыми решениями:

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

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

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

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

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

74
PB
Просто прогер
1283 / 1070 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 18:59 2
Проблемы с созданием dll или с кодом скинов?
Сразу скажу, тема не простая (про поддержку скинов). Сделать можно, но для этого нужно нормально владеть языком и знать WinAPI.
Если изучаете язык всего второй день, то будет очень сложно - сначала нужно хоть немного выучить язык и усвоить все его особенности.
Для начала прочитайте это. http://www.pure-basic.narod.ru/docs/books/contents.html
1
SergeyA
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 19:34  [ТС] 3
Спасибо большое за ссылку,буду учить,я понимаю что это очень сложная задача,просто с одного языка прыгать на другой очень трудно, по мере своих возможностей постараюсь понять 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
Просто прогер
1283 / 1070 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 19:47 4
Цитата Сообщение от SergeyA Посмотреть сообщение
запаковывать файлы уже умею
Функции из Packer?
Предположим что в файле MySkin.pak уже упакован один рисунок.
Код
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.
Код
ProcedureDLL LoadSkin(hWnd)
  hBitmap = CatchImage(0, ?im1, ?im1end-?im1)
  If hBitmap
    SkinWin(hWnd, hBitmap)
  EndIf
EndProcedure 

DataSection
  im1:
  IncludeBinary "Image.bmp"
  im1end:
EndDataSection
1
05.07.2011, 19:47
SergeyA
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 19:50  [ТС] 5
Вот это пояснение, спасибо огромное выручаете, буду постепенно учится и добавлять функции в dll, а например если в паке не одна картинка находится а несколько,одна на окно, другая на кнопки, как быть, или это по ходу дела?
0
PB
Просто прогер
1283 / 1070 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 20:01 6
Это уже зависит от того, нужно ли все скиновые файлы спрятать в dll или можно чтобы они были в отдельном файле.
0
SergeyA
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 20:03  [ТС] 7
Только отдельный PAK файл может не понадобиться если добавить рисунок непосредственно в dll.
Понимаете просто пак будет как файл скина,который можно менять на другой с предварительно загруженной графикой, просто если непосредственно в dll добавлять , то придётся каждый раз новую dll создавать с графикой чтобы поменять скин
0
PB
Просто прогер
1283 / 1070 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 20:06 8
Тогда действительно лучше отдельный файл.
0
SergeyA
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 20:44  [ТС] 9
Протестировал код,работает на ура, только тянуть за окно нельзя и Title окна не показывает, Title по моему можно вывести через DrawText !?
0
PB
Просто прогер
1283 / 1070 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 20:49 10
Окно что без заголовка?
0
SergeyA
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 20:51  [ТС] 11
Да на этом ЯП приходится окну указывать стиль POPUP что бы картинка прорисовывалась лучше и была с прозрачными краями - то есть с закруглёнными
0
PB
Просто прогер
1283 / 1070 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 20:59 12
Тогда нужно самому формировать заголовок окна с надписью и кнопками.
0
SergeyA
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
05.07.2011, 21:03  [ТС] 13
А как это сделать? ,а лучше по моему вернутся к паку чтоб к нему не возвращатся,загрузить в пак все картинки элементов окна и после написания нужной функции вызывать нужную графику из пака? хотя как знающий человек больше меня в PureBasic, Вы лучше знаете последовательность действий
0
PB
Просто прогер
1283 / 1070 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.07.2011, 21:21 14
Тема довольно сложная и на пальцах не объяснить.
Нужно также хорошее знание WinAPI для реализации этого проекта.

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

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

Добавлено через 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
Просто прогер
1283 / 1070 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
07.07.2011, 10:16 20
Цитата Сообщение от SergeyA Посмотреть сообщение
Мне сказали что из пака нельзя будет всё её содержимое вернуть
Интересно кто такое сказал?
Да, по умолчанию имена файлов не сохраняются, но сами файлы-то в паке и их можно извлечь от туда в той же последовательности как их добавили в пак.
0
07.07.2011, 10:16
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2011, 10:16

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru