purebasic.info

PureBasic forum
Текущее время: Вт янв 16, 2018 6:25 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
СообщениеДобавлено: Вт янв 22, 2008 2:56 pm 
Не в сети
док

Зарегистрирован: Вт сен 18, 2007 9:16 am
Сообщений: 162
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
http://pb-oop.origo.ethz.ch

* It does make the Purebasic Programmer able to use an object orientated Programming paradigm.
* It's a precompiler, converting the OOP Syntax to a very clean and readable PB native syntax, so the converted output is ready-made for posting it to forum threads or for sharing in general.

_________________
Люди!! Уважайте друг друга!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 22, 2008 4:31 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн ноя 27, 2006 2:43 pm
Сообщений: 931
Откуда: Санкт-Петербург
Благодарил (а): 1 раз.
Поблагодарили: 12 раз.
Пункты репутации: 15
Это посредством команд препроцессора?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 22, 2008 4:39 pm 
Не в сети
док

Зарегистрирован: Вт сен 18, 2007 9:16 am
Сообщений: 162
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
код парсится в стандартный пуриковский синтаксис

до:
Код:
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
#Class_WINDOW_Show_Demo = #True
 
Class WINDOW
  WINDOW(x.l = #PB_Ignore, y.l = #PB_Ignore, width.l = #PB_Ignore, height.l = #PB_Ignore, Titel.s = "", flags.l = #False, ParentWindowID.l = #False)
  Release()
 
  Flex Close()
  Flex IsInitialized()
  Flex GetID()
  Flex SetActive()
  Flex Disable(Status.l)
  Flex Hide(Status.l)
  Flex Show(Status.l)
  Flex SmartRefresh(Status.l)
  Flex Sticky(Status.l)
  Flex GetActiveWindow()
 
  Flex Height(height.l)
  Flex Width(width.l)
  Flex MouseX()
  Flex MouseY()
  Flex OutputID()
  Flex XPos(x.l)
  Flex YPos(y.l)
 
  Flex Move(x.l= #PB_Ignore, y.l = #PB_Ignore)
  Flex NewSize(width.l= #PB_Ignore, height.l= #PB_Ignore)
  Flex ReSize(x.l = #PB_Ignore, y.l = #PB_Ignore, width.l= #PB_Ignore, height.l= #PB_Ignore)
 
  Flex Color(Color.l = #False)
  Flex State(Status.l = #False)
  Flex Title.s(Title.s = "")
 
  Flex WaitEvent(Timeout.l = 0)
  Flex Event()
  Flex EventGadget()
  Flex EventMenu()
  Flex EventType()
  Flex EventWindow()
  Flex EventlParam()
  Flex EventwParam()
 
  Flex AddKeyboardShortcut(Shortcut.l, Event.l)
  Flex RemoveKeyboardShortcut(Shortcut.l)
 
  Flex SetCallback(*CallbackProcedure)
 
  hwnd.l
  wndID.l
EndClass
 
 
Procedure WINDOW.Release()
  If IsWindow(This\wndID)
    CloseWindow(This\wndID)
  EndIf
  This\hwnd = 0
EndProcedure
 
Procedure WINDOW.WINDOW(x.l = #PB_Ignore, y.l = #PB_Ignore, width.l = #PB_Ignore, height.l = #PB_Ignore, Titel.s = "", flags.l = #False, ParentWindowID.l = #False)
  This\wndID = OpenWindow(#PB_Any, x.l, y.l, width.l, height.l, Titel.s, flags.l, ParentWindowID.l)
  This\hwnd  = WindowID(This\wndID)
  CreateGadgetList(This\hwnd)
  ProcedureReturn This\hwnd
EndProcedure
 
Procedure WINDOW.AddKeyboardShortcut(Shortcut.l, Event.l)
  ProcedureReturn AddKeyboardShortcut(This\wndID, Shortcut, Event)
EndProcedure
 
Procedure WINDOW.Close()
  ProcedureReturn CloseWindow(This\wndID)
EndProcedure
 
Procedure WINDOW.Disable(Status.l)
  ProcedureReturn DisableWindow(This\wndID, Status.l)
EndProcedure
 
Procedure WINDOW.EventGadget()
  ProcedureReturn EventGadget()
EndProcedure
 
Procedure WINDOW.EventMenu()
  ProcedureReturn EventMenu()
EndProcedure
 
Procedure WINDOW.EventType()
  ProcedureReturn EventType()
EndProcedure
 
Procedure WINDOW.EventWindow()
  ProcedureReturn EventWindow()
EndProcedure
 
Procedure WINDOW.EventlParam()
  ProcedureReturn EventlParam()
EndProcedure
 
Procedure WINDOW.EventwParam()
  ProcedureReturn EventwParam()
EndProcedure
 
Procedure WINDOW.GetActiveWindow()
  ProcedureReturn GetActiveWindow()
EndProcedure
 
Procedure WINDOW.Color(Color.l = #False)
  If Color
    ProcedureReturn SetWindowColor(This\wndID, Color)
  Else
    ProcedureReturn GetWindowColor(This\wndID)
  EndIf
EndProcedure
 
Procedure WINDOW.State(Status.l = #False)
  If Status
    ProcedureReturn SetWindowState(This\wndID, Status)
  Else
    ProcedureReturn GetWindowState(This\wndID)
  EndIf
EndProcedure
 
Procedure.s WINDOW.Title(Title.s = "")
  If Title
    SetWindowTitle(This\wndID, Title)
  Else
    ProcedureReturn GetWindowTitle(This\wndID)
  EndIf
EndProcedure
 
Procedure WINDOW.Hide(Status.l)
  ProcedureReturn HideWindow(This\wndID, 1)
EndProcedure
 
Procedure WINDOW.Show(Status.l)
  ProcedureReturn HideWindow(This\wndID, 0)
EndProcedure
 
Procedure WINDOW.IsInitialized()
  ProcedureReturn IsWindow(This\wndID)
EndProcedure
 
Procedure WINDOW.Move(x.l= #PB_Ignore, y.l = #PB_Ignore)
  ProcedureReturn ResizeWindow(This\wndID, x.l, y.l, #PB_Ignore, #PB_Ignore)
EndProcedure
 
Procedure WINDOW.NewSize(width.l= #PB_Ignore, height.l= #PB_Ignore)
  ProcedureReturn ResizeWindow(This\wndID, #PB_Ignore, #PB_Ignore, width.l, height.l)
EndProcedure
 
Procedure WINDOW.ReSize(x.l = #PB_Ignore, y.l = #PB_Ignore, width.l= #PB_Ignore, height.l= #PB_Ignore)
  ProcedureReturn ResizeWindow(This\wndID, x.l, y.l, width.l, height.l)
EndProcedure
 
Procedure WINDOW.RemoveKeyboardShortcut(Shortcut.l)
  ProcedureReturn RemoveKeyboardShortcut(This\wndID, Shortcut.l)
EndProcedure
 
Procedure WINDOW.SetActive()
  ProcedureReturn SetActiveWindow(This\wndID)
EndProcedure
 
Procedure WINDOW.SetCallback(*CallbackProcedure)
  ProcedureReturn SetWindowCallback(*CallbackProcedure, This\wndID)
EndProcedure
 
Procedure WINDOW.SmartRefresh(Status.l)
  ProcedureReturn SmartWindowRefresh(This\wndID, Status)
EndProcedure
 
Procedure WINDOW.Sticky(Status.l)
  ProcedureReturn StickyWindow(This\wndID, Status)
EndProcedure
 
Procedure WINDOW.WaitEvent(Timeout.l = 0)
  If Timeout
    ProcedureReturn WaitWindowEvent(Timeout)
  Else
    ProcedureReturn WaitWindowEvent()
  EndIf
EndProcedure
 
Procedure WINDOW.Event()
  ProcedureReturn WindowEvent()
EndProcedure
 
Procedure WINDOW.GetID()
  ProcedureReturn WindowID(This\wndID)
EndProcedure
 
Procedure WINDOW.Height(height.l)
  If height
    ProcedureReturn ResizeWindow(This\wndID, #PB_Ignore, #PB_Ignore, #PB_Ignore, height)
  Else
    ProcedureReturn WindowHeight(This\wndID)
  EndIf
EndProcedure
 
Procedure WINDOW.Width(width.l)
  If width
    ProcedureReturn ResizeWindow(This\wndID, #PB_Ignore, #PB_Ignore, width ,#PB_Ignore)
  Else
    ProcedureReturn WindowWidth(This\wndID)
  EndIf
EndProcedure
 
Procedure WINDOW.MouseX()
  ProcedureReturn WindowMouseX(This\wndID)
EndProcedure
 
Procedure WINDOW.MouseY()
  ProcedureReturn WindowMouseY(This\wndID)
EndProcedure
 
Procedure WINDOW.OutputID()
  ProcedureReturn WindowOutput(This\wndID)
EndProcedure
 
Procedure WINDOW.XPos(x.l)
  If x
    ProcedureReturn ResizeWindow(This\wndID, x, #PB_Ignore, #PB_Ignore, #PB_Ignore)
  Else
    ProcedureReturn WindowX(This\wndID)
  EndIf
EndProcedure
 
Procedure WINDOW.YPos(y.l)
  If y
    ProcedureReturn ResizeWindow(This\wndID,#PB_Ignore, y, #PB_Ignore, #PB_Ignore)
  Else
    ProcedureReturn WindowY(This\wndID)
  EndIf
EndProcedure
 
 
 
CompilerIf #Class_WINDOW_Show_Demo = #True
 
  *Window.WINDOW = NewObject WINDOW(#PB_Ignore, #PB_Ignore, 400, 200 , "Here is the title", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
 
  Repeat
    Debug "X: "+Str(*Window->MouseX())+"  |   Y: "+Str(*Window->MouseY())
  Until *Window->WaitEvent() = #PB_Event_CloseWindow
 
  *Window->Release()
  DeleteObject *Window
 
CompilerEndIf



после:
Код:
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
#Class_WINDOW_Show_Demo = #True
 
Interface WINDOW
  WINDOW(x.l = #PB_Ignore, y.l = #PB_Ignore, width.l = #PB_Ignore, height.l = #PB_Ignore, Titel.s = "", flags.l = #False, ParentWindowID.l = #False)
  Release()
 
  Close()
  IsInitialized()
  GetID()
  SetActive()
  Disable(Status.l)
  Hide(Status.l)
  Show(Status.l)
  SmartRefresh(Status.l)
  Sticky(Status.l)
  GetActiveWindow()
 
  Height(height.l)
  Width(width.l)
  MouseX()
  MouseY()
  OutputID()
  XPos(x.l)
  YPos(y.l)
 
  Move(x.l = #PB_Ignore, y.l = #PB_Ignore)
  NewSize(width.l = #PB_Ignore, height.l = #PB_Ignore)
  ReSize(x.l = #PB_Ignore, y.l = #PB_Ignore, width.l = #PB_Ignore, height.l = #PB_Ignore)
 
  Color(Color.l = #False)
  State(Status.l = #False)
  Title.s(Title.s = "")
 
  WaitEvent(Timeout.l = 0)
  Event()
  EventGadget()
  EventMenu()
  EventType()
  EventWindow()
  EventlParam()
  EventwParam()
 
  AddKeyboardShortcut(Shortcut.l, Event.l)
  RemoveKeyboardShortcut(Shortcut.l)
 
  SetCallback(*CallbackProcedure)
 
  EndInterface : Structure sWINDOW : *vt.l : hwnd.l
  wndID.l
EndStructure : Declare.l ConstructWINDOW(x.l=#PB_Ignore,y.l=#PB_Ignore,width.l=#PB_Ignore,height.l=#PB_Ignore,Titel.s="",flags.l=#False,ParentWindowID.l=#False) : Declare.l WINDOW_Release(*this): Global _VT_WINDOW
 
 
Procedure WINDOW_Release(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  If IsWindow(*this\wndID)
    CloseWindow(*this\wndID)
  EndIf
  *this\hwnd = 0
EndProcedure
 
Procedure WINDOW_WINDOW(*this.sWINDOW, x.l = #PB_Ignore, y.l = #PB_Ignore, width.l = #PB_Ignore, height.l = #PB_Ignore, Titel.s = "", flags.l = #False, ParentWindowID.l = #False ) : Protected *thisM.WINDOW = *this
  *this\wndID = OpenWindow(#PB_Any, x.l, y.l, width.l, height.l, Titel.s, flags.l, ParentWindowID.l)
  *this\hwnd = WindowID(*this\wndID)
  CreateGadgetList(*this\hwnd)
  ProcedureReturn *this\hwnd
EndProcedure
 
Procedure WINDOW_AddKeyboardShortcut(*this.sWINDOW, Shortcut.l, Event.l ) : Protected *thisM.WINDOW = *this
  ProcedureReturn AddKeyboardShortcut(*this\wndID, Shortcut, Event)
EndProcedure
 
Procedure WINDOW_Close(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn CloseWindow(*this\wndID)
EndProcedure
 
Procedure WINDOW_Disable(*this.sWINDOW, Status.l ) : Protected *thisM.WINDOW = *this
  ProcedureReturn DisableWindow(*this\wndID, Status.l)
EndProcedure
 
Procedure WINDOW_EventGadget(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn EventGadget()
EndProcedure
 
Procedure WINDOW_EventMenu(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn EventMenu()
EndProcedure
 
Procedure WINDOW_EventType(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn EventType()
EndProcedure
 
Procedure WINDOW_EventWindow(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn EventWindow()
EndProcedure
 
Procedure WINDOW_EventlParam(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn EventlParam()
EndProcedure
 
Procedure WINDOW_EventwParam(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn EventwParam()
EndProcedure
 
Procedure WINDOW_GetActiveWindow(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn GetActiveWindow()
EndProcedure
 
Procedure WINDOW_Color(*this.sWINDOW, Color.l = #False ) : Protected *thisM.WINDOW = *this
  If Color
    ProcedureReturn SetWindowColor(*this\wndID, Color)
  Else
    ProcedureReturn GetWindowColor(*this\wndID)
  EndIf
EndProcedure
 
Procedure WINDOW_State(*this.sWINDOW, Status.l = #False ) : Protected *thisM.WINDOW = *this
  If Status
    ProcedureReturn SetWindowState(*this\wndID, Status)
  Else
    ProcedureReturn GetWindowState(*this\wndID)
  EndIf
EndProcedure
 
Procedure.s WINDOW_Title(*this.sWINDOW, Title.s = "" ) : Protected *thisM.WINDOW = *this
  If Title
    SetWindowTitle(*this\wndID, Title)
  Else
    ProcedureReturn GetWindowTitle(*this\wndID)
  EndIf
EndProcedure
 
Procedure WINDOW_Hide(*this.sWINDOW, Status.l ) : Protected *thisM.WINDOW = *this
  ProcedureReturn HideWindow(*this\wndID, 1)
EndProcedure
 
Procedure WINDOW_Show(*this.sWINDOW, Status.l ) : Protected *thisM.WINDOW = *this
  ProcedureReturn HideWindow(*this\wndID, 0)
EndProcedure
 
Procedure WINDOW_IsInitialized(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn IsWindow(*this\wndID)
EndProcedure
 
Procedure WINDOW_Move(*this.sWINDOW, x.l = #PB_Ignore, y.l = #PB_Ignore ) : Protected *thisM.WINDOW = *this
  ProcedureReturn ResizeWindow(*this\wndID, x.l, y.l, #PB_Ignore, #PB_Ignore)
EndProcedure
 
Procedure WINDOW_NewSize(*this.sWINDOW, width.l = #PB_Ignore, height.l = #PB_Ignore ) : Protected *thisM.WINDOW = *this
  ProcedureReturn ResizeWindow(*this\wndID, #PB_Ignore, #PB_Ignore, width.l, height.l)
EndProcedure
 
Procedure WINDOW_ReSize(*this.sWINDOW, x.l = #PB_Ignore, y.l = #PB_Ignore, width.l = #PB_Ignore, height.l = #PB_Ignore ) : Protected *thisM.WINDOW = *this
  ProcedureReturn ResizeWindow(*this\wndID, x.l, y.l, width.l, height.l)
EndProcedure
 
Procedure WINDOW_RemoveKeyboardShortcut(*this.sWINDOW, Shortcut.l ) : Protected *thisM.WINDOW = *this
  ProcedureReturn RemoveKeyboardShortcut(*this\wndID, Shortcut.l)
EndProcedure
 
Procedure WINDOW_SetActive(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn SetActiveWindow(*this\wndID)
EndProcedure
 
Procedure WINDOW_SetCallback(*this.sWINDOW, *CallbackProcedure ) : Protected *thisM.WINDOW = *this
  ProcedureReturn SetWindowCallback(*CallbackProcedure, *this\wndID)
EndProcedure
 
Procedure WINDOW_SmartRefresh(*this.sWINDOW, Status.l ) : Protected *thisM.WINDOW = *this
  ProcedureReturn SmartWindowRefresh(*this\wndID, Status)
EndProcedure
 
Procedure WINDOW_Sticky(*this.sWINDOW, Status.l ) : Protected *thisM.WINDOW = *this
  ProcedureReturn StickyWindow(*this\wndID, Status)
EndProcedure
 
Procedure WINDOW_WaitEvent(*this.sWINDOW, Timeout.l = 0 ) : Protected *thisM.WINDOW = *this
  If Timeout
    ProcedureReturn WaitWindowEvent(Timeout)
  Else
    ProcedureReturn WaitWindowEvent()
  EndIf
EndProcedure
 
Procedure WINDOW_Event(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn WindowEvent()
EndProcedure
 
Procedure WINDOW_GetID(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn WindowID(*this\wndID)
EndProcedure
 
Procedure WINDOW_Height(*this.sWINDOW, height.l ) : Protected *thisM.WINDOW = *this
  If height
    ProcedureReturn ResizeWindow(*this\wndID, #PB_Ignore, #PB_Ignore, #PB_Ignore, height)
  Else
    ProcedureReturn WindowHeight(*this\wndID)
  EndIf
EndProcedure
 
Procedure WINDOW_Width(*this.sWINDOW, width.l ) : Protected *thisM.WINDOW = *this
  If width
    ProcedureReturn ResizeWindow(*this\wndID, #PB_Ignore, #PB_Ignore, width, #PB_Ignore)
  Else
    ProcedureReturn WindowWidth(*this\wndID)
  EndIf
EndProcedure
 
Procedure WINDOW_MouseX(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn WindowMouseX(*this\wndID)
EndProcedure
 
Procedure WINDOW_MouseY(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn WindowMouseY(*this\wndID)
EndProcedure
 
Procedure WINDOW_OutputID(*this.sWINDOW ) : Protected *thisM.WINDOW = *this
  ProcedureReturn WindowOutput(*this\wndID)
EndProcedure
 
Procedure WINDOW_XPos(*this.sWINDOW, x.l ) : Protected *thisM.WINDOW = *this
  If x
    ProcedureReturn ResizeWindow(*this\wndID, x, #PB_Ignore, #PB_Ignore, #PB_Ignore)
  Else
    ProcedureReturn WindowX(*this\wndID)
  EndIf
EndProcedure
 
Procedure WINDOW_YPos(*this.sWINDOW, y.l ) : Protected *thisM.WINDOW = *this
  If y
    ProcedureReturn ResizeWindow(*this\wndID, #PB_Ignore, y, #PB_Ignore, #PB_Ignore)
  Else
    ProcedureReturn WindowY(*this\wndID)
  EndIf
EndProcedure
 
 
 
CompilerIf #Class_WINDOW_Show_Demo = #True
 
  *Window.WINDOW = constructWINDOW(#PB_Ignore, #PB_Ignore, 400, 200, "Here is the title", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
 
  Repeat
    Debug "X: " + Str(*Window\MouseX()) + "  |   Y: " + Str(*Window\MouseY())
  Until *Window\WaitEvent() = #PB_Event_CloseWindow
 
  *Window\Release()
  *Window\Release() : FreeMemory(*Window) : *Window = 0
 
CompilerEndIf
; ------------------------------- OOP Constructors, etc. -------------------------------
 
Procedure ConstructWINDOW(x.l=#PB_Ignore,y.l=#PB_Ignore,width.l=#PB_Ignore,height.l=#PB_Ignore,Titel.s="",flags.l=#False,ParentWindowID.l=#False)
  Protected *this.sWINDOW = AllocateMemory(SizeOf(sWINDOW))
  Protected *thisM.WINDOW = *this
  If Not *this : ProcedureReturn #False : EndIf
  If Not _VT_WINDOW And SizeOf(WINDOW)
    _VT_WINDOW = AllocateMemory(SizeOf(WINDOW)) ; Global virtual table
    CompilerIf Defined(WINDOW_WINDOW, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\WINDOW()), @WINDOW_WINDOW())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Release, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Release()), @WINDOW_Release())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Close, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Close()), @WINDOW_Close())
    CompilerEndIf
    CompilerIf Defined(WINDOW_IsInitialized, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\IsInitialized()), @WINDOW_IsInitialized())
    CompilerEndIf
    CompilerIf Defined(WINDOW_GetID, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\GetID()), @WINDOW_GetID())
    CompilerEndIf
    CompilerIf Defined(WINDOW_SetActive, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\SetActive()), @WINDOW_SetActive())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Disable, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Disable()), @WINDOW_Disable())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Hide, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Hide()), @WINDOW_Hide())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Show, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Show()), @WINDOW_Show())
    CompilerEndIf
    CompilerIf Defined(WINDOW_SmartRefresh, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\SmartRefresh()), @WINDOW_SmartRefresh())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Sticky, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Sticky()), @WINDOW_Sticky())
    CompilerEndIf
    CompilerIf Defined(WINDOW_GetActiveWindow, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\GetActiveWindow()), @WINDOW_GetActiveWindow())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Height, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Height()), @WINDOW_Height())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Width, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Width()), @WINDOW_Width())
    CompilerEndIf
    CompilerIf Defined(WINDOW_MouseX, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\MouseX()), @WINDOW_MouseX())
    CompilerEndIf
    CompilerIf Defined(WINDOW_MouseY, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\MouseY()), @WINDOW_MouseY())
    CompilerEndIf
    CompilerIf Defined(WINDOW_OutputID, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\OutputID()), @WINDOW_OutputID())
    CompilerEndIf
    CompilerIf Defined(WINDOW_XPos, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\XPos()), @WINDOW_XPos())
    CompilerEndIf
    CompilerIf Defined(WINDOW_YPos, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\YPos()), @WINDOW_YPos())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Move, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Move()), @WINDOW_Move())
    CompilerEndIf
    CompilerIf Defined(WINDOW_NewSize, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\NewSize()), @WINDOW_NewSize())
    CompilerEndIf
    CompilerIf Defined(WINDOW_ReSize, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\ReSize()), @WINDOW_ReSize())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Color, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Color()), @WINDOW_Color())
    CompilerEndIf
    CompilerIf Defined(WINDOW_State, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\State()), @WINDOW_State())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Title, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Title()), @WINDOW_Title())
    CompilerEndIf
    CompilerIf Defined(WINDOW_WaitEvent, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\WaitEvent()), @WINDOW_WaitEvent())
    CompilerEndIf
    CompilerIf Defined(WINDOW_Event, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\Event()), @WINDOW_Event())
    CompilerEndIf
    CompilerIf Defined(WINDOW_EventGadget, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\EventGadget()), @WINDOW_EventGadget())
    CompilerEndIf
    CompilerIf Defined(WINDOW_EventMenu, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\EventMenu()), @WINDOW_EventMenu())
    CompilerEndIf
    CompilerIf Defined(WINDOW_EventType, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\EventType()), @WINDOW_EventType())
    CompilerEndIf
    CompilerIf Defined(WINDOW_EventWindow, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\EventWindow()), @WINDOW_EventWindow())
    CompilerEndIf
    CompilerIf Defined(WINDOW_EventlParam, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\EventlParam()), @WINDOW_EventlParam())
    CompilerEndIf
    CompilerIf Defined(WINDOW_EventwParam, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\EventwParam()), @WINDOW_EventwParam())
    CompilerEndIf
    CompilerIf Defined(WINDOW_AddKeyboardShortcut, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\AddKeyboardShortcut()), @WINDOW_AddKeyboardShortcut())
    CompilerEndIf
    CompilerIf Defined(WINDOW_RemoveKeyboardShortcut, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\RemoveKeyboardShortcut()), @WINDOW_RemoveKeyboardShortcut())
    CompilerEndIf
    CompilerIf Defined(WINDOW_SetCallback, #PB_Procedure)
      PokeL(_VT_WINDOW + OffsetOf(WINDOW\SetCallback()), @WINDOW_SetCallback())
    CompilerEndIf
  EndIf
  *this\vt = _VT_WINDOW
  CompilerIf Defined(WINDOW_WINDOW, #PB_Procedure) = #True
    WINDOW_WINDOW(*this, x, y, width, height, Titel, flags, ParentWindowID)
  CompilerEndIf
  ProcedureReturn *this
EndProcedure


_________________
Люди!! Уважайте друг друга!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 26, 2008 12:33 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн ноя 27, 2006 2:43 pm
Сообщений: 931
Откуда: Санкт-Петербург
Благодарил (а): 1 раз.
Поблагодарили: 12 раз.
Пункты репутации: 15
надо скачать редактор jaPBe и в нем писать программы с элементами ООП?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 26, 2008 1:13 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн ноя 27, 2006 2:43 pm
Сообщений: 931
Откуда: Санкт-Петербург
Благодарил (а): 1 раз.
Поблагодарили: 12 раз.
Пункты репутации: 15
Редактор jaPBe поддерживает ООП синтаксис?
а программа OOP.exe (можно скачать с этого сайта) переделывает код в формат, понятный компилятору PureBasic?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 26, 2008 12:16 pm 
Не в сети
док

Зарегистрирован: Вт сен 18, 2007 9:16 am
Сообщений: 162
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
22vlad писал(а):
надо скачать редактор jaPBe и в нем писать программы с элементами ООП?

Нет. Но если есть желание, то да.
А так - все очень просто: http://pb-oop.origo.ethz.ch/wiki/IDE_Installation

_________________
Люди!! Уважайте друг друга!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 26, 2008 12:24 pm 
Не в сети
док

Зарегистрирован: Вт сен 18, 2007 9:16 am
Сообщений: 162
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
22vlad писал(а):
Редактор jaPBe поддерживает ООП синтаксис?

Настолько же насколько стандартная IDE

22vlad писал(а):
а программа OOP.exe (можно скачать с этого сайта) переделывает код в формат, понятный компилятору PureBasic?

Да, используется лексер(http://www.purebasic.fr/english/viewtopic.php?t=22116) и собственные наработки inc.

Порядок действий (после запуска компиляции в IDE):
1. OOP.exe берет исходный файл *.pb
2. Парсит и формирует стандартный код (препроцессинг)
3. Сохраняет временный файл
4. Запускает компилятор и подсовывает ему временный файл

Вроде всё так (хотя 4 пункт и не совсем корректен)

_________________
Люди!! Уважайте друг друга!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт сен 08, 2009 8:20 pm 
Не в сети
профессор

Зарегистрирован: Вт янв 27, 2009 3:09 pm
Сообщений: 295
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
обьясните пожалуйста на пальцах, в чем преимущество ООП перед процедурным программированием? и какой препроцессор для пурика лучше всего использовать? т.е., есть ли на пурике вообще достойные внимания решения, или проще будет пользоваться изначально ОО-языком?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 09, 2009 8:31 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11077
Благодарил (а): 4 раз.
Поблагодарили: 384 раз.
Основные приемущества появляются только в больших проектах (больше нескольких тысяч строк) и проявляются лишь в упрощении написания кода, а в остальном особых проемуществ нет.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 09, 2009 8:24 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн окт 13, 2008 4:43 pm
Сообщений: 342
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Ха, Петр, здорово ты объяснил! :D
Ну да... этак раз в 10 все упростится... и вообще можно сделать свой собственный язык программирования с новыми операциями и новыми объектами, скажем матрицами или тензорами... :D :D :D
Всего лишь навсего... Но не более...!!!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 09, 2009 8:31 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн окт 13, 2008 4:43 pm
Сообщений: 342
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
А вот кстати вопрос... в пурике можно присвоить значение одной структуры(напр.А) другой (В) в виде А=В? Что-то у меня вроде не прокатило....


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 09, 2009 8:51 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11077
Благодарил (а): 4 раз.
Поблагодарили: 384 раз.
В 4.40 такое будет

А сейчас можно через память
Код:
1
2
3
4
5
6
a.point
b.point
 
a\x=100
CopyMemory(@a, @b, SizeOf(a))
Debug b\x


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


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB