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

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

05.07.2011, 12:41. Показов 9358. Ответов 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
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
11.07.2011, 15:49  [ТС]
Студворк — интернет-сервис помощи студентам
Всё, догнал как сделать, а можно как нибудь убрать моргание скина при изменении размеров, вложил архив с примером для наглядности.
Вложения
Тип файла: rar Example.rar (296.6 Кб, 21 просмотров)
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
11.07.2011, 17:52  [ТС]
Всё,разобрался, поставил процедуру для получения титла окна, как теперь написать его на скине?

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Global hWnd_Static2, hWnd_Static3, hWnd_Static4, hWnd_Static5, hWnd_Static6, hWnd_Static7, hWnd_Static8, hWnd_Static9
 
Procedure WindowCallback(hWnd, Msg, wParam, lParam) 
  Shared hButton, *WindowProc
  
  Select Msg 
     Case #WM_COMMAND 
       If hButton = lParam 
         PostMessage_(hWnd, #WM_CLOSE, 0, 0)
       EndIf  
     Case #WM_SIZE  
         WinW = lParam & $FFFF 
         WinH = (lParam >> 16 ) & $FFFF
         If WinW>0 And WinH>0
           MoveWindow_(hWnd_Static2, 22,0,WinW-90, 24, #False)
           MoveWindow_(hWnd_Static3, WinW-88,0,88,22, #False)
           MoveWindow_(hWnd_Static4, 0,22,6,WinH-28, #False)
           MoveWindow_(hWnd_Static5, 6,22,WinW-6,WinH-6, #False)
           MoveWindow_(hWnd_Static6, WinW-6,22,6,WinH-28, #False)
           MoveWindow_(hWnd_Static7, 0,WinH-6,6,6, #False)
           MoveWindow_(hWnd_Static8, 6,WinH-6,WinW-12,6, #False)
           MoveWindow_(hWnd_Static9, WinW-6,WinH-6,6,6, #False)
         EndIf
   EndSelect 
   
  ProcedureReturn CallWindowProc_(*WindowProc, hWnd, Msg, wParam, lParam) 
EndProcedure 
 
Procedure.s GetText(hwnd) 
  MainText.s = Space(256) 
  Len=GetWindowText_(hwnd,@MainText,256) 
  MainText=Left(MainText, Len) 
  ProcedureReturn MainText 
EndProcedure
 
ProcedureDLL LoadSkin(hWnd)
  Shared hButton, *WindowProc 
  GetWindowRect_(hWnd, Win.RECT)
  WIDTH = Win\right-Win\left
  HEIGHT = Win\bottom - Win\top
  
  ;DefaultFont = GetStockObject_(#DEFAULT_GUI_FONT) 
  ;hButton=CreateWindowEx_(0, "Button", "", #WS_CHILD | #WS_VISIBLE, WIDTH - 24,7,16,16, hWnd, 0, 0, 0)  
  ;SendMessage_(hButton, #WM_SETFONT, DefaultFont, 1) 
  
  hWnd_Static1 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 22, 22, hWnd, 0, 0, 0)
  hWnd_Static2 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 22, 0,88, 22, hWnd, 0, 0, 0)
  hWnd_Static3 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, WIDTH - 88, 0, 88, 22, hWnd, 0, 0, 0)
  hWnd_Static4 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 22, 6, 6, hWnd, 0, 0, 0)
  hWnd_Static5 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 6, 22, WIDTH-12, 22, hWnd, 0, 0, 0)
  hWnd_Static6 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, WIDTH - 12, 22, 6, 6, hWnd, 0, 0, 0)
  hWnd_Static7 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 6, 6, hWnd, 0, 0, 0)
  hWnd_Static8 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 6, 0, 6, 6, hWnd, 0, 0, 0)
  hWnd_Static9 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, WIDTH - 12, 0, 6, 6, hWnd, 0, 0, 0)
 
  hBitmap1 = CatchImage(0, ?Img1, ?Img1End-?Img1)
  hBitmap2 = CatchImage(1, ?Img2, ?Img2End-?Img2)
  hBitmap3 = CatchImage(2, ?Img3, ?Img3End-?Img3)
  hBitmap4 = CatchImage(3, ?Img4, ?Img4End-?Img4)  
  hBitmap5 = CatchImage(4, ?Img5, ?Img5End-?Img5)
  hBitmap6 = CatchImage(5, ?Img6, ?Img6End-?Img6)  
  hBitmap7 = CatchImage(6, ?Img7, ?Img7End-?Img7)
  hBitmap8 = CatchImage(7, ?Img8, ?Img8End-?Img8)  
  hBitmap9 = CatchImage(8, ?Img9, ?Img9End-?Img9)   
  
  If hBitmap1
    SendMessage_(hWnd_Static1, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap1)
  EndIf 
  If hBitmap2
    SendMessage_(hWnd_Static2, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap2) 
  EndIf
  If hBitmap3
    SendMessage_(hWnd_Static3, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap3)
  EndIf 
  If hBitmap4
    SendMessage_(hWnd_Static4, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap4)
  EndIf
  If hBitmap5
    SendMessage_(hWnd_Static5, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap5)
  EndIf 
  If hBitmap6
    SendMessage_(hWnd_Static6, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap6)
  EndIf
  If hBitmap7
    SendMessage_(hWnd_Static7, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap7)
  EndIf 
  If hBitmap8
    SendMessage_(hWnd_Static8, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap8)
  EndIf  
  If hBitmap9
    SendMessage_(hWnd_Static9, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap9)
  EndIf  
  
  If *WindowProc=0
    *WindowProc=SetWindowLong_(hWnd, #GWL_WNDPROC, @WindowCallback())
  EndIf
  
  MoveWindow_(hWnd_Static2, 22, 0, WIDTH-88, 24, #False)
  MoveWindow_(hWnd_Static3, WIDTH - 88, 0, 88, 22, #False)
  MoveWindow_(hWnd_Static4, 0, 22, 6, HEIGHT-28, #False)
  MoveWindow_(hWnd_Static5, 6, 22, WIDTH-6, HEIGHT-6, #False)
  MoveWindow_(hWnd_Static6, WIDTH-6, 22, 6, HEIGHT-28, #False)
  MoveWindow_(hWnd_Static7, 0, HEIGHT-6, 6, 6, #False)
  MoveWindow_(hWnd_Static8, 6, HEIGHT-6, WIDTH-6, 6, #False)
  MoveWindow_(hWnd_Static9, WIDTH-6, HEIGHT-6, 6, 6, #False)  
  
  SetWindowLong_(hWnd,#GWL_STYLE, GetWindowLong_(hWnd,#GWL_STYLE)|#WS_CLIPSIBLINGS|#WS_CLIPCHILDREN)
  
EndProcedure 
 
DataSection
  Img1:
  IncludeBinary "1.bmp"
  Img1End:
  
  Img2:
  IncludeBinary "2.bmp"
  Img2End:
  
  Img3:
  IncludeBinary "3.bmp"
  Img3End:
  
  Img4:
  IncludeBinary "4.bmp"
  Img4End: 
  
  Img5:
  IncludeBinary "5.bmp"
  Img5End:
  
  Img6:
  IncludeBinary "6.bmp"
  Img6End:
  
  Img7:
  IncludeBinary "7.bmp"
  Img7End:  
  
  Img8:
  IncludeBinary "8.bmp"
  Img8End: 
  
  Img9:
  IncludeBinary "9.bmp"
  Img9End:  
EndDataSection
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
11.07.2011, 18:27
Цитата Сообщение от SergeyA Посмотреть сообщение
можно как нибудь убрать моргание скина
Можно попробовать заменить MoveWindow на SetWindowPos.
Code
1
SetWindowPos_(hWnd_Static2, #HWND_BOTTOM, Stat\left, Stat\top, WinW-88, Stat\bottom, #SWP_NOACTIVATE|#SWP_NOREDRAW)
Правда, насчет флага #SWP_NOREDRAW не уверен.
Если контрол перестанет отображаться - нужно убрать этот флаг.

Добавлено через 2 минуты
Цитата Сообщение от SergeyA Посмотреть сообщение
как теперь написать его на скине
Если на окне, то нужно использовать WinAPI функцию DrawText, а если на рисунке, то библиотека 2DDrawing в помощь.
1
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
11.07.2011, 18:33  [ТС]
Нашёл API функцию DrawText, ток разобраться не могу,как сделать массив состоящий из x,y,w,h и что такое HDC (это нэндл окна?)
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
11.07.2011, 18:47
Цитата Сообщение от SergeyA Посмотреть сообщение
Нашёл API функцию DrawText
Если разместить курсор на имени функции и нажать на F1, справка не появляется?
Это к тому, что не обязательно искать описание функций в интернете.

Цитата Сообщение от SergeyA Посмотреть сообщение
как сделать массив состоящий из x,y,w,h
Это координаты надписи в окне, а не массив.

Цитата Сообщение от SergeyA Посмотреть сообщение
что такое HDC
Контекст девайса.
Code
1
2
3
4
5
hDC = GetDC_(hWnd) ; Получаем контекст окна.
If hDC             ; Контекст валидный.
  DrawText_(hDC,...)  ; Пишем в окне.
  ReleaseDC_(hWnd, hDC) ; Освобождаем контекст.
EndIf
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
11.07.2011, 19:01  [ТС]
Я сделал так, но это естественно не работает.

PureBasic
1
2
3
4
5
hDC = GetDC_(hWnd) ; Получаем контекст окна.
  If hDC             ; Контекст валидный.
    DrawText_(hDC, GetText(hWnd), -1, 2,#DT_CALCRECT)  ; Пишем в окне.
    ReleaseDC_(hWnd, hDC) ; Освобождаем контекст.
  EndIf
Потому что вместо 2 должен стоять массив из 4х координат
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
11.07.2011, 19:26
Это не массив, а структура RECT.
Ранее в коде она использовалась
Code
1
GetWindowRect_(hWnd_Static2, Stat.RECT)
Просто нужно создать структуру присвоив ей любое не занятое имя, заполнить (содержимое структуры помнить не обязательно - автозавершение поможет) и передать функции DrawText.
Code
1
2
3
4
5
6
7
8
Draw.RECT
 
Draw\left   = 10  ; x = 10
Draw\top    = 2   ; y = 2
Draw\right  = 100 ; Ширина 90
Draw\bottom = 30  ; Высота 28
 
DrawText_(hDC, Text, Len(Text), @Draw, #DT_SINGLELINE|#DT_CENTER|#DT_VCENTER)
1
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
11.07.2011, 19:33  [ТС]
Понятно, но текста всёравно нет, может что ни туда поставил...?!

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
Global hWnd_Static2, hWnd_Static3, hWnd_Static4, hWnd_Static5, hWnd_Static6, hWnd_Static7, hWnd_Static8, hWnd_Static9
 
Procedure WindowCallback(hWnd, Msg, wParam, lParam) 
  Shared hButton, *WindowProc
  
  Select Msg 
     Case #WM_COMMAND 
       If hButton = lParam 
         PostMessage_(hWnd, #WM_CLOSE, 0, 0)
       EndIf  
     Case #WM_SIZE  
         WinW = lParam & $FFFF 
         WinH = (lParam >> 16 ) & $FFFF
         If WinW>0 And WinH>0
           SetWindowPos_(hWnd_Static2, #HWND_BOTTOM,22,0,WinW-90, 24, #SWP_NOACTIVATE|#SWP_NOZORDER)
           SetWindowPos_(hWnd_Static3, #HWND_BOTTOM,WinW-88,0,88,22, #SWP_NOACTIVATE|#SWP_NOZORDER)
           SetWindowPos_(hWnd_Static4, #HWND_BOTTOM,0,22,6,WinH-28, #SWP_NOACTIVATE|#SWP_NOZORDER)
           SetWindowPos_(hWnd_Static5, #HWND_BOTTOM,6,22,WinW-6,WinH-6, #SWP_NOACTIVATE|#SWP_NOZORDER)
           SetWindowPos_(hWnd_Static6, #HWND_BOTTOM,WinW-6,22,6,WinH-28, #SWP_NOACTIVATE|#SWP_NOZORDER)
           SetWindowPos_(hWnd_Static7, #HWND_BOTTOM,0,WinH-6,6,6, #SWP_NOACTIVATE|#SWP_NOZORDER)
           SetWindowPos_(hWnd_Static8, #HWND_BOTTOM,6,WinH-6,WinW-12,6, #SWP_NOACTIVATE|#SWP_NOZORDER)
           SetWindowPos_(hWnd_Static9, #HWND_BOTTOM,WinW-6,WinH-6,6,6, #SWP_NOACTIVATE|#SWP_NOZORDER)
         EndIf
   EndSelect 
   
  ProcedureReturn CallWindowProc_(*WindowProc, hWnd, Msg, wParam, lParam) 
EndProcedure 
 
Procedure.s GetText(hwnd) 
  MainText.s = Space(256) 
  Len=GetWindowText_(hwnd,@MainText,256) 
  MainText=Left(MainText, Len) 
  ProcedureReturn MainText 
EndProcedure
 
ProcedureDLL AutoItSkinX_LoadSkin(hWnd)
  Shared hButton, *WindowProc 
  GetWindowRect_(hWnd, Win.RECT)
  WIDTH = Win\right-Win\left
  HEIGHT = Win\bottom - Win\top
  
  ;DefaultFont = GetStockObject_(#DEFAULT_GUI_FONT) 
  ;hButton=CreateWindowEx_(0, "Button", "", #WS_CHILD | #WS_VISIBLE, WIDTH - 24,7,16,16, hWnd, 0, 0, 0)  
  ;SendMessage_(hButton, #WM_SETFONT, DefaultFont, 1) 
  
  hWnd_Static1 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 22, 22, hWnd, 0, 0, 0)
  hWnd_Static2 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 22, 0,88, 22, hWnd, 0, 0, 0)
  hWnd_Static3 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, WIDTH - 88, 0, 88, 22, hWnd, 0, 0, 0)
  hWnd_Static4 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 22, 6, 6, hWnd, 0, 0, 0)
  hWnd_Static5 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 6, 22, WIDTH-12, 22, hWnd, 0, 0, 0)
  hWnd_Static6 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, WIDTH - 12, 22, 6, 6, hWnd, 0, 0, 0)
  hWnd_Static7 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 6, 6, hWnd, 0, 0, 0)
  hWnd_Static8 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 6, 0, 6, 6, hWnd, 0, 0, 0)
  hWnd_Static9 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, WIDTH - 12, 0, 6, 6, hWnd, 0, 0, 0)
 
  hBitmap1 = CatchImage(0, ?Img1, ?Img1End-?Img1)
  hBitmap2 = CatchImage(1, ?Img2, ?Img2End-?Img2)
  hBitmap3 = CatchImage(2, ?Img3, ?Img3End-?Img3)
  hBitmap4 = CatchImage(3, ?Img4, ?Img4End-?Img4)  
  hBitmap5 = CatchImage(4, ?Img5, ?Img5End-?Img5)
  hBitmap6 = CatchImage(5, ?Img6, ?Img6End-?Img6)  
  hBitmap7 = CatchImage(6, ?Img7, ?Img7End-?Img7)
  hBitmap8 = CatchImage(7, ?Img8, ?Img8End-?Img8)  
  hBitmap9 = CatchImage(8, ?Img9, ?Img9End-?Img9)   
  
  If hBitmap1
    SendMessage_(hWnd_Static1, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap1)
  EndIf 
  If hBitmap2
    SendMessage_(hWnd_Static2, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap2) 
  EndIf
  If hBitmap3
    SendMessage_(hWnd_Static3, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap3)
  EndIf 
  If hBitmap4
    SendMessage_(hWnd_Static4, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap4)
  EndIf
  If hBitmap5
    SendMessage_(hWnd_Static5, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap5)
  EndIf 
  If hBitmap6
    SendMessage_(hWnd_Static6, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap6)
  EndIf
  If hBitmap7
    SendMessage_(hWnd_Static7, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap7)
  EndIf 
  If hBitmap8
    SendMessage_(hWnd_Static8, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap8)
  EndIf  
  If hBitmap9
    SendMessage_(hWnd_Static9, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap9)
  EndIf  
  
  If *WindowProc=0
    *WindowProc=SetWindowLong_(hWnd, #GWL_WNDPROC, @WindowCallback())
  EndIf
  
  MoveWindow_(hWnd_Static2, 22, 0, WIDTH-88, 24, #False)
  MoveWindow_(hWnd_Static3, WIDTH - 88, 0, 88, 22, #False)
  MoveWindow_(hWnd_Static4, 0, 22, 6, HEIGHT-28, #False)
  MoveWindow_(hWnd_Static5, 6, 22, WIDTH-6, HEIGHT-6, #False)
  MoveWindow_(hWnd_Static6, WIDTH-6, 22, 6, HEIGHT-28, #False)
  MoveWindow_(hWnd_Static7, 0, HEIGHT-6, 6, 6, #False)
  MoveWindow_(hWnd_Static8, 6, HEIGHT-6, WIDTH-6, 6, #False)
  MoveWindow_(hWnd_Static9, WIDTH-6, HEIGHT-6, 6, 6, #False)  
  
  Draw.RECT
  Draw\left   = 10  ; x = 10
  Draw\top    = 2   ; y = 20
  Draw\right  = 100 ; Ширина 90
  Draw\bottom = 30  ; Высота 28
  Text$ = GetText(hWnd)
  
  hDC = GetDC_(hWnd) ; Получаем контекст окна.
  If hDC             ; Контекст валидный.
    DrawText_(hDC,Text$ , Len(Text$), @Draw ,#DT_SINGLELINE|#DT_CENTER|#DT_VCENTER)  ; Пишем в окне.
    ReleaseDC_(hWnd, hDC) ; Освобождаем контекст.
  EndIf
  
  SetWindowLong_(hWnd,#GWL_STYLE, GetWindowLong_(hWnd,#GWL_STYLE)|#WS_CLIPSIBLINGS|#WS_CLIPCHILDREN)
  
EndProcedure 
 
DataSection
  Img1:
  IncludeBinary "1.bmp"
  Img1End:
  
  Img2:
  IncludeBinary "2.bmp"
  Img2End:
  
  Img3:
  IncludeBinary "3.bmp"
  Img3End:
  
  Img4:
  IncludeBinary "4.bmp"
  Img4End: 
  
  Img5:
  IncludeBinary "5.bmp"
  Img5End:
  
  Img6:
  IncludeBinary "6.bmp"
  Img6End:
  
  Img7:
  IncludeBinary "7.bmp"
  Img7End:  
  
  Img8:
  IncludeBinary "8.bmp"
  Img8End: 
  
  Img9:
  IncludeBinary "9.bmp"
  Img9End:  
EndDataSection
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
11.07.2011, 19:47
Без рисунков нет возможности скомпилировать библиотеку.
Да, текст надо отображать по событию #WM_PAINT, т. е. во время прорисовки окна.
1
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
11.07.2011, 20:01  [ТС]
Без рисунков нет возможности скомпилировать библиотеку.
Я могу скинуть всё, и exe приложение которое будет запускать функцию из dll, и библиотека должна называться так - AutoItSkinX2.dll
Вложения
Тип файла: rar скин.rar (291.4 Кб, 19 просмотров)
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
14.07.2011, 12:23  [ТС]
Подскажите пожалуйста, как отсюда вытащить функцию для создания тени окна?

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
; Автор - mirashic
; [url]http://purebasic.info/phpBB2/viewtopic.php?t=1581&postdays=0&postorder=asc&start=15[/url]
 
; Последнее изменение:11 Май, 2011 @ 4:13:06 PM
Enumeration
 #But1:#But2:#But3:#But4:#But5:#But6:#But7 ; зарезервированные кнопки
 #Window_0
 #Window_1
 #Window_2
 #Window_3
 #Window_4
 #Window_5
 #Cont
 #Image
EndEnumeration
 
UsePNGImageDecoder()
Global  WinMain
Global  imgP, imgN, SkinW.s, colorN, colorP, SkinW.s, Norm, pres, title
 
 Global Dim Potok.s(5)
  Potok(0)="http://www.beatlesradio.com:8088/"
  Potok(1)="http://w02-sw01.akadostream.ru:8000/radioretro48.mp3"
  Potok(2)="http://91.121.91.110:3000"
  Potok(3)="http://195.5.125.6:8000/" 
  Potok(4)="http://nullwave.ru:8000/hits_of_pop"
  Potok(5)="http://16bit.fm:9500"
 
Enumeration
 #min=100
 #inf
 #close
 #Font
 #state_normal 
 #state_pressed  
 #state_disabled    
EndEnumeration
 
 
;{ библиотека Bass
Prototype  BASS_ChannelPlay(a, b)
Prototype  BASS_Init(a, b, c, d, e)
Prototype  BASS_StreamCreateURL(a.s, b, c, d, e)
Prototype  BASS_StreamFree(a)
 
Global BASS_ChannelPlay.BASS_ChannelPlay
Global BASS_Init.BASS_Init
Global BASS_StreamCreateURL.BASS_StreamCreateURL
Global BASS_StreamFree.BASS_StreamFree
 
Procedure.i Bass_LoadDLL()
 Protected hDLL.i
  hDLL = OpenLibrary(#PB_Any, "bass.dll")
  If hDLL <> 0
    BASS_ChannelPlay = GetFunction(hDLL, "BASS_ChannelPlay")
    BASS_Init = GetFunction(hDLL, "BASS_Init")
    BASS_StreamCreateURL = GetFunction(hDLL, "BASS_StreamCreateURL")
    BASS_StreamFree = GetFunction(hDLL, "BASS_StreamFree")
    ProcedureReturn hDLL
  EndIf
 ProcedureReturn #False
EndProcedure
 
Bass_LoadDLL()
;}
 
;{-----Структура скина окна-----------
Structure Skin
  Name.l
  Stroke.l
  Stroke2.l
  Stroke3.l
  top.l
  StrCont.l
  StrCont2.l
  Lin1.l
  Lin2.l
  LRlin.l
  GradB.l
  GradF.l
  colorWin.l
  colorTitle.l
  
  ContainerT.l
  ContainerY.l
  ContainerB.l
  ContainerF.l
  ContainerH.l
  imaD.l
  Norm.l
  pres.l
EndStructure
 
 Global  NewMap Skin.Skin()
;***************************************** 
  Skin("DarkSoft")\Name = 1000
  Skin()\Stroke  = RGB(15,15,15)
  Skin()\Stroke2 = RGB(62,60,62)
  Skin()\Stroke3 = RGB(16,16,16)
  Skin()\top     = RGB(29,29,29)
  Skin()\StrCont = RGB(26,26,26)
  Skin()\StrCont2= RGB(0 , 0, 0)
  Skin()\Lin1    = RGB(62,60,62)
  Skin()\Lin2    = RGB(48,48,48)
  Skin()\LRlin   = RGB(62,60,62)
  Skin()\GradB   = RGB(40,40,40)
  Skin()\GradF   = RGB(16,16,16)
  Skin()\colorWin= RGB(25, 25, 25)
  Skin()\colorTitle=RGB(120, 120, 120)
  
  Skin()\ContainerT=RGB(0,   0,  0)
  Skin()\ContainerY=RGB(48, 48, 48)
  Skin()\ContainerB=RGB(32, 32, 32)
  Skin()\ContainerF=RGB(13, 13, 13)
  Skin()\ContainerH=RGB(30, 30, 30)
  Skin()\imaD=LoadImage(#PB_Any, "img/vikl-1.png")
  Skin()\Norm=LoadImage(#PB_Any, "img/кнопка1.png")
  Skin()\pres=LoadImage(#PB_Any, "img/нажата1.png")
;*****************************************   
  Skin("Corra")\Name = 1100
  Skin()\Stroke  = RGB(133, 133, 133)
  Skin()\Stroke2 = RGB(237, 237, 237)
  Skin()\Stroke3 = RGB(209, 209, 209)
  Skin()\top     = RGB(200, 200, 200)
  Skin()\StrCont = RGB(115, 115, 115)
  Skin()\StrCont2= RGB(209, 209, 209)
  Skin()\Lin1    = RGB(237, 237, 237)
  Skin()\Lin2    = RGB(133, 133, 133)
  Skin()\LRlin   = RGB(209, 209, 209)
  Skin()\GradB   = RGB(200, 200, 200)
  Skin()\GradF   = RGB(209, 209, 209)
  Skin()\colorWin= RGB(237, 237, 237)
  Skin()\colorTitle=RGB(104, 104, 104)
  
  Skin()\ContainerT=RGB(166, 166, 166)
  Skin()\ContainerY=RGB(213, 213, 213)
  Skin()\ContainerB=RGB(226, 226, 226)
  Skin()\ContainerF=RGB(142, 142, 142)
  Skin()\ContainerH=RGB(255, 255, 255)
  Skin()\imaD=LoadImage(#PB_Any, "img/vikl-2.png")
  Skin()\Norm=LoadImage(#PB_Any, "img/кнопка2.png")
  Skin()\pres=LoadImage(#PB_Any, "img/нажата2.png")
;*****************************************  
  Skin("Orang")\Name = 1200
  Skin()\Stroke  = RGB(252, 139, 59)
  Skin()\Stroke2 = RGB(237, 237, 237)
  Skin()\Stroke3 = RGB(252, 139, 59)
  Skin()\top     = RGB(252, 139, 59)
  Skin()\StrCont = RGB(254, 232, 217)
  Skin()\StrCont2= RGB(252, 139, 59)
  Skin()\Lin1    = RGB(237, 237, 237)
  Skin()\Lin2    = RGB(254, 232, 217)
  Skin()\LRlin   = RGB(254, 232, 217)
  Skin()\GradB   = RGB(252, 139, 59)
  Skin()\GradF   = RGB(252, 139, 59)
  Skin()\colorWin= RGB(254, 232, 217)
  Skin()\colorTitle=RGB(254, 232, 217)
  
  Skin()\ContainerT=RGB(252, 139, 59)
  Skin()\ContainerY=RGB(254, 232, 217)
  Skin()\ContainerB=RGB(253, 191, 147)
  Skin()\ContainerF=RGB(230, 107, 18)
  Skin()\ContainerH=RGB(132, 61, 149)
  Skin()\imaD=LoadImage(#PB_Any, "img/vikl-3.png")
  Skin()\Norm=LoadImage(#PB_Any, "img/кнопка3.png")
  Skin()\pres=LoadImage(#PB_Any, "img/нажата3.png")
;}*****************************************
 
;{-----Структура скина кнопки-----------
Structure SkinButton
  Name.l
  Stroke.l
  GradBack.l
  GradFront.l
  TopL.l
  ColorFon.l
  ColorB.l
  YgolT.l
  YgolB.l
  colorN.l
  colorP.l
EndStructure
 
 Global  NewMap SkinButton.SkinButton()
;*****************************************  
  SkinButton("Orang")\Name = 1100
  SkinButton()\Stroke    = RGB(208, 113, 11)
  SkinButton()\GradBack  = RGB(255, 194, 123)
  SkinButton()\GradFront = RGB(239, 124, 0)
  SkinButton()\TopL      = RGB(254, 190, 116)
  SkinButton()\ColorFon  = RGB(247, 172, 117) ;фон верх
  SkinButton()\ColorB    = RGB(236, 132, 56) ;фон низ
  SkinButton()\YgolT     = RGB(255, 168, 76) 
  SkinButton()\YgolB     = RGB(225, 116, 0)
  SkinButton()\colorN    = RGB(161, 72, 14)
  SkinButton()\colorP    = RGB(0, 0, 0)
;*****************************************
  SkinButton("Corra")\Name = 1200
  SkinButton()\Stroke    = RGB(101, 101, 101)
  SkinButton()\GradBack  = RGB(215, 215, 215)
  SkinButton()\GradFront = RGB(127, 127, 127)
  SkinButton()\TopL      = RGB(210, 210, 210)
  SkinButton()\ColorFon  = RGB(207, 207, 207) ;фон верх
  SkinButton()\ColorB    = RGB(167, 167, 167) ;фон низ
  SkinButton()\YgolT     = RGB(184, 184, 184) 
  SkinButton()\YgolB     = RGB(132, 132, 132)
  SkinButton()\colorN    = RGB(73, 73, 73)
  SkinButton()\colorP    = RGB(0, 0, 0)
;*****************************************
  SkinButton("DarkSoft")\Name = 1300
  SkinButton()\Stroke    = RGB(0, 0, 0)
  SkinButton()\GradBack  = RGB(42, 42, 42)
  SkinButton()\GradFront = RGB(26, 26, 26)
  SkinButton()\TopL      = RGB(58, 58, 58)
  SkinButton()\ColorFon  = RGB(27, 27, 27) ;фон верх
  SkinButton()\ColorB    = RGB(18, 18, 18) ;фон низ
  SkinButton()\YgolT     = RGB(54, 54, 54) 
  SkinButton()\YgolB     = RGB(38, 38, 38)
  SkinButton()\colorN    = RGB(96, 96, 96)
  SkinButton()\colorP    = RGB(96, 96, 96)
;}*****************************************
 
Procedure shadow(id_win) ;скин окна для тени
 x = WindowWidth(id_win)
 y = WindowHeight(id_win)
 ;-------------------------------- 
 img = CreateImage(#PB_Any,x,y,32)
;-------прозрачный цвет #Red-------
StartDrawing(ImageOutput(img))
 Box(0,0,x,y,#Red)
StopDrawing()
;*********************************
 hdc1 = CreateCompatibleDC_(#Null)
 SelectObject_(hdc1, ImageID(img))
 SelectObject_(hdc1, CreatePen_(#PS_SOLID,0,RGB(0, 0, 0)))
 SelectObject_(hdc1, CreateSolidBrush_(RGB(0, 0, 0)))
 RoundRect_(hdc1,0,0,x-1,y,14,14)
 DeleteDC_(hdc1)
;---------------------------------------
SkinWin(WindowID(id_win),ImageID(img))
EndProcedure
 
Procedure ImageN(x,y,xx,yy) ;скин кнопки норма
 
  ForEach SkinButton()
    If MapKey(SkinButton())=SkinW
     Stroke=SkinButton()\Stroke
     GradBack=SkinButton()\GradBack
     GradFront=SkinButton()\GradFront
     ColorFon=SkinButton()\ColorFon
     TopL=SkinButton()\TopL
     ColorB=SkinButton()\ColorB
     YgolT=SkinButton()\YgolT
     YgolB=SkinButton()\YgolB
     colorN=SkinButton()\colorN
     colorP=SkinButton()\colorP
    EndIf
  Next
;---------------------------------------
imgN = CreateImage(#PB_Any,xx,yy,32)
 
StartDrawing(ImageOutput(imgN))
 Box(0,0,xx,yy,Stroke)   ;обводка
 
  DrawingMode(#PB_2DDrawing_Gradient)
   BackColor(GradBack)
   FrontColor(GradFront)
   LinearGradient(0,0,0,yy-2)
  Box(1,1,xx-2,yy-2)
StopDrawing()
 
StartDrawing(ImageOutput(imgN))
 Box(3,      1, xx-6, 1, TopL)
 Box(0,      0, 2, 2, ColorFon) ;фон верх
 Box(xx-2,   0, 2, 2, ColorFon) ;фон верх
 Box(0,   yy-2, 2, 2, ColorB) ;фон низ
 Box(xx-2,yy-2, 2, 2, ColorB) ;фон низ
 
 Box(1,      1, 1, 1, Stroke)  ;совпадает с обводкой
 Box(xx-2,   1, 1, 1, Stroke)  ;совпадает с обводкой
 Box(1,   yy-2, 1, 1, Stroke)  ;совпадает с обводкой 
 Box(xx-2,yy-2, 1, 1, Stroke)  ;совпадает с обводкой
 
 Box(2, 1,1,1,YgolT)       
 Box(xx-3,1,1,1,YgolT)
 Box(2, yy-2,1,1,YgolB)
 Box(xx-3,yy-2,1,1,YgolB)
 
  DrawingMode(#PB_2DDrawing_Gradient)
   BackColor(YgolT)
   FrontColor(YgolB)
   LinearGradient(0,0,0,yy-5)
  Box(1,2,1,yy-4)
  Box(xx-2,2,1,yy-4)
StopDrawing()
EndProcedure
 
Procedure ImageP(x,y,xx,yy) ;скин кнопки прес
 
  ForEach SkinButton()
    If MapKey(SkinButton())=SkinW
     Stroke=SkinButton()\Stroke
     GradBack=SkinButton()\GradBack
     GradFront=SkinButton()\GradFront
     ColorFon=SkinButton()\ColorFon
     ColorB=SkinButton()\ColorB
     YgolT=SkinButton()\YgolT
     YgolB=SkinButton()\YgolB
     colorN=SkinButton()\colorN
     colorP=SkinButton()\colorP
    EndIf
  Next
;---------------------------------------
imgP = CreateImage(#PB_Any,xx,yy,32) 
 
StartDrawing(ImageOutput(imgP))
 DrawingMode(#PB_2DDrawing_Gradient)
   BackColor(GradFront)
   FrontColor(GradBack)
   CircularGradient(xx/2,0, xx)     
   Circle(xx/2,yy/2, xx)
StopDrawing()
 
StartDrawing(ImageOutput(imgP))
Box(0,0,xx,1,Stroke)     ;обводка
Box(0,yy-1,xx,1,Stroke)  ;обводка
Box(0,0,1,yy,Stroke)     ;обводка
Box(xx-1,0,1,yy,Stroke)  ;обводка
 
 ;Box(3,       1, xx-6, 1, YgolB)
 
 Box(0,      0, 2, 2, ColorFon) ;фон верх
 Box(xx-2,   0, 2, 2, ColorFon) ;фон верх
 Box(0,   yy-2, 2, 2, ColorB) ;фон низ
 Box(xx-2,yy-2, 2, 2, ColorB) ;фон низ
 
 Box(1,      1, 1, 1, Stroke)  ;совпадает с обводкой
 Box(xx-2,   1, 1, 1, Stroke)  ;совпадает с обводкой
 Box(1,   yy-2, 1, 1, Stroke)  ;совпадает с обводкой 
 Box(xx-2,yy-2, 1, 1, Stroke)  ;совпадает с обводкой
 
 Box(2, 1,1,1,YgolB)       
 Box(xx-3,1,1,1,YgolB)
 Box(2, yy-2,1,1,YgolT)
 Box(xx-3,yy-2,1,1,YgolT)
 
  DrawingMode(#PB_2DDrawing_Gradient)
   BackColor(YgolB)
   FrontColor(YgolT)
   LinearGradient(0,0,0,yy-5)
  Box(1,2,1,yy-4)
  Box(xx-2,2,1,yy-4)
StopDrawing()
EndProcedure
 
Procedure WinProc(wnd, msg, wparam, lparam) ;новые кнопки
result = #PB_ProcessPureBasicEvents 
 
Select wnd
Case WinMain 
  Select msg
      Case #WM_MOVE ; если основное окно перемещается #Window_0
        ResizeWindow(#Window_1,WindowX(#Window_0)-5,   WindowY(#Window_0)-5,#PB_Ignore,#PB_Ignore)
        ResizeWindow(#Window_2,WindowX(#Window_0)-4,   WindowY(#Window_0)-4,#PB_Ignore,#PB_Ignore)
        ResizeWindow(#Window_3,WindowX(#Window_0)-3,   WindowY(#Window_0)-3,#PB_Ignore,#PB_Ignore)       
        ResizeWindow(#Window_4,WindowX(#Window_0)-2,   WindowY(#Window_0)-2,#PB_Ignore,#PB_Ignore)
        ResizeWindow(#Window_5,WindowX(#Window_0)-1,   WindowY(#Window_0)-1,#PB_Ignore,#PB_Ignore)      
       EndSelect
EndSelect
 
  Select msg   
   Case #WM_DRAWITEM 
    *dis.DRAWITEMSTRUCT = lParam 
    Text.s = GetGadgetText(*dis\CtlID) 
    hdc = *dis\hDC
    Select *dis\CtlID 
     Case #close,#min,#inf
     
      If *dis\itemState & #ODS_SELECTED 
       FillRect_(hdc, *dis\rcItem, CreatePatternBrush_(ImageID(#state_pressed)))
      ElseIf *dis\itemState & #ODS_DISABLED  
       FillRect_(hdc, *dis\rcItem, CreatePatternBrush_(ImageID(#state_disabled)))
      ElseIf *dis\itemState & #ODS_NOFOCUSRECT
        FillRect_(hdc, *dis\rcItem, CreatePatternBrush_(ImageID(#state_normal))) 
      EndIf
       
    ;***************************************************   
      Case #But1,#But2,#But3,#But4,#But5,#But6
      
          If *dis\itemState & #ODS_SELECTED
            hdc = *dis\hDC 
            FillRect_(hdc, *dis\rcItem, CreatePatternBrush_(ImageID(imgP)))
            
            SetBkMode_(hdc,#TRANSPARENT)
            SetTextColor_(hdc,colorP)
            DrawText_(hdc,Text,Len(Text),*dis\rcItem,#DT_CENTER|#DT_SINGLELINE|#DT_VCENTER)
          Else 
            hdc = *dis\hDC 
            FillRect_(hdc, *dis\rcItem, CreatePatternBrush_(ImageID(imgN)))
             
            SetBkMode_(hdc,#TRANSPARENT)
            SetTextColor_(hdc,colorN)
            DrawText_(hdc,Text,Len(Text),*dis\rcItem,#DT_CENTER|#DT_SINGLELINE|#DT_VCENTER)
          EndIf   
       ;***************************************************      
    EndSelect 
;-----------------------------------  
   EndSelect 
 ProcedureReturn result
EndProcedure
 
Procedure SkinSoftWindow(id_win,min,inf,close) ;скин окна
 
   ForEach Skin()
    If MapKey(Skin())=SkinW
     Stroke = Skin()\Stroke
     Stroke2= Skin()\Stroke2
     Stroke3= Skin()\Stroke3
     top    = Skin()\top
     StrCont= Skin()\StrCont
     StrCont2=Skin()\StrCont2
     Lin1   = Skin()\Lin1
     Lin2   = Skin()\Lin2
     LRlin  = Skin()\LRlin
     GradB  = Skin()\GradB
     GradF  = Skin()\GradF
     colorWin=Skin()\colorWin
     colorTitle=Skin()\colorTitle
     imaD=Skin()\imaD
    EndIf
  Next
 
;****************************************
 x = WindowWidth(id_win)
 y = WindowHeight(id_win)
 ;-------------------------------- 
 Font=LoadFont(#PB_Any ,"Century Gothic",18,#PB_Font_HighQuality) ;Tahoma ;Verdana ;Arial ;Century Gothic
 img = CreateImage(#PB_Any,x,y,32)
;-------прозрачный цвет #Red-------
StartDrawing(ImageOutput(img))
 Box(0,0,x,y,#Red)
StopDrawing()
;*********************************
 hdc1 = CreateCompatibleDC_(#Null)
 SelectObject_(hdc1, ImageID(img))
 SelectObject_(hdc1, CreatePen_(#PS_SOLID,0,Stroke))
 SelectObject_(hdc1, CreateSolidBrush_(Stroke))
 RoundRect_(hdc1,0,0,x-1,y,14,14)
 DeleteDC_(hdc1)
;*********************************
 hdc2 = CreateCompatibleDC_(#Null)
 SelectObject_(hdc2, ImageID(img))
 SelectObject_(hdc2, CreatePen_(#PS_SOLID,0,Stroke2))
 SelectObject_(hdc2, CreateSolidBrush_(Stroke3))
 RoundRect_(hdc2,1,1,x-2,y-1,14,14)
 DeleteDC_(hdc2)
 ;*********************************
 hdc3 = CreateCompatibleDC_(#Null)
 SelectObject_(hdc3, ImageID(img))
 SelectObject_(hdc3, CreatePen_(#PS_SOLID,0,top)) ;top
 SelectObject_(hdc3, CreateSolidBrush_(top))      ;top
 RoundRect_(hdc3,2,2,x-3,60,14,14)
 DeleteDC_(hdc3)
;*********************************
StartDrawing(ImageOutput(img))
 Box(6,40,x-13,y-47,StrCont)   ;обв контейнер
 Box(7,41,x-15,y-49,StrCont2)  ;обв контейнер
 Box(8,42,x-17,y-51,colorWin)     ;фон окна
 Box(8,1,x-17,1,Lin1)          ;верх линия      
 Box(8,42,x-17,1,Lin2)         ;ижн линия
 ;--------------------------------
 Box(1,6,1,y-13,LRlin)     ;левая линия 
 Box(x-3,6,1,y-13,LRlin)   ;правая линия 
  ;------градиен пол с лева---------------- 
  DrawingMode(#PB_2DDrawing_Gradient)
   BackColor(GradB)
   FrontColor(GradF)
   LinearGradient(0,0,0,80)
  Box(2,40,4,80)
 ;-----градиен пол с прав----------------
  DrawingMode(#PB_2DDrawing_Gradient)
   BackColor(GradB)
   FrontColor(GradF)
   LinearGradient(0,0,0,80)
  Box(x-7,40,4,60)
StopDrawing()
;---------------------------------------
SkinWin(WindowID(id_win),ImageID(img))
 
;*********************************************************
   GrabImage(imaD, #state_normal, 0,0,16,16) 
   GrabImage(imaD, #state_pressed, 16,0,16,16)
   GrabImage(imaD, #state_disabled, 48,0,16,16) 
;*********************************************************      
  ButtonGadget(min,x-70,8,16,16,"",#BS_OWNERDRAW) 
  ButtonGadget(inf,x-50,8,16,16,"",#BS_OWNERDRAW) ;:DisableGadget(des,1)
  ButtonGadget(close,x-30,8,16,16,"",#BS_OWNERDRAW) 
;********************************************************* 
  SetClassLong_(GadgetID(min),#GCL_HCURSOR, LoadCursor_(0,32649))
 
  
  GadgetToolTip(min,  "Свернуть")
  GadgetToolTip(inf,  "Информация")
  GadgetToolTip(close,"Закрыть")
  
  title=TextGadget(#PB_Any,19,4,x-95,30,GetWindowTitle(id_win))
  SetGadgetFont(title,FontID(LoadFont(#PB_Any,"Century Gothic", 18)) ) ;Tahoma ;Verdana ;Arial ;Century Gothic
  PureCOLOR_SetGadgetColor(title,colorTitle,top)
EndProcedure
 
Procedure Container(ID, x, y, SizeX, SizeY)
   ForEach Skin()
    If MapKey(Skin())=SkinW
     ContainerT = Skin()\ContainerT
     ContainerY = Skin()\ContainerY
     ContainerB = Skin()\ContainerB
     ContainerF = Skin()\ContainerF
    EndIf
  Next
;***************************************
  CreateImage(ID, SizeX, SizeY )
If StartDrawing(ImageOutput(ID))
   Box( 0, 0,SizeX,SizeY,ContainerT)
   Box( 0, 1,SizeX,SizeY-2,ContainerY)
    DrawingMode(#PB_2DDrawing_Gradient)    
    BackColor(ContainerB)
    FrontColor(ContainerF)
    LinearGradient(0, 0, 0, SizeY)
    Box( 0, 2, SizeX, SizeY-4)
  StopDrawing()
 ;-------------------------------
  ImageGadget(ID,x,y,SizeX,SizeY,ImageID(ID)):DisableGadget(ID,1)
EndIf
EndProcedure
 
 
 
 ;SkinW.s="DarkSoft"  :Image=LoadImage(#PB_Any,"tiesto.png")
 ;SkinW.s="Corra" :Image=LoadImage(#PB_Any,"techno.png")
 SkinW.s="Orang" :Image=LoadImage(#PB_Any,"orang.png")
 
ImageN(120,30,55,20)
ImageP(120,60,55,20)
 
Width  = 505
Height = 373
 
;-----------Тень в 5 пикс-------------------------------------------------------
#Flag= #PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_Invisible
 
OpenWindow(#Window_1,0,0,Width+10,Height+11,"",#Flag)
  shadow(#Window_1) :SetWindowsTransparency(WindowID(#Window_1), 5)
OpenWindow(#Window_2,0,0,Width+8,Height+9,"",#Flag,WindowID(#Window_1))
  shadow(#Window_2) :SetWindowsTransparency(WindowID(#Window_2), 10)
OpenWindow(#Window_3,0,0,Width+6,Height+7,"",#Flag,WindowID(#Window_2))
  shadow(#Window_3) :SetWindowsTransparency(WindowID(#Window_3), 15)
OpenWindow(#Window_4,0,0,Width+4,Height+5,"",#Flag,WindowID(#Window_3))
  shadow(#Window_4) :SetWindowsTransparency(WindowID(#Window_4), 20)  
OpenWindow(#Window_5,0,0,Width+2,Height+3,"",#Flag,WindowID(#Window_4))
  shadow(#Window_5) :SetWindowsTransparency(WindowID(#Window_5), 25) 
;-------------------------------------------------------------------------------  
  
 
 
If OpenWindow(#Window_0,0,0,Width,Height,SkinW,#Flag,WindowID(#Window_5))
 
 
SkinSoftWindow(#Window_0, #min, #inf, #close):DisableGadget(#inf,1)
ImageGadget(#Image,12,48,0,0,ImageID(Image))
Container(#Cont,8,WindowHeight(#Window_0)-49,WindowWidth(#Window_0)-17  ,40)
 
 
 
 ButtonGadget(#But1, 20,  333, 55, 20, "Beatles", #BS_OWNERDRAW) 
 ButtonGadget(#But2, 80,  333, 55, 20, "RetroFM", #BS_OWNERDRAW) 
 ButtonGadget(#But3, 140, 333, 55, 20, "ONLY80",  #BS_OWNERDRAW)
 ButtonGadget(#But4, 200, 333, 55, 20, "Luga R",  #BS_OWNERDRAW)
 ButtonGadget(#But5, 260, 333, 55, 20, "Pop Null",#BS_OWNERDRAW)
 ButtonGadget(#But6, 320, 333, 55, 20, "16 bit",  #BS_OWNERDRAW)
 
WinMain = WindowID(#Window_0)
SetWindowCallback(@WinProc()) 
BASS_Init(-1, 44100, 0, WindowID(#Window_0), 0)
 
HideWindow(#Window_1, 0)
HideWindow(#Window_2, 0)
HideWindow(#Window_3, 0)
HideWindow(#Window_4, 0)
HideWindow(#Window_5, 0)
 
HideWindow(#Window_0, 0)
Repeat
Event =  WaitWindowEvent()  
Gadget = EventGadget()
 
 If Event = #WM_LBUTTONDOWN
   SendMessage_(WindowID(#Window_0),#WM_NCLBUTTONDOWN, #HTCAPTION,0)
 EndIf
 
  Select Event
   Case #PB_Event_Gadget
    Select EventGadget()
     Case #But1 To #But6
       BASS_StreamFree(Handle)
       Handle=BASS_StreamCreateURL(Potok(Gadget), 0, 0, #Null, 0)
       BASS_ChannelPlay(Handle,0)
       SetGadgetText(title,GetGadgetText(Gadget))
     Case #min 
      ShowWindow_(WindowID(#Window_0),#SW_MINIMIZE)         
     Case #close
      Break
       
   EndSelect             
  EndSelect 
ForEver
 
EndIf
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
14.07.2011, 16:16
Цитата Сообщение от SergeyA Посмотреть сообщение
Подскажите пожалуйста, как отсюда вытащить функцию для создания тени окна?
Там нет такой функции как таковой - просто за основным окном находятся 5 полупрозрачных окон разных размеров и визуально кажется что у окна есть тень.
Но по факту там нет функции создания тени основного окна.
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
14.07.2011, 16:18  [ТС]
А не подскажите как её можно реализовать?
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
14.07.2011, 16:54
Цитата Сообщение от SergeyA Посмотреть сообщение
А не подскажите как её можно реализовать?
Тень легко реализовать про помощи API, всего 1 строчка:
PureBasic
1
2
3
4
5
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)
  SetClassLongPtr_(WindowID(0),#GCL_STYLE,$00020000)
  HideWindow(0,0)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
1
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
14.07.2011, 17:07  [ТС]
А вокруг всего окна нельзя? и чтоб пошире была
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
14.07.2011, 18:39
Цитата Сообщение от SergeyA Посмотреть сообщение
А вокруг всего окна нельзя? и чтоб пошире была
Можно. Сделай как у
; Автор - mirashic
Исходник же перед глазами.
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
14.07.2011, 18:55  [ТС]
Мне нужно это оформить в dll
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
18.07.2011, 16:22  [ТС]
Скажите пожалуйста, а возможно сделать определённый регион окна полупрозрачным?
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
29.12.2011, 15:02  [ТС]
Подучил я PureBasic, теперь мне будет легче Вас понять и Вам легче мне объяснить, и сразу же вопрос, как сделать перемещение окна мышкой за 1ю, 2ю и 3ю картинку? Я в принципе сделал, но не так как это делается правильно, и взгляните пожалуйста на функцию которая пишет Title у окна.

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
Global hWnd_Static1, hWnd_Static2, hWnd_Static3, hWnd_Static4, hWnd_Static5, hWnd_Static6, hWnd_Static7, hWnd_Static8, hWnd_Static9, hWnd_Close
 
Procedure SetCaptionText(hWnd, hParent, Color, ShadowC)
  GetText.s = Space(256) 
  Text$ = Left(GetText, GetWindowText_(hwnd, @GetText, 256) ) 
  
  GetWindowRect_(hWnd, LenText.RECT)
  Width = LenText\right - LenText\left
  
  Draw.RECT
  Draw\Left   = 0
  Draw\Top    = 3
  Draw\Right  = Width - 48
  Draw\Bottom = 20
  
  Shadow.RECT
  Shadow\Left   = Draw\Left + 2
  Shadow\Top    = Draw\Top + 1
  Shadow\Right  = Draw\Right
  Shadow\Bottom = Draw\Bottom
  
  hDC = GetDC_(hParent)
  If hDC
    hFont = CreateFont_(17, 0, 0, 0, 500, 0, 0, 0, #DEFAULT_CHARSET, #OUT_DEFAULT_PRECIS, #CLIP_DEFAULT_PRECIS, #DEFAULT_QUALITY, 0, "Cambria")
    hOldFont = SelectObject_(hDC, hFont)
    SetTextColor_(hDC, ShadowC)
    SetBkMode_(hDC, #PB_2DDrawing_Transparent)
    DrawText_(hDC, Text$, Len(Text$), @Shadow, #DT_VCENTER|#DT_SINGLELINE)
    SetTextColor_(hDC, Color)
    DrawText_(hDC, Text$, Len(Text$), @Draw, #DT_VCENTER|#DT_SINGLELINE)
    ReleaseDC_(hParent, hDC)
    SelectObject_(hDC, hOldFont)
      DeleteObject_(hFont)
      DeleteObject_(hDC)
  EndIf
 
EndProcedure  
 
Procedure WindowCallback(hWnd, Msg, wParam, lParam) 
  Shared *WindowProc 
 
  Select Msg  
    Case #WM_PAINT, #WM_NOTIFY
      SetCaptionText(hWnd, hWnd_Static2, $FFFFFF, $606060)
      
    
    Case #WM_SIZE  
      GetWindowRect_(hWnd, SetW.RECT)
      WinW = SetW\right - SetW\left
      WinH = SetW\bottom - SetW\top
      SetWindowPos_(hWnd_Static2, #HWND_BOTTOM, 24, 0, WinW - 24, 24, #SWP_NOACTIVATE|#SWP_NOZORDER)
      SetWindowPos_(hWnd_Static3, #HWND_BOTTOM, WinW - 24, 0, 24, 24, #SWP_NOACTIVATE|#SWP_NOZORDER)
      SetWindowPos_(hWnd_Static4, #HWND_BOTTOM, 0, 24, 4, WinH - 28, #SWP_NOACTIVATE|#SWP_NOZORDER)
      SetWindowPos_(hWnd_Static5, #HWND_BOTTOM, 2, 24, WinW - 4, WinH - 28, #SWP_NOACTIVATE|#SWP_NOZORDER)
      SetWindowPos_(hWnd_Static6, #HWND_BOTTOM, WinW - 4, 24, 4, WinH - 28, #SWP_NOACTIVATE|#SWP_NOZORDER)
      SetWindowPos_(hWnd_Static7, #HWND_BOTTOM, 0, WinH - 4, 4, 4, #SWP_NOACTIVATE|#SWP_NOZORDER)
      SetWindowPos_(hWnd_Static8, #HWND_BOTTOM, 4, WinH - 4, WinW - 4, 4, #SWP_NOACTIVATE|#SWP_NOZORDER)
      SetWindowPos_(hWnd_Static9, #HWND_BOTTOM, WinW - 4, WinH - 4, 4, 4, #SWP_NOACTIVATE|#SWP_NOZORDER)
      
    Case #WM_LBUTTONDOWN 
      GetWindowRect_(hWnd_Static2, Win.RECT)
      GetCursorPos_(Cur.POINT)
      Info = PtInRect_(@Win, Cur.POINT\x|Cur.POINT\y)
      MouseX = Cur.POINT\x
      MouseY = Cur.POINT\y 
      If (MouseX > Win\left - 24 And  MouseX < Win\right And MouseY > Win\top And MouseY < Win\bottom)
        If Info = GetWindow_(hWnd_Static2, #GW_CHILD)
          SendMessage_(hWnd, #WM_SYSCOMMAND, $F009, 0)
        EndIf  
      EndIf  
   EndSelect  
   
  ProcedureReturn CallWindowProc_(*WindowProc, hWnd, Msg, wParam, lParam) 
EndProcedure 
 
ProcedureDLL __JSkin_SetWindow(hWnd)
  Shared *WindowProc
 
  GetWindowRect_(hWnd, Win.RECT)
  WIDTH = Win\right - Win\left
  HEIGHT = Win\bottom - Win\top
  
  hWnd_Static1 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 0, 0, hWnd, 0, 0, 0)
  hWnd_Static2 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 0, 0, hWnd, 0, 0, 0)
  hWnd_Static3 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 0, 0, hWnd, 0, 0, 0)
  hWnd_Static4 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 0, 0, hWnd, 0, 0, 0)
  hWnd_Static5 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 0, 0, hWnd, 0, 0, 0)
  hWnd_Static6 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 0, 0, hWnd, 0, 0, 0)
  hWnd_Static7 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 0, 0, hWnd, 0, 0, 0)
  hWnd_Static8 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 0, 0, hWnd, 0, 0, 0)
  hWnd_Static9 = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP|#WS_DISABLED, 0, 0, 0, 0, hWnd, 0, 0, 0) 
  
  hWnd_Close = CreateWindowEx_(0, "Static", "", #WS_CHILD|#WS_VISIBLE|#SS_BITMAP, 0, 0, 0, 0, hWnd, 0, 0, 0)
  
  hBitmap1 = CatchImage(0, ?Img1, ?Img1End - ?Img1) 
  hBitmap2 = CatchImage(1, ?Img2, ?Img2End - ?Img2)
  hBitmap3 = CatchImage(2, ?Img3, ?Img3End - ?Img3)
  hBitmap4 = CatchImage(3, ?Img4, ?Img4End - ?Img4)  
  hBitmap5 = CatchImage(4, ?Img5, ?Img5End - ?Img5)
  hBitmap6 = CatchImage(5, ?Img6, ?Img6End - ?Img6)  
  hBitmap7 = CatchImage(6, ?Img7, ?Img7End - ?Img7)
  hBitmap8 = CatchImage(7, ?Img8, ?Img8End - ?Img8)  
  hBitmap9 = CatchImage(8, ?Img9, ?Img9End - ?Img9) 
  
  hBitmap10 = CatchImage(9, ?Img10, ?Img10End - ?Img10)
  
  SendMessage_(hWnd_Static1, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap1)
  SendMessage_(hWnd_Static2, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap2) 
  SendMessage_(hWnd_Static3, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap3)
  SendMessage_(hWnd_Static4, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap4)
  SendMessage_(hWnd_Static5, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap5)
  SendMessage_(hWnd_Static6, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap6)
  SendMessage_(hWnd_Static7, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap7)
  SendMessage_(hWnd_Static8, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap8)
  SendMessage_(hWnd_Static9, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap9)
  
  SendMessage_(hWnd_Close, #STM_SETIMAGE, #IMAGE_BITMAP, hBitmap10)
 
  MoveWindow_(hWnd_Static2, 24, 0, WIDTH - 24, 24, #False)
  MoveWindow_(hWnd_Static3, WIDTH - 24, 0, 24, 24, #False)
  MoveWindow_(hWnd_Static4, 0, 24, 4, HEIGHT - 28, #False)
  MoveWindow_(hWnd_Static5, 4, 24, WIDTH - 4, HEIGHT - 28, #False)
  MoveWindow_(hWnd_Static6, WIDTH - 4, 24, 4, HEIGHT - 28, #False)
  MoveWindow_(hWnd_Static7, 0, HEIGHT - 4, 4, 4, #False)
  MoveWindow_(hWnd_Static8, 4, HEIGHT - 4, WIDTH - 4, 4, #False)
  MoveWindow_(hWnd_Static9, WIDTH - 4, HEIGHT - 4, 4, 4, #False)    
  
  MoveWindow_(hWnd_Close, WIDTH - 20, 4, 16, 17, #False) 
  
  SetWindowLong_(hWnd, #GWL_STYLE, GetWindowLong_(hWnd, #GWL_STYLE)|#WS_CLIPSIBLINGS|#WS_CLIPCHILDREN)  
  
  If *WindowProc=0
    *WindowProc = SetWindowLong_(hWnd, #GWL_WNDPROC, @WindowCallback())
  EndIf 
 
EndProcedure 
 
DataSection
  Img1:
  IncludeBinary "1.bmp"
  Img1End:
  
  Img2:
  IncludeBinary "2.bmp"
  Img2End:
  
  Img3:
  IncludeBinary "3.bmp"
  Img3End:
  
  Img4:
  IncludeBinary "4.bmp"
  Img4End: 
  
  Img5:
  IncludeBinary "5.bmp"
  Img5End:
  
  Img6:
  IncludeBinary "6.bmp"
  Img6End:
  
  Img7:
  IncludeBinary "7.bmp"
  Img7End:  
  
  Img8:
  IncludeBinary "8.bmp"
  Img8End: 
  
  Img9:
  IncludeBinary "9.bmp"
  Img9End:  
  
  Img10:
  IncludeBinary "close1.bmp"
  Img10End:  
  
  Img11:
  IncludeBinary "close2.bmp"
  Img11End:   
  
  Img12:
  IncludeBinary "close3.bmp"
  Img12End:   
EndDataSection
Вложения
Тип файла: rar skin.rar (310.0 Кб, 14 просмотров)
0
18 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 64
30.12.2011, 13:37  [ТС]
Не получается....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.12.2011, 13:37

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть не большие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru