wrb 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>