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,77 @@
1
+ # Common constants and methods between Combobox and ComboboxEx
2
+
3
+ require 'wrb'
4
+ module WR::RC
5
+
6
+ CBS_SIMPLE = 0x0001
7
+ CBS_DROPDOWN = 0x0002
8
+ CBS_DROPDOWNLIST = 0x0003
9
+
10
+ CB_LIMITTEXT = 0x0141
11
+ CB_DELETESTRING = 0x0144
12
+ CB_GETCOUNT = 0x0146
13
+ CB_GETCURSEL = 0x0147
14
+ CB_GETLBTEXT = 0x0148
15
+ CB_GETLBTEXTLEN = 0x0149
16
+ CB_RESETCONTENT = 0x014b
17
+ CB_SETCURSEL = 0x014e
18
+ CB_SHOWDROPDOWN = 0x014f
19
+ CB_GETITEMDATA = 0x0150
20
+ CB_SETITEMDATA = 0x0151
21
+ CB_GETDROPPEDCONTROLRECT = 0x0152
22
+ CB_SETITEMHEIGHT = 0x0153
23
+ CB_GETITEMHEIGHT = 0x0154
24
+ CB_SETEXTENDEDUI = 0x0155
25
+ CB_GETEXTENDEDUI = 0x0156
26
+ CB_GETDROPPEDSTATE = 0x0157
27
+ CB_FINDSTRINGEXACT = 0x0158
28
+ CB_GETDROPPEDWIDTH = 0x015f
29
+ CB_SETDROPPEDWIDTH = 0x0160
30
+
31
+ CBN_SELCHANGE = 0x01
32
+ CBN_DBLCLK = 0x02
33
+ CBN_SETFOCUS = 0x03
34
+ CBN_KILLFOCUS = 0x04
35
+ CBN_EDITCHANGE = 0x05
36
+ CBN_EDITUPDATE = 0x06
37
+ CBN_DROPDOWN = 0x07
38
+ CBN_CLOSEUP = 0x08
39
+ CBN_SELENDOK = 0x09
40
+ CBN_SELENDCANCEL = 0x0a
41
+
42
+ module ModComboCommon
43
+ def h=(ht)
44
+ @_droppedheight = ht if ht > self.h
45
+ super
46
+ end
47
+
48
+ def droppedheight()
49
+ @_droppedheight
50
+ end
51
+ def droppedheight=(h)
52
+ self.h = @_droppedheight = h
53
+ end
54
+
55
+ def droppedsize()
56
+ if alive?
57
+ rc = RECT.new
58
+ SendMessage(CB_GETDROPPEDCONTROLRECT, 0, rc)
59
+ [rc.right-rc.left, rc.bottom-rc.top]
60
+ else
61
+ [@_droppedwidth, @_droppedheight]
62
+ end
63
+ end
64
+
65
+ def resize(w, h)
66
+ @_droppedheight = h if h > self.h
67
+ super
68
+ end
69
+
70
+ def move(*args)
71
+ ht = args[3]
72
+ super
73
+ @_droppedheight = ht if ht && ht > self.h
74
+ self
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,139 @@
1
+ # Common module and constants for common controls
2
+
3
+ require 'wrb'
4
+ module WR
5
+ module RC
6
+ ICC_LISTVIEW_CLASSES = 0x1
7
+ ICC_TREEVIEW_CLASSES = 0x2
8
+ ICC_BAR_CLASSES = 0x4
9
+ ICC_TAB_CLASSES = 0x8
10
+ ICC_UPDOWN_CLASS = 0x10
11
+ ICC_PROGRESS_CLASS = 0x20
12
+ ICC_HOTKEY_CLASS = 0x40
13
+ ICC_ANIMATE_CLASS = 0x80
14
+ ICC_WIN95_CLASSES = 0xff
15
+ ICC_DATE_CLASSES = 0x100
16
+ ICC_USEREX_CLASSES = 0x200
17
+ ICC_COOL_CLASSES = 0x400
18
+ ICC_INTERNET_CLASSES = 0x800
19
+ ICC_PAGESCROLLER_CLASS = 0x1000
20
+ ICC_NATIVEFNTCTL_CLASS = 0x2000
21
+ ICC_STANDARD_CLASSES = 0x4000
22
+ ICC_LINK_CLASS = 0x8000
23
+
24
+ CCS_TOP = 0x1
25
+ CCS_NOMOVEY = 0x2
26
+ CCS_BOTTOM = 0x3
27
+ CCS_NORESIZE = 0x4
28
+ CCS_NOPARENTALIGN = 0x8
29
+ CCS_ADJUSTABLE = 0x20
30
+ CCS_NODIVIDER = 0x40
31
+ CCS_VERT = 0x80
32
+ CCS_LEFT = CCS_VERT | CCS_TOP
33
+ CCS_RIGHT = CCS_VERT | CCS_BOTTOM
34
+ CCS_NOMOVEX = CCS_VERT | CCS_NOMOVEY
35
+
36
+ CCM_FIRST = 0x2000
37
+ CCM_SETBKCOLOR = CCM_FIRST+0x1
38
+ CCM_SETCOLORSCHEME = CCM_FIRST+0x2
39
+ CCM_GETCOLORSCHEME = CCM_FIRST+0x3
40
+ CCM_GETDROPTARGET = CCM_FIRST+0x4
41
+ CCM_SETUNICODEFORMAT = CCM_FIRST+0x5
42
+ CCM_GETUNICODEFORMAT = CCM_FIRST+0x6
43
+ CCM_SETVERSION = CCM_FIRST+0x7
44
+ CCM_GETVERSION = CCM_FIRST+0x8
45
+ CCM_SETNOTIFYWINDOW = CCM_FIRST+0x9
46
+ CCM_SETWINDOWTHEME = CCM_FIRST+0xb
47
+ CCM_DPISCALE = CCM_FIRST+0xc
48
+
49
+ NM_FIRST = 0
50
+ NM_CLICK = NM_FIRST-2
51
+ NM_DBLCLK = NM_FIRST-3
52
+ NM_RETURN = NM_FIRST-4
53
+ NM_RCLICK = NM_FIRST-5
54
+ NM_RDBLCLK = NM_FIRST-6
55
+ NM_SETFOCUS = NM_FIRST-7
56
+ NM_KILLFOCUS = NM_FIRST-8
57
+ NM_CUSTOMDRAW = NM_FIRST-12
58
+ NM_HOVER = NM_FIRST-13
59
+ NM_NCHITTEST = NM_FIRST-14
60
+ NM_KEYDOWN = NM_FIRST-15
61
+ NM_RELEASEDCAPTURE = NM_FIRST-16
62
+ NM_SETCURSOR = NM_FIRST-17
63
+ NM_CHAR = NM_FIRST-18
64
+ NM_TOOLTIPSCREATED = NM_FIRST-19
65
+ NM_LDOWN = NM_FIRST-20
66
+ NM_RDOWN = NM_FIRST-21
67
+ NM_THEMECHANGED = NM_FIRST-22
68
+
69
+ I_IMAGECALLBACK = -1
70
+ I_IMAGENONE = -2
71
+ end
72
+
73
+ module ModCommCtrl
74
+ include RC
75
+ INITCOMMONCONTROLSEX = API.defstruct 'DWORD dwSize', 'DWORD dwICC'
76
+ API.loadlib "comctl32.dll"
77
+ API.defun "InitCommonControlsEx(INITCOMMONCONTROLSEX *lpInitCtrls)"
78
+ API.initCommonControlsEx(INITCOMMONCONTROLSEX[INITCOMMONCONTROLSEX::Size, 0x7ff])
79
+
80
+ NMHDR = API.defstruct '
81
+ HWND hwndFrom;
82
+ INT idFrom;
83
+ INT code;' unless defined? NMHDR
84
+
85
+ NMTOOLTIPSCREATED = API.defstruct "
86
+ NMHDR hdr;
87
+ HWND hwndToolTips;"
88
+
89
+ NMMOUSE = API.defstruct "
90
+ NMHDR hdr;
91
+ DWORD dwItemSpec;
92
+ DWORD dwItemData;
93
+ POINT pt;
94
+ LPARAM dwHitInfo;"
95
+
96
+ NMKEY = API.defstruct "
97
+ NMHDR hdr;
98
+ UINT nVKey;
99
+ UINT uFlags;"
100
+
101
+ NMCHAR = API.defstruct "
102
+ NMHDR hdr;
103
+ UINT ch;
104
+ DWORD dwItemPrev;
105
+ DWORD dwItemNext;"
106
+
107
+ NMTTDISPINFO = API.defstruct "
108
+ NMHDR hdr;
109
+ LPTSTR lpszText;
110
+ TCHAR szText[80];
111
+ HINSTANCE hinst;
112
+ UINT uFlags;
113
+ LPARAM lParam;"
114
+ TOOLTIPTEXT = NMTTDISPINFO
115
+
116
+ NMCUSTOMDRAW = API.defstruct "
117
+ NMHDR hdr;
118
+ DWORD dwDrawStage;
119
+ HDC hdc;
120
+ RECT rc;
121
+ DWORD dwItemSpec;
122
+ UINT uItemState;
123
+ LPARAM lItemlParam;"
124
+
125
+ CCStyles ={
126
+ :top => CCS_TOP,
127
+ :nomovey => CCS_NOMOVEY,
128
+ :bottom => CCS_BOTTOM,
129
+ :noresize => CCS_NORESIZE,
130
+ :noparentalign => CCS_NOPARENTALIGN,
131
+ :adjustable => CCS_ADJUSTABLE,
132
+ :nodivider => CCS_NODIVIDER,
133
+ :vert => CCS_VERT,
134
+ # :left => CCS_LEFT,
135
+ # :right => CCS_RIGHT,
136
+ # :nomovex => CCS_NOMOVEX
137
+ }
138
+ end
139
+ end
@@ -0,0 +1,77 @@
1
+ # Base class and constants for Common Dialog
2
+
3
+ require 'rwin'
4
+
5
+ module WR
6
+ module RC
7
+ CDERR_DIALOGFAILURE = 0xFFFF
8
+
9
+ CDERR_GENERALCODES = 0x0000
10
+ CDERR_STRUCTSIZE = 0x0001
11
+ CDERR_INITIALIZATION = 0x0002
12
+ CDERR_NOTEMPLATE = 0x0003
13
+ CDERR_NOHINSTANCE = 0x0004
14
+ CDERR_LOADSTRFAILURE = 0x0005
15
+ CDERR_FINDRESFAILURE = 0x0006
16
+ CDERR_LOADRESFAILURE = 0x0007
17
+ CDERR_LOCKRESFAILURE = 0x0008
18
+ CDERR_MEMALLOCFAILURE = 0x0009
19
+ CDERR_MEMLOCKFAILURE = 0x000A
20
+ CDERR_NOHOOK = 0x000B
21
+ CDERR_REGISTERMSGFAIL = 0x000C
22
+
23
+ PDERR_PRINTERCODES = 0x1000
24
+ PDERR_SETUPFAILURE = 0x1001
25
+ PDERR_PARSEFAILURE = 0x1002
26
+ PDERR_RETDEFFAILURE = 0x1003
27
+ PDERR_LOADDRVFAILURE = 0x1004
28
+ PDERR_GETDEVMODEFAIL = 0x1005
29
+ PDERR_INITFAILURE = 0x1006
30
+ PDERR_NODEVICES = 0x1007
31
+ PDERR_NODEFAULTPRN = 0x1008
32
+ PDERR_DNDMMISMATCH = 0x1009
33
+ PDERR_CREATEICFAILURE = 0x100A
34
+ PDERR_PRINTERNOTFOUND = 0x100B
35
+ PDERR_DEFAULTDIFFERENT = 0x100C
36
+
37
+ CFERR_CHOOSEFONTCODES = 0x2000
38
+ CFERR_NOFONTS = 0x2001
39
+ CFERR_MAXLESSTHANMIN = 0x2002
40
+
41
+ FNERR_FILENAMECODES = 0x3000
42
+ FNERR_SUBCLASSFAILURE = 0x3001
43
+ FNERR_INVALIDFILENAME = 0x3002
44
+ FNERR_BUFFERTOOSMALL = 0x3003
45
+
46
+ FRERR_FINDREPLACECODES = 0x4000
47
+ FRERR_BUFFERLENGTHZERO = 0x4001
48
+
49
+ CCERR_CHOOSECOLORCODES = 0x5000
50
+ end
51
+
52
+ class CommonDialog
53
+ include RWin, RC
54
+
55
+ API.typealias 'HGLOBAL', 'Q'
56
+ API.typealias 'LPPAGESETUPHOOK', 'Q'
57
+ API.typealias 'LPPAGEPAINTHOOK', 'Q'
58
+ PAGESETUPDLG = API.defstruct "
59
+ DWORD lStructSize;
60
+ HWND hwndOwner;
61
+ HGLOBAL hDevMode;
62
+ HGLOBAL hDevNames;
63
+ DWORD Flags;
64
+ POINT ptPaperSize;
65
+ RECT rtMinMargin;
66
+ RECT rtMargin;
67
+ HINSTANCE hInstance;
68
+ LPARAM lCustData;
69
+ LPPAGESETUPHOOK lpfnPageSetupHook;
70
+ LPPAGEPAINTHOOK lpfnPagePaintHook;
71
+ LPCTSTR lpPageSetupTemplateName;
72
+ HGLOBAL hPageSetupTemplate;"
73
+
74
+ API.loadlib 'comdlg32'
75
+ API.defun 'CommDlgExtendedError()'
76
+ end
77
+ end
@@ -0,0 +1,114 @@
1
+ require 'wrb'
2
+
3
+ module WR
4
+ module RC
5
+ ACS_TRANSPARENT = 0x2
6
+ ACS_AUTOPLAY = 0x4
7
+ ACS_TIMER = 0x8
8
+
9
+ ACM_OPENA = WM_USER+100
10
+ ACM_OPENW = WM_USER+103
11
+ ACM_PLAY = WM_USER+101
12
+ ACM_STOP = WM_USER+102
13
+ ACM_ISPLAYING = WM_USER+104
14
+ if UNICODE
15
+ ACM_OPEN = ACM_OPENW
16
+ else
17
+ ACM_OPEN = ACM_OPENA
18
+ end
19
+
20
+ ACN_START = 1
21
+ ACN_STOP = 2
22
+ end
23
+
24
+ # A window that displays an AVI clip (Animation).
25
+ # <br>See also <a href="https://docs.microsoft.com/en-us/windows/desktop/Controls/
26
+ # window-controls"> Windows Control section of Microsoft Docs.</a>
27
+ class Animate < WinControl
28
+ include ModStdCtrl
29
+
30
+ WinStyles = {
31
+ :transparent => ACS_TRANSPARENT,
32
+ :autoplay => ACS_AUTOPLAY,
33
+ :timer => ACS_TIMER
34
+ }
35
+
36
+ PreDefinedEvents = {
37
+ :start => [WM_COMMAND, ACN_START, 'hi'],
38
+ :stop => [WM_COMMAND, ACN_STOP, 'hi']
39
+ }
40
+
41
+ # (No default events)
42
+ DefaultEvents = []
43
+
44
+ def initialize(*args)
45
+ super
46
+ @_classname = "SysAnimate32"
47
+ @_acceptable_events = PreDefinedEvents.dup
48
+ end
49
+
50
+ # Opens an <i>path</i> of AVI clip and displays its first frame in this.
51
+ def open(path)
52
+ path.tr!('/', '\\')
53
+ if SendMessage(ACM_OPEN, 0, path) == 0
54
+ raise "open was failed"
55
+ end
56
+ true
57
+ end
58
+
59
+ # Plays an AVI clip in athis.
60
+ def play(times, from=0, to=-1)
61
+ SendMessage(ACM_PLAY, times, MAKELPARAM(from, to))
62
+ end
63
+
64
+ # Stops playing an AVI clip in this
65
+ def stop()
66
+ SendMessage(ACM_STOP, 0, 0)
67
+ end
68
+
69
+ # Retreives whether an AVI clip is playing. Returns true/false.
70
+ def playing?() # only for visual style
71
+ SendMessage(ACM_ISPLAYING, 0, 0)==0 ? false : true
72
+ end
73
+
74
+ protected
75
+ def _apply_options(arg)
76
+ if st=WinStyles[arg]
77
+ @_style |= st
78
+ return nil
79
+ end
80
+ super
81
+ end
82
+ end
83
+ end
84
+
85
+ module WR
86
+ class MyForm < Form
87
+ def initialize()
88
+ _ << Button[:btn1, 'Open', 0, 0, 80, 24]
89
+ _ << Button[:btn2, 'Play', 80, 0, 80, 24]
90
+ _ << Button[:btn3, 'Stop', 160, 0, 80, 24]
91
+ _ << Button[:btn4, 'Playing', 240, 0, 80, 24]
92
+ _ << Animate[:anm1, 0, 30, 300, 240, :transparent, :events=>[:start, :stop]]
93
+ end
94
+
95
+ def btn1_clicked(*)
96
+ dpp _anm1.open('../resources/round.avi')
97
+ end
98
+ def btn2_clicked(*)
99
+ _.anm1.play(-1, 1)
100
+ end
101
+ def btn3_clicked(*)
102
+ _.anm1.stop()
103
+ end
104
+ def btn4_clicked(*)
105
+ dpp _.anm1.playing?()
106
+ end
107
+ def anm1_start(*)
108
+ dpp 'start!'
109
+ end
110
+
111
+ self.start
112
+ end
113
+ end if __FILE__==$0
114
+
@@ -0,0 +1,116 @@
1
+ require 'wrb/lzss'
2
+ module WR
3
+ require_relative './picture.rb' unless defined? Picture
4
+ require_relative './canvas.rb' unless defined? Canvas
5
+
6
+ # A memory-image which consists of the pixel data for a graphics image and its attributes.
7
+ # <br>See also <a href="https://docs.microsoft.com/en-us/windows/desktop/gdi/windows-gdi">
8
+ # GDI section of Microsft Docs</a>
9
+ class Bitmap < RWin::Bitmap
10
+
11
+ =begin
12
+ self.new(name=nil, width, height, initalcolor=nil)
13
+ Creates empty bitmap with the specified arguments.<br>
14
+ If <i>initialcolor</i> is given, this bitmap will be filled with it.<br>
15
+ `name' is for adding on the toplevel window, give a Symbol if needed.
16
+
17
+ following methods are defined at the super class.
18
+ :singleton methods
19
+ self._load(str)
20
+ Loads from a string. Give a String as <i>str</i>.
21
+ self.fromfile(path)
22
+ Loads from a bitmap file. Give a String as <i>path</i> to bitmap file.
23
+ self.fromhandle(hbitmap)
24
+ Creates new Bitmap object from handle of another bitmap.<br>
25
+ Give an 32/64 bits integer as <i>hbitmap</i>.
26
+ self.frompicture(pic, background)
27
+ Creates new Bitmap object from a Pcture object.<br>
28
+ Give a Picture object as <i>pic</i>, an RGB integer as <i>background</i> color.
29
+ self.monochrome(newwidth, newhight)
30
+ Creates new monochrome Bitmap object from self.<br>
31
+ Give two integers as <i>newwidth</i> and <i>newheight</i>.
32
+
33
+ :instance methods
34
+ GetPixel(x, y)
35
+ Retrieves the RGB color value of the pixel at the specified coordinates.<br>
36
+ Give two integers as <i>x</i> and <i>y</i>. Returns an integer as RGB color.
37
+ SetPixel(x, y, color)
38
+ Sets the pixel at the specified coordinates to the specified color.<br>
39
+ Give two integers as <i>x</i>, <i>y</i> and a integer as RGB <i>color</i>.
40
+ _dump()
41
+ Dumps self to a string for Marshal object.
42
+ _hbitmap()
43
+ Retrieves a bitmap handle of self. Returns 32/64 bits integer as it.
44
+ _hdc()
45
+ Retrieves a device context handle of self. Returns 32/64 bits integer as it.
46
+ _hddbitmap()
47
+ Retrieves a device dependent bitmap handle of self. Returns 32/64 bits integer as it.
48
+ depth()
49
+ Gets color depth of self. Retruns an integer of one of 1, 4, 8, 16, 24 and 32.
50
+ dispose()
51
+ Disposes self from resource table and sets hbitmap to 0. Returns true/false.
52
+ draw(){|cv| ...}
53
+ Draws on this bitmap if block given. Argument <i>cv</i> will be given as a Canvas object.
54
+ height()
55
+ Gets a height of this bitmap. Returns an integer.
56
+ width()
57
+ Gets a width of this bitmap. Returns an integer.
58
+ =end
59
+
60
+ # include ModUtil
61
+ include RC
62
+
63
+ # Loads from a image file. Give a String as path to image file.
64
+ def self.fromfile(path)
65
+ if open(path, 'rb'){|f| f.read(2)} == "BM"
66
+ super
67
+ else
68
+ self.frompicture(Picture.fromfile(path))
69
+ end
70
+ end
71
+
72
+ # Converts self to a Picture object.
73
+ def to_picture()
74
+ Picture._load(self._dump)
75
+ end
76
+
77
+ # Converts self to a 24 bit Bitmap objct.
78
+ def to_24()
79
+ Bitmap._load(self._dump(24))
80
+ end
81
+
82
+ def to_mask_core(rop, maskcolor)
83
+ bm24 = self.to_24
84
+ maskcolor ||= bm24.GetPixel(0, 0)
85
+ bmm = Bitmap.monochrome(bm24.width, bm24.height)
86
+ bmm.draw{|cm|
87
+ bm24.draw{|cv| cv.SetBkColor(maskcolor)}
88
+ cm.BitBlt(0, 0, bm24, rop)
89
+ }
90
+ end
91
+ private :to_mask_core
92
+
93
+ # Creates a new monochrome bitmap for mask image. <br>
94
+ # Give an integer as RGB color for <i>maskcolor</i> which will be set to black and other clolors will be set to white.<br>
95
+ # If no maskcolor was given then color of (0, 0) position will be used as maskcolor.
96
+ def to_mask(maskcolor=nil)
97
+ to_mask_core(NOTSRCCOPY, maskcolor)
98
+ end
99
+
100
+ # Creates a reverse mask image from <i>to_mask()</i> method.
101
+ def to_imgmask(maskcolor=nil)
102
+ to_mask_core(SRCCOPY, maskcolor)
103
+ end
104
+
105
+ # Loads new bitmap object from a LZSS compressd string.
106
+ # Give a String as <i>str</i>.
107
+ def self.loadb64(str)
108
+ self._load(LZSS.expand(str.unpack('m')[0]))
109
+ end
110
+
111
+ # Dumps self to a LZSS compressed string.
112
+ def dumpb64()
113
+ [LZSS.compress(self._dump)].pack('m')
114
+ end
115
+ end
116
+ end