wrb 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (271) hide show
  1. checksums.yaml +7 -0
  2. data/README +28 -0
  3. data/Rakefile +66 -0
  4. data/bin/wrb +41 -0
  5. data/bin/wrb.bat +6 -0
  6. data/ext/rwin/aatree.c +192 -0
  7. data/ext/rwin/aatree.h +55 -0
  8. data/ext/rwin/extconf.rb +47 -0
  9. data/ext/rwin/rw_api.c +2058 -0
  10. data/ext/rwin/rw_devices.c +215 -0
  11. data/ext/rwin/rw_gdiplus.h +278 -0
  12. data/ext/rwin/rw_graphics.c +1583 -0
  13. data/ext/rwin/rw_resources.c +1988 -0
  14. data/ext/rwin/rw_ubfuncs.c +281 -0
  15. data/ext/rwin/rw_windows.c +1936 -0
  16. data/ext/rwin/rwin.c +451 -0
  17. data/ext/rwin/rwin.h +442 -0
  18. data/lib/rwin.rb +820 -0
  19. data/lib/wrb.rb +20 -0
  20. data/lib/wrb/applications/frmdesigner/angle.cur +0 -0
  21. data/lib/wrb/applications/frmdesigner/angle2.cur +0 -0
  22. data/lib/wrb/applications/frmdesigner/controls/Button.bmp +0 -0
  23. data/lib/wrb/applications/frmdesigner/controls/Button.rb +34 -0
  24. data/lib/wrb/applications/frmdesigner/controls/Checkbox.bmp +0 -0
  25. data/lib/wrb/applications/frmdesigner/controls/Checkbox.rb +10 -0
  26. data/lib/wrb/applications/frmdesigner/controls/Combobox.bmp +0 -0
  27. data/lib/wrb/applications/frmdesigner/controls/Combobox.rb +88 -0
  28. data/lib/wrb/applications/frmdesigner/controls/ComboboxEx.rb +97 -0
  29. data/lib/wrb/applications/frmdesigner/controls/Comboboxex.bmp +0 -0
  30. data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.bmp +0 -0
  31. data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.rb +11 -0
  32. data/lib/wrb/applications/frmdesigner/controls/Edit.bmp +0 -0
  33. data/lib/wrb/applications/frmdesigner/controls/Edit.rb +8 -0
  34. data/lib/wrb/applications/frmdesigner/controls/Groupbox.bmp +0 -0
  35. data/lib/wrb/applications/frmdesigner/controls/Groupbox.rb +9 -0
  36. data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.bmp +0 -0
  37. data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.rb +9 -0
  38. data/lib/wrb/applications/frmdesigner/controls/Imagelist.bmp +0 -0
  39. data/lib/wrb/applications/frmdesigner/controls/Imagelist.rb +115 -0
  40. data/lib/wrb/applications/frmdesigner/controls/Listbox.bmp +0 -0
  41. data/lib/wrb/applications/frmdesigner/controls/Listbox.rb +77 -0
  42. data/lib/wrb/applications/frmdesigner/controls/Listview.bmp +0 -0
  43. data/lib/wrb/applications/frmdesigner/controls/Listview.rb +157 -0
  44. data/lib/wrb/applications/frmdesigner/controls/Menu.bmp +0 -0
  45. data/lib/wrb/applications/frmdesigner/controls/Menu.rb +198 -0
  46. data/lib/wrb/applications/frmdesigner/controls/Menubar.bmp +0 -0
  47. data/lib/wrb/applications/frmdesigner/controls/Menubar.rb +9 -0
  48. data/lib/wrb/applications/frmdesigner/controls/MonthCalender.bmp +0 -0
  49. data/lib/wrb/applications/frmdesigner/controls/Monthcalender.rb +9 -0
  50. data/lib/wrb/applications/frmdesigner/controls/Panel.bmp +0 -0
  51. data/lib/wrb/applications/frmdesigner/controls/Panel.rb +30 -0
  52. data/lib/wrb/applications/frmdesigner/controls/Progressbar.rb +10 -0
  53. data/lib/wrb/applications/frmdesigner/controls/Radiobutton.bmp +0 -0
  54. data/lib/wrb/applications/frmdesigner/controls/Radiobutton.rb +13 -0
  55. data/lib/wrb/applications/frmdesigner/controls/Rebar.bmp +0 -0
  56. data/lib/wrb/applications/frmdesigner/controls/Rebar.rb +162 -0
  57. data/lib/wrb/applications/frmdesigner/controls/Splitter.bmp +0 -0
  58. data/lib/wrb/applications/frmdesigner/controls/Splitter.rb +66 -0
  59. data/lib/wrb/applications/frmdesigner/controls/Static.bmp +0 -0
  60. data/lib/wrb/applications/frmdesigner/controls/Static.rb +9 -0
  61. data/lib/wrb/applications/frmdesigner/controls/Statusbar.bmp +0 -0
  62. data/lib/wrb/applications/frmdesigner/controls/Statusbar.rb +103 -0
  63. data/lib/wrb/applications/frmdesigner/controls/Tabctrl.bmp +0 -0
  64. data/lib/wrb/applications/frmdesigner/controls/Tabctrl.rb +136 -0
  65. data/lib/wrb/applications/frmdesigner/controls/Timer.bmp +0 -0
  66. data/lib/wrb/applications/frmdesigner/controls/Timer.rb +36 -0
  67. data/lib/wrb/applications/frmdesigner/controls/Toolbar.bmp +0 -0
  68. data/lib/wrb/applications/frmdesigner/controls/Toolbar.rb +165 -0
  69. data/lib/wrb/applications/frmdesigner/controls/Trackbar.bmp +0 -0
  70. data/lib/wrb/applications/frmdesigner/controls/Trackbar.rb +34 -0
  71. data/lib/wrb/applications/frmdesigner/controls/Treeview.bmp +0 -0
  72. data/lib/wrb/applications/frmdesigner/controls/Treeview.rb +107 -0
  73. data/lib/wrb/applications/frmdesigner/controls/Updown.bmp +0 -0
  74. data/lib/wrb/applications/frmdesigner/controls/Updown.rb +31 -0
  75. data/lib/wrb/applications/frmdesigner/controls/default.bmp +0 -0
  76. data/lib/wrb/applications/frmdesigner/controls/progressbar.bmp +0 -0
  77. data/lib/wrb/applications/frmdesigner/controls/unselect.bmp +0 -0
  78. data/lib/wrb/applications/frmdesigner/fddialogs.rb +87 -0
  79. data/lib/wrb/applications/frmdesigner/fdesign.rb +1315 -0
  80. data/lib/wrb/applications/frmdesigner/fdmodules.rb +1394 -0
  81. data/lib/wrb/applications/frmdesigner/fdparseform.rb +197 -0
  82. data/lib/wrb/applications/frmdesigner/img13.bmp +0 -0
  83. data/lib/wrb/base.rb +1294 -0
  84. data/lib/wrb/combocommon.rb +77 -0
  85. data/lib/wrb/commctrlconst.rb +139 -0
  86. data/lib/wrb/commdlg.rb +77 -0
  87. data/lib/wrb/components/animate.rb +114 -0
  88. data/lib/wrb/components/bitmap.rb +116 -0
  89. data/lib/wrb/components/button.rb +134 -0
  90. data/lib/wrb/components/canvas.rb +266 -0
  91. data/lib/wrb/components/checkbox.rb +118 -0
  92. data/lib/wrb/components/choosecolordlg.rb +87 -0
  93. data/lib/wrb/components/choosefontdlg.rb +142 -0
  94. data/lib/wrb/components/clipboard.rb +174 -0
  95. data/lib/wrb/components/combobox.rb +282 -0
  96. data/lib/wrb/components/comboboxex.rb +574 -0
  97. data/lib/wrb/components/cursor.rb +91 -0
  98. data/lib/wrb/components/datetimepicker.rb +197 -0
  99. data/lib/wrb/components/ddeclient.rb +180 -0
  100. data/lib/wrb/components/ddeserver.rb +131 -0
  101. data/lib/wrb/components/dialog.rb +228 -0
  102. data/lib/wrb/components/edit.rb +412 -0
  103. data/lib/wrb/components/font.rb +35 -0
  104. data/lib/wrb/components/form.rb +65 -0
  105. data/lib/wrb/components/groupbox.rb +122 -0
  106. data/lib/wrb/components/header.rb +479 -0
  107. data/lib/wrb/components/hotkeyctrl.rb +72 -0
  108. data/lib/wrb/components/icon.rb +109 -0
  109. data/lib/wrb/components/imagelist.rb +396 -0
  110. data/lib/wrb/components/inifile.rb +97 -0
  111. data/lib/wrb/components/listbox.rb +149 -0
  112. data/lib/wrb/components/listview.rb +1467 -0
  113. data/lib/wrb/components/menu.rb +592 -0
  114. data/lib/wrb/components/menubar.rb +84 -0
  115. data/lib/wrb/components/monthcalender.rb +164 -0
  116. data/lib/wrb/components/openfilenamedlg.rb +147 -0
  117. data/lib/wrb/components/pager.rb +199 -0
  118. data/lib/wrb/components/panel.rb +103 -0
  119. data/lib/wrb/components/picture.rb +55 -0
  120. data/lib/wrb/components/printdlg.rb +148 -0
  121. data/lib/wrb/components/printdlgex.rb +117 -0
  122. data/lib/wrb/components/printer.rb +97 -0
  123. data/lib/wrb/components/progressbar.rb +140 -0
  124. data/lib/wrb/components/radiobutton.rb +49 -0
  125. data/lib/wrb/components/rebar.rb +830 -0
  126. data/lib/wrb/components/registry.rb +408 -0
  127. data/lib/wrb/components/richedit.rb +1181 -0
  128. data/lib/wrb/components/savefilenamedlg.rb +27 -0
  129. data/lib/wrb/components/scintilla.rb +1298 -0
  130. data/lib/wrb/components/scrollbar.rb +239 -0
  131. data/lib/wrb/components/splitter.rb +494 -0
  132. data/lib/wrb/components/static.rb +198 -0
  133. data/lib/wrb/components/statusbar.rb +490 -0
  134. data/lib/wrb/components/tabctrl.rb +686 -0
  135. data/lib/wrb/components/timer.rb +117 -0
  136. data/lib/wrb/components/toolbar.rb +1107 -0
  137. data/lib/wrb/components/tooltip.rb +651 -0
  138. data/lib/wrb/components/trackbar.rb +298 -0
  139. data/lib/wrb/components/treeview.rb +845 -0
  140. data/lib/wrb/components/updown.rb +198 -0
  141. data/lib/wrb/ddeml.rb +241 -0
  142. data/lib/wrb/documents/animate.html +46 -0
  143. data/lib/wrb/documents/bitmap.html +69 -0
  144. data/lib/wrb/documents/button.html +78 -0
  145. data/lib/wrb/documents/canvas.html +137 -0
  146. data/lib/wrb/documents/checkbox.html +77 -0
  147. data/lib/wrb/documents/choosecolordlg.html +29 -0
  148. data/lib/wrb/documents/choosefontdlg.html +31 -0
  149. data/lib/wrb/documents/clipboard.html +31 -0
  150. data/lib/wrb/documents/combobox.html +117 -0
  151. data/lib/wrb/documents/comboboxex.html +139 -0
  152. data/lib/wrb/documents/control.html +53 -0
  153. data/lib/wrb/documents/cursor.html +45 -0
  154. data/lib/wrb/documents/datetimepicker.html +70 -0
  155. data/lib/wrb/documents/ddeclient.html +33 -0
  156. data/lib/wrb/documents/ddeserver.html +26 -0
  157. data/lib/wrb/documents/dialog.html +78 -0
  158. data/lib/wrb/documents/edit.html +169 -0
  159. data/lib/wrb/documents/empty.html +11 -0
  160. data/lib/wrb/documents/favicon.png +0 -0
  161. data/lib/wrb/documents/font.html +38 -0
  162. data/lib/wrb/documents/form.html +63 -0
  163. data/lib/wrb/documents/groupbox.html +57 -0
  164. data/lib/wrb/documents/header.html +85 -0
  165. data/lib/wrb/documents/hotkeyctrl.html +42 -0
  166. data/lib/wrb/documents/icon.html +45 -0
  167. data/lib/wrb/documents/imagelist.html +101 -0
  168. data/lib/wrb/documents/images/button.png +0 -0
  169. data/lib/wrb/documents/images/checkbox.png +0 -0
  170. data/lib/wrb/documents/images/combobox.png +0 -0
  171. data/lib/wrb/documents/images/comboboxex.png +0 -0
  172. data/lib/wrb/documents/images/datetimepicker.png +0 -0
  173. data/lib/wrb/documents/images/edit.png +0 -0
  174. data/lib/wrb/documents/images/groupbox.png +0 -0
  175. data/lib/wrb/documents/images/hotkeyctrl.png +0 -0
  176. data/lib/wrb/documents/images/listbox.png +0 -0
  177. data/lib/wrb/documents/images/listview.png +0 -0
  178. data/lib/wrb/documents/images/menu.png +0 -0
  179. data/lib/wrb/documents/images/menubar.png +0 -0
  180. data/lib/wrb/documents/images/monthcalender.png +0 -0
  181. data/lib/wrb/documents/images/progressbar.png +0 -0
  182. data/lib/wrb/documents/images/radiobutton.png +0 -0
  183. data/lib/wrb/documents/images/rebar.png +0 -0
  184. data/lib/wrb/documents/images/richedit.png +0 -0
  185. data/lib/wrb/documents/images/splitter.png +0 -0
  186. data/lib/wrb/documents/images/static.png +0 -0
  187. data/lib/wrb/documents/images/statusbar.png +0 -0
  188. data/lib/wrb/documents/images/tabctrl.png +0 -0
  189. data/lib/wrb/documents/images/toolbar.png +0 -0
  190. data/lib/wrb/documents/images/tooltip.png +0 -0
  191. data/lib/wrb/documents/images/trackbar.png +0 -0
  192. data/lib/wrb/documents/images/treeview.png +0 -0
  193. data/lib/wrb/documents/images/updown.png +0 -0
  194. data/lib/wrb/documents/index.html +155 -0
  195. data/lib/wrb/documents/inifile.html +36 -0
  196. data/lib/wrb/documents/license.txt +22 -0
  197. data/lib/wrb/documents/listbox.html +96 -0
  198. data/lib/wrb/documents/listview.html +277 -0
  199. data/lib/wrb/documents/make_doc.rb +596 -0
  200. data/lib/wrb/documents/menu.html +144 -0
  201. data/lib/wrb/documents/menubar.html +54 -0
  202. data/lib/wrb/documents/monthcalender.html +48 -0
  203. data/lib/wrb/documents/openfilenamedlg.html +36 -0
  204. data/lib/wrb/documents/pager.html +63 -0
  205. data/lib/wrb/documents/panel.html +32 -0
  206. data/lib/wrb/documents/picture.html +48 -0
  207. data/lib/wrb/documents/printdlg.html +35 -0
  208. data/lib/wrb/documents/printdlgex.html +35 -0
  209. data/lib/wrb/documents/printer.html +40 -0
  210. data/lib/wrb/documents/progressbar.html +69 -0
  211. data/lib/wrb/documents/radiobutton.html +51 -0
  212. data/lib/wrb/documents/rebar.html +143 -0
  213. data/lib/wrb/documents/registry.html +36 -0
  214. data/lib/wrb/documents/richedit.html +232 -0
  215. data/lib/wrb/documents/samples/editimg.bmp +0 -0
  216. data/lib/wrb/documents/samples/editimg.iml +0 -0
  217. data/lib/wrb/documents/samples/fileimg.bmp +0 -0
  218. data/lib/wrb/documents/samples/fileimg.iml +0 -0
  219. data/lib/wrb/documents/samples/sample_button.rb +21 -0
  220. data/lib/wrb/documents/samples/sample_checkbox.rb +18 -0
  221. data/lib/wrb/documents/samples/sample_combobox.rb +18 -0
  222. data/lib/wrb/documents/samples/sample_comboboxex.rb +23 -0
  223. data/lib/wrb/documents/samples/sample_datetimepicker.rb +11 -0
  224. data/lib/wrb/documents/samples/sample_edit.rb +25 -0
  225. data/lib/wrb/documents/samples/sample_groupbox.rb +19 -0
  226. data/lib/wrb/documents/samples/sample_hotkeyctrl.rb +12 -0
  227. data/lib/wrb/documents/samples/sample_listbox.rb +12 -0
  228. data/lib/wrb/documents/samples/sample_listview.rb +32 -0
  229. data/lib/wrb/documents/samples/sample_menu.rb +21 -0
  230. data/lib/wrb/documents/samples/sample_menubar.rb +23 -0
  231. data/lib/wrb/documents/samples/sample_monthcalender.rb +11 -0
  232. data/lib/wrb/documents/samples/sample_progressbar.rb +14 -0
  233. data/lib/wrb/documents/samples/sample_radiobutton.rb +14 -0
  234. data/lib/wrb/documents/samples/sample_rebar.rb +25 -0
  235. data/lib/wrb/documents/samples/sample_richedit.rb +60 -0
  236. data/lib/wrb/documents/samples/sample_splitter.rb +33 -0
  237. data/lib/wrb/documents/samples/sample_static.rb +15 -0
  238. data/lib/wrb/documents/samples/sample_statusbar.rb +17 -0
  239. data/lib/wrb/documents/samples/sample_tabctrl.rb +19 -0
  240. data/lib/wrb/documents/samples/sample_toolbar.rb +29 -0
  241. data/lib/wrb/documents/samples/sample_tooltip.rb +50 -0
  242. data/lib/wrb/documents/samples/sample_trackbar.rb +30 -0
  243. data/lib/wrb/documents/samples/sample_treeview.rb +19 -0
  244. data/lib/wrb/documents/samples/sample_updown.rb +18 -0
  245. data/lib/wrb/documents/samples/sampleimg16.iml +0 -0
  246. data/lib/wrb/documents/samples/sampleimg32.iml +0 -0
  247. data/lib/wrb/documents/samples/samplemg16.png +0 -0
  248. data/lib/wrb/documents/samples/samplemg32.png +0 -0
  249. data/lib/wrb/documents/samples/wrb.ico +0 -0
  250. data/lib/wrb/documents/savefilenamedlg.html +19 -0
  251. data/lib/wrb/documents/scrollbar.html +60 -0
  252. data/lib/wrb/documents/splitter.html +96 -0
  253. data/lib/wrb/documents/static.html +84 -0
  254. data/lib/wrb/documents/statusbar.html +110 -0
  255. data/lib/wrb/documents/tabctrl.html +151 -0
  256. data/lib/wrb/documents/timer.html +43 -0
  257. data/lib/wrb/documents/toolbar.html +181 -0
  258. data/lib/wrb/documents/tooltip.html +131 -0
  259. data/lib/wrb/documents/trackbar.html +107 -0
  260. data/lib/wrb/documents/treeview.html +210 -0
  261. data/lib/wrb/documents/updown.html +85 -0
  262. data/lib/wrb/documents/wincontrol.html +258 -0
  263. data/lib/wrb/documents/window.html +499 -0
  264. data/lib/wrb/documents/wrb.css +228 -0
  265. data/lib/wrb/gmem.rb +26 -0
  266. data/lib/wrb/imecommon.rb +59 -0
  267. data/lib/wrb/listcommon.rb +185 -0
  268. data/lib/wrb/lzss.rb +126 -0
  269. data/lib/wrb/scrollinfo.rb +142 -0
  270. data/lib/wrb/toplevelcommon.rb +634 -0
  271. metadata +315 -0
@@ -0,0 +1,198 @@
1
+ require 'wrb'
2
+ require 'wrb/commctrlconst'
3
+
4
+ module WR
5
+ module RC
6
+ UD_MAXVAL = 0x7fff
7
+ UD_MINVAL = -UD_MAXVAL
8
+
9
+ UDS_WRAP = 0x1
10
+ UDS_SETBUDDYINT = 0x2
11
+ UDS_ALIGNRIGHT = 0x4
12
+ UDS_ALIGNLEFT = 0x8
13
+ UDS_AUTOBUDDY = 0x10
14
+ UDS_ARROWKEYS = 0x20
15
+ UDS_HORZ = 0x40
16
+ UDS_NOTHOUSANDS = 0x80
17
+ UDS_HOTTRACK = 0x100
18
+
19
+ UDM_SETRANGE = WM_USER+101
20
+ UDM_GETRANGE = WM_USER+102
21
+ UDM_SETPOS = WM_USER+103
22
+ UDM_GETPOS = WM_USER+104
23
+ UDM_SETBUDDY = WM_USER+105
24
+ UDM_GETBUDDY = WM_USER+106
25
+ UDM_SETACCEL = WM_USER+107
26
+ UDM_GETACCEL = WM_USER+108
27
+ UDM_SETBASE = WM_USER+109
28
+ UDM_GETBASE = WM_USER+110
29
+ UDM_SETRANGE32 = WM_USER+111
30
+ UDM_GETRANGE32 = WM_USER+112
31
+ UDM_SETPOS32 = WM_USER+113
32
+ UDM_GETPOS32 = WM_USER+114
33
+ UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
34
+ UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
35
+
36
+ UDN_FIRST = -721
37
+ UDN_DELTAPOS = UDN_FIRST-1
38
+ end
39
+
40
+ # A pair of arrow buttons that the user can click to increment or decrement a value, such as a number displayed in a buddy control.
41
+ # <br>See also <a href="https://docs.microsoft.com/en-us/windows/desktop/Controls/
42
+ # window-controls"> Windows Control section of Microsoft Docs.</a>
43
+ class Updown < WinControl
44
+ UDACCEL = API.defstruct "
45
+ UINT nSec;
46
+ UINT nInc;"
47
+
48
+ UDACCELS = API.defstruct "UDACCEL[]"
49
+
50
+ NMUPDOWN = API.defstruct "
51
+ NMHDR hdr;
52
+ int iPos;
53
+ int iDelta;"
54
+
55
+ module ModUpdownBuddy
56
+ attr_accessor :__updownbuddy__
57
+ def move(*args)
58
+ super
59
+ if @__updownbuddy__
60
+ if @__updownbuddy__.style&RC::UDS_ALIGNRIGHT>0
61
+ @__updownbuddy__.move(x+w, y, @__updownbuddy__.w, h)
62
+ elsif @__updownbuddy__.style&RC::UDS_ALIGNLEFT>0
63
+ @__updownbuddy__.move(x-@__updownbuddy__.w, y, @__updownbuddy__.w, h)
64
+ end
65
+ end
66
+ self
67
+ end
68
+ end
69
+
70
+ WinStyles = {
71
+ :wrap => UDS_WRAP,
72
+ :setbuddyint => UDS_SETBUDDYINT,
73
+ :alignright => UDS_ALIGNRIGHT,
74
+ :alignleft => UDS_ALIGNLEFT,
75
+ :autobuddy => UDS_AUTOBUDDY,
76
+ :arrowkeys => UDS_ARROWKEYS,
77
+ :horz => UDS_HORZ,
78
+ :nothousands => UDS_NOTHOUSANDS,
79
+ :hottrack => UDS_HOTTRACK
80
+ }
81
+ # def self.sym2style(*args) _sym2style(WinStyles, args); end
82
+
83
+ PreDefinedEvents = {
84
+ :releasedcapture => [WM_NOTIFY, NM_RELEASEDCAPTURE, 'xs', NMHDR],
85
+ :deltapos => [WM_NOTIFY, UDN_DELTAPOS, 'xs', NMUPDOWN]
86
+ }
87
+ DefaultEvents = [:deltapos]
88
+
89
+ def initialize(*args)
90
+ super
91
+ @_classname = "msctls_updown32"
92
+ @_acceptable_events = PreDefinedEvents.dup
93
+ end
94
+ #
95
+ def create()
96
+ super
97
+ self.accel =@_accel if @_accel
98
+ self.base = @_base if @_base
99
+ self.buddy = @_buddy if @_buddy
100
+ self.pos = @_pos if @_pos
101
+ self.range = @_range if @_range
102
+ if buddy
103
+ buddy.extend(ModUpdownBuddy)
104
+ buddy.__updownbuddy__ = self
105
+ end
106
+ end
107
+
108
+ # Retrieves acceleration information for this up-down control.
109
+ def accel()
110
+ if alive?
111
+ n = SendMessage(UDM_GETACCEL, 0, 0)
112
+ accels = UDACCELS[n]
113
+ SendMessage(UDM_GETACCEL, n, accels)
114
+ ar = []
115
+ n.times{|i|ar << accels[i].to_a}
116
+ ar
117
+ else
118
+ @_accel
119
+ end
120
+ end
121
+
122
+ # Sets the acceleration for an up-down control.<br>
123
+ # Give an array of [[nSec, nInc], ... ].<br>
124
+ # The nSec is an amount of elapsed time, and the nInc is a position to change accelaration.
125
+ def accel=(*args)
126
+ raise ArgumentError, "argument must be pair of [nSec, nInc]" unless args[0].is_a?(Array)
127
+ ar = args[0][0].is_a?(Array) ? args[0] : [args[0]]
128
+ n = ar.size
129
+ accels = UDACCELS[n]
130
+ n.times{|i| accels[i] = UDACCEL[*ar[i]]}
131
+ if alive?
132
+ SendMessage(UDM_SETACCEL, n, accels)
133
+ else
134
+ @_accel = args[0]
135
+ end
136
+ end
137
+
138
+ # Retrieves the current radix base (that is, either base 10 or 16) for this up-down control.
139
+ def base()
140
+ alive? ? SendMessage(UDM_GETBASE, 0, 0) : @_base
141
+ end
142
+ # Sets the radix base for this up-down control.
143
+ def base=(bs)
144
+ alive? ? SendMessage(UDM_SETBASE, bs, 0) : @_base = bs
145
+ end
146
+ alias radix base
147
+ alias radix= base=
148
+
149
+ # Retrieves crrent buddy window for this up-down control.
150
+ def buddy()
151
+ alive? ? APP.hwnd2ref(SendMessage(UDM_GETBUDDY, 0, 0)) : @_buddy
152
+ end
153
+
154
+ # Sets the buddy window for this up-down control.
155
+ def buddy=(win)
156
+ if alive?
157
+ if win
158
+ # win.create unless win.alive?
159
+ win.extend(ModUpdownBuddy)
160
+ win.__updownbuddy__ = self
161
+ SendMessage(UDM_SETBUDDY, win._hwnd, 0)
162
+ else
163
+ SendMessage(UDM_SETBUDDY, 0, 0)
164
+ end
165
+ else
166
+ @_buddy = win
167
+ end
168
+ end
169
+
170
+ # Retrieves the current position of this up-down control.
171
+ def pos()
172
+ alive? ? SendMessage(UDM_GETPOS, 0, 0) : @_pos
173
+ end
174
+ # Sets the current position for this up-down control.
175
+ def pos=(ps)
176
+ alive? ? SendMessage(UDM_SETPOS, 0, MAKELPARAM(ps, 0)) : @_pos = ps
177
+ end
178
+
179
+ # Retrieves the minimum and maximum positions (range) for this up-down control.
180
+ def range()
181
+ alive? ? SPLITPARAM(SendMessage(UDM_GETRANGE, 0, 0)) : @_range
182
+ end
183
+ # range=(low=0, hifgh)
184
+ # Sets the minimum and maximum positions (range) for this up-down control.
185
+ def range=(*args)
186
+ lo, hi = args[0].is_a?(Array) ? args[0] : [0, args[0]]
187
+ alive? ? SendMessage(UDM_SETRANGE, 0, MAKELPARAM(hi, lo)) : @_range = [lo, hi]
188
+ end
189
+
190
+ protected
191
+ def _apply_options(arg)
192
+ if st=WinStyles[arg]
193
+ self.style |= st
194
+ end
195
+ end
196
+
197
+ end
198
+ end
@@ -0,0 +1,241 @@
1
+ # Base class and common constants for DDEML
2
+
3
+ require 'wrb'
4
+
5
+ module WR
6
+ module RC
7
+ CF_TEXT = 1 unless defined? CF_TEXT
8
+ CF_OEMTEXT = 7 unless defined? CF_OEMTEXT
9
+ CF_HDROP = 15 unless defined? CF_HDROP
10
+
11
+ XST_NULL = 0
12
+ XST_INCOMPLETE = 1
13
+ XST_CONNECTED = 2
14
+ XST_INIT1 = 3
15
+ XST_INIT2 = 4
16
+ XST_REQSENT = 5
17
+ XST_DATARCVD = 6
18
+ XST_POKESENT = 7
19
+ XST_POKEACKRCVD = 8
20
+ XST_EXECSENT = 9
21
+ XST_EXECACKRCVD = 10
22
+ XST_ADVSENT = 11
23
+ XST_UNADVSENT = 12
24
+ XST_ADVACKRCVD = 13
25
+ XST_UNADVACKRCVD = 14
26
+ XST_ADVDATASENT = 15
27
+ XST_ADVDATAACKRCVD = 16
28
+
29
+ ST_CONNECTED = 0x0001
30
+ ST_ADVISE = 0x0002
31
+ ST_ISLOCAL = 0x0004
32
+ ST_BLOCKED = 0x0008
33
+ ST_CLIENT = 0x0010
34
+ ST_TERMINATED = 0x0020
35
+ ST_INLIST = 0x0040
36
+ ST_BLOCKNEXT = 0x0080
37
+ ST_ISSELF = 0x0100
38
+
39
+ # DDE constants for wStatus field
40
+ DDE_FACK = 0x8000
41
+ DDE_FBUSY = 0x4000
42
+ DDE_FDEFERUPD = 0x4000
43
+ DDE_FACKREQ = 0x8000
44
+ DDE_FRELEASE = 0x2000
45
+ DDE_FREQUESTED = 0x1000
46
+ DDE_FAPPSTATUS = 0x00ff
47
+ DDE_FNOTPROCESSED = 0x0000
48
+
49
+ DDE_FACKRESERVED = (DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS)
50
+ DDE_FADVRESERVED = (DDE_FACKREQ | DDE_FDEFERUPD)
51
+ DDE_FDATRESERVED = (DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED)
52
+ DDE_FPOKRESERVED = (DDE_FRELEASE)
53
+
54
+ # message filter hook types
55
+ MSGF_DDEMGR = 0x8001
56
+
57
+ # codepage constants
58
+ CP_WINANSI = 1004
59
+ CP_WINUNICODE = 1200
60
+
61
+ # transaction types
62
+ XTYPF_NOBLOCK = 0x0002
63
+ XTYPF_NODATA = 0x0004
64
+ XTYPF_ACKREQ = 0x0008
65
+
66
+ XCLASS_MASK = 0xFC00
67
+ XCLASS_BOOL = 0x1000
68
+ XCLASS_DATA = 0x2000
69
+ XCLASS_FLAGS = 0x4000
70
+ XCLASS_NOTIFICATION = 0x8000
71
+ XTYP_ERROR = 0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK
72
+ XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS
73
+ XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK
74
+ XTYP_ADVSTART = 0x0030 | XCLASS_BOOL
75
+ XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION
76
+ XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS
77
+ XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK
78
+ XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK
79
+ XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION
80
+ XTYP_POKE = 0x0090 | XCLASS_FLAGS
81
+ XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK
82
+ XTYP_REQUEST = 0x00B0 | XCLASS_DATA
83
+ XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK
84
+ XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK
85
+ XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK
86
+
87
+ XTYP_MASK = 0x00F0
88
+ XTYP_SHIFT = 4
89
+
90
+ # Timeout constants
91
+ TIMEOUT_ASYNC = 0xFFFFFFFF
92
+
93
+ # Transaction ID constants
94
+ QID_SYNC = 0xFFFFFFFF
95
+
96
+ CBF_FAIL_SELFCONNECTIONS = 0x00001000
97
+ CBF_FAIL_CONNECTIONS = 0x00002000
98
+ CBF_FAIL_ADVISES = 0x00004000
99
+ CBF_FAIL_EXECUTES = 0x00008000
100
+ CBF_FAIL_POKES = 0x00010000
101
+ CBF_FAIL_REQUESTS = 0x00020000
102
+ CBF_FAIL_ALLSVRXACTIONS = 0x0003f000
103
+
104
+ CBF_SKIP_CONNECT_CONFIRMS = 0x00040000
105
+ CBF_SKIP_REGISTRATIONS = 0x00080000
106
+ CBF_SKIP_UNREGISTRATIONS = 0x00100000
107
+ CBF_SKIP_DISCONNECTS = 0x00200000
108
+ CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000
109
+
110
+ SZDDESYS_TOPIC = "System"
111
+ SZDDESYS_ITEM_TOPICS = "Topics"
112
+ SZDDESYS_ITEM_SYSITEMS = "SysItems"
113
+ SZDDESYS_ITEM_RTNMSG = "ReturnMessage"
114
+ SZDDESYS_ITEM_STATUS = "Status"
115
+ SZDDESYS_ITEM_FORMATS = "Formats"
116
+ SZDDESYS_ITEM_HELP = "Help"
117
+ SZDDE_ITEM_ITEMLIST = "TopicItemList"
118
+
119
+ # Application command flags
120
+ APPCMD_CLIENTONLY = 0x00000010
121
+ APPCMD_FILTERINITS = 0x00000020
122
+ APPCMD_MASK = 0x00000FF0
123
+
124
+ # Application classification flags
125
+ APPCLASS_STANDARD = 0x00000000
126
+ APPCLASS_MASK = 0x0000000F
127
+
128
+ # Name service
129
+ DNS_REGISTER = 0x0001
130
+ DNS_UNREGISTER = 0x0002
131
+ DNS_FILTERON = 0x0004
132
+ DNS_FILTEROFF = 0x0008
133
+
134
+ DMLERR_NO_ERROR = 0
135
+
136
+ DMLERR_ADVACKTIMEOUT =0x4000
137
+ DMLERR_BUSY = 0x4001
138
+ DMLERR_DATAACKTIMEOUT = 0x4002
139
+ DMLERR_DLL_NOT_INITIALIZED = 0x4003
140
+ DMLERR_DLL_USAGE = 0x4004
141
+ DMLERR_EXECACKTIMEOUT = 0x4005
142
+ DMLERR_INVALIDPARAMETER = 0x4006
143
+ DMLERR_LOW_MEMORY = 0x4007
144
+ DMLERR_MEMORY_ERROR = 0x4008
145
+ DMLERR_NOTPROCESSED = 0x4009
146
+ DMLERR_NO_CONV_ESTABLISHED = 0x400a
147
+ DMLERR_POKEACKTIMEOUT = 0x400b
148
+ DMLERR_POSTMSG_FAILED = 0x400c
149
+ DMLERR_REENTRANCY = 0x400d
150
+ DMLERR_SERVER_DIED = 0x400e
151
+ DMLERR_SYS_ERROR = 0x400f
152
+ DMLERR_UNADVACKTIMEOUT = 0x4010
153
+ DMLERR_UNFOUND_QUEUE_ID = 0x4011
154
+ end
155
+
156
+ class DDEML
157
+
158
+ API.defun 'DdeInitialize(LPDWORD pidInst, PFNCALLBACK pfnCallback, DWORD afCmd,
159
+ DWORD ulRes)'
160
+ API.defun 'DdeUninitialize(DWORD idInst)'
161
+ API.defun 'DdeConnectList(DWORD idInst, HSZ hszService, HSZ hszTopic,
162
+ HCONVLIST hConvList, PCONVCONTEXT pCC)'
163
+ API.defun 'DdeQueryNextServer(HCONVLIST hConvList, HCONV hConvPrev)'
164
+ API.defun 'DdeDisconnectList(HCONVLIST hConvList)'
165
+ API.defun 'DdeConnect(DWORD idInst, HSZ hszService, HSZ hszTopic, PCONVCONTEXT pCC)'
166
+ API.defun 'DdeDisconnect(HCONV hConv)'
167
+ API.defun 'DdeReconnect(HCONV hConv)'
168
+ API.defun 'DdeQueryConvInfo(HCONV hConv, DWORD idTransaction, PCONVINFO pConvInfo)'
169
+ API.defun 'DdeSetUserHandle(HCONV hConv,DWORD id,DWORD_PTR hUser)'
170
+ API.defun 'DdeAbandonTransaction(DWORD idInst, HCONV hConv,DWORD idTransaction)'
171
+ API.defun 'DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem)'
172
+ API.defun 'DdeEnableCallback(DWORD idInst, HCONV hConv, UINT wCmd)'
173
+ API.defun 'DdeImpersonateClient(HCONV hConv)'
174
+ API.defun 'DdeNameService(DWORD idInst, HSZ hsz1, HSZ hsz2, UINT afCmd)'
175
+ API.defun 'DdeClientTransaction(LPBYTE pData, DWORD cbData, HCONV hConv, HSZ hszItem,
176
+ UINT wFmt, UINT wType, DWORD dwTimeout, LPDWORD pdwResult)'
177
+ API.defun 'DdeCreateDataHandle(DWORD idInst, LPBYTE pSrc, DWORD cb, DWORD cbOff,
178
+ HSZ hszItem, UINT wFmt, UINT afCmd)'
179
+ API.defun 'DdeAddData(HDDEDATA hData, LPBYTE pSrc, DWORD cb, DWORD cbOff)'
180
+ API.defun 'DdeGetData(HDDEDATA hData, LPBYTE pDst, DWORD cbMax, DWORD cbOff)'
181
+ API.defun 'DdeAccessData(HDDEDATA hData, LPDWORD pcbDataSize)'
182
+ API.defun 'DdeUnaccessData(HDDEDATA hData)'
183
+ API.defun 'DdeFreeDataHandle(HDDEDATA hData)'
184
+
185
+ API.defun 'DdeCreateStringHandle(DWORD idInst, LPCTSTR psz, int iCodePage)'
186
+ API.defun 'DdeQueryString(DWORD idInst, HSZ hsz, LPTSTR psz, DWORD cchMax, int iCodePage)'
187
+ API.defun 'DdeFreeStringHandle(DWORD idInst, HSZ hsz)'
188
+ API.defun 'DdeKeepStringHandle(DWORD idInst, HSZ hsz)'
189
+ API.defun 'DdeCmpStringHandles(HSZ hsz1, HSZ hsz2)'
190
+ API.defun 'DdeGetLastError(DWORD idInst)'
191
+
192
+ IDINST = API.defstruct 'int value'
193
+
194
+ DDEError={
195
+ 0x4003 => "not initialized",
196
+ 0x4004 => "illegal usage",
197
+ 0x4006 => "invalid parameter",
198
+ 0x400a => 'no conversation established'
199
+ }
200
+
201
+ include RC
202
+
203
+ def self.callback_finalizer(idinst, hservice, htopic)
204
+ proc{
205
+ API.DdeFreeStringHandle(idinst, hservice)
206
+ API.DdeFreeStringHandle(idinst, htopic)
207
+ API.DdeUninitialize(idinst)
208
+ }
209
+ end
210
+
211
+ def h2str(hsz)
212
+ ccMax = API.DdeQueryString(@_idinst, hsz, nil, 0, @_codepage) + 1
213
+ lpsz = @_codepage==CP_WINUNICODE ? API::WCHAR[ccMax] : CHAR[ccMax]
214
+ API.DdeQueryString(@_idinst, hsz, lpsz, ccMax, @_codepage)
215
+ lpsz.to_s
216
+ end
217
+ def str2h(str)
218
+ API.DdeCreateStringHandle(@_idinst, str.to_s, @_codepage)
219
+ end
220
+ def freestrhandle(hstr)
221
+ API.DdeFreeStringHandle(@_idinst, hstr)
222
+ end
223
+
224
+ def h2data(hdata)
225
+ sdata = API.DdeGetData(hdata, nil, 0, 0)
226
+ lpbDest = API::BYTE[sdata]
227
+ API.DdeGetData(hdata, lpbDest, sdata, 0)
228
+ lpbDest.to_s
229
+ end
230
+
231
+ def data2h(hitem, data)
232
+ data.force_encoding(Encoding::ASCII_8BIT) if data.is_a?(String)
233
+ API.DdeCreateDataHandle(@_idinst, data, data.bytesize, 0, hitem, CF_TEXT, 0)
234
+ end
235
+
236
+ def freedatahandle(hdata)
237
+ API.DdeFreeDataHandle(hdata)
238
+ end
239
+ end
240
+ end
241
+
@@ -0,0 +1,46 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html lang="en">
3
+ <head>
4
+ <meta content="text/html; charset=utf-8" http-equiv="content-type">
5
+ <title>Animate</title>
6
+ <link href="wrb.css" type="text/css" rel="stylesheet">
7
+ <link rel="shortcut icon" href="favicon.png">
8
+ </head>
9
+ <body>
10
+ <h3> Animate &lt; <a href="wincontrol.html">WinControl</a> <span class=gohome> <a href="index.html">Home </a></span></h3>
11
+ <p>A window that displays an AVI clip (Animation).
12
+ <br>See also <a href="https://docs.microsoft.com/en-us/windows/desktop/Controls/
13
+ window-controls"> Windows Control section of Microsoft Docs.</a>
14
+ </p>
15
+ <h4> Instance methods </h4>
16
+ <dl>
17
+ <dt><code>open(path)</code></dt>
18
+ <dd>Opens an <i>path</i> of AVI clip and displays its first frame in this.</dd>
19
+ <dt><code>play(times, from=0, to=-1)</code></dt>
20
+ <dd>Plays an AVI clip in athis.</dd>
21
+ <dt><code>playing?()</code></dt>
22
+ <dd>Retreives whether an AVI clip is playing. Returns true/false.</dd>
23
+ <dt><code>stop()</code></dt>
24
+ <dd>Stops playing an AVI clip in this</dd>
25
+ </dl>
26
+ <h4> Animate styles <span class=spl>( both the symbols and the integers can be used )</span></h4>
27
+ <p></p>
28
+ <table>
29
+ <tr><th>Symbol</th><th>Integer value</th><th>Symbol</th><th>Integer value</th></tr>
30
+ <tr><td class=name1><code>:autoplay</code></td><td class=type><code>ACS_AUTOPLAY</code></td><td class=name1><code>:timer</code></td><td class=type><code>ACS_TIMER</code></td></tr>
31
+ <tr><td class=name1><code>:transparent</code></td><td class=type><code>ACS_TRANSPARENT</code></td></tr>
32
+ </table>
33
+ <h4> Pre-defined events <span class=spl> ( can be added by `events=` method )</span></h4>
34
+ <p></p>
35
+ <table>
36
+ <tr><th width=20%>Symbol</th><th width=20%>Notification code</th><th>Definition <span class=spl>( `???' is name of the control )</span></th></tr>
37
+ <tr><td class=name1><code>:start</code></td><td class=type><code>ACN_START</code></td><td class=desc><code>???_start(idcmd, code, hwnd)</code></td></code></tr>
38
+ <tr><td class=name1><code>:stop</code></td><td class=type><code>ACN_STOP</code></td><td class=desc><code>???_stop(idcmd, code, hwnd)</code></td></code></tr>
39
+ </table>
40
+ <h4> Default events <span class=spl>( can be defined without using `events=' method )</h4>
41
+ <p>(No default events)</p>
42
+ <dl>
43
+ </dl>
44
+
45
+ </body>
46
+ </html>