exerb 6.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (179) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/ChangeLog.ja.rd +305 -0
  4. data/README.en.txt +12 -0
  5. data/README.ja.html +143 -0
  6. data/README.ja.txt +6 -0
  7. data/README.md +50 -0
  8. data/Rakefile +205 -0
  9. data/bin/exerb +185 -0
  10. data/bin/mkexy +47 -0
  11. data/doc/LGPL +513 -0
  12. data/doc/class.ja.html +92 -0
  13. data/doc/command.ja.html +109 -0
  14. data/doc/core.ja.html +72 -0
  15. data/doc/example.ja.html +89 -0
  16. data/doc/faq.ja.html +59 -0
  17. data/doc/inside.ja.rd +404 -0
  18. data/doc/license.ja.html +62 -0
  19. data/doc/logo.gif +0 -0
  20. data/doc/misc.ja.html +72 -0
  21. data/doc/navi.gif +0 -0
  22. data/doc/recipe.ja.html +317 -0
  23. data/doc/style.css +187 -0
  24. data/doc/tutorial.ja.html +182 -0
  25. data/example/Makefile +54 -0
  26. data/example/cat_n.rb +14 -0
  27. data/example/exception.rb +9 -0
  28. data/example/ext/Win32API.so +0 -0
  29. data/example/ext/swin.so +0 -0
  30. data/example/msgbox.rb +14 -0
  31. data/example/rubytk.rb +22 -0
  32. data/example/runtime.ico +0 -0
  33. data/example/runtime.rb +19 -0
  34. data/example/vr/clipboard.rb +106 -0
  35. data/example/vr/compat/rubycompat.rb +18 -0
  36. data/example/vr/compat/vrcomctl.rb +12 -0
  37. data/example/vr/compat/vrcontrol.rb +50 -0
  38. data/example/vr/compat/vrmmedia.rb +24 -0
  39. data/example/vr/contrib/inifile.rb +116 -0
  40. data/example/vr/contrib/msgboxconst.rb +55 -0
  41. data/example/vr/contrib/toolbar.rb +371 -0
  42. data/example/vr/contrib/vrctlcolor.rb +110 -0
  43. data/example/vr/contrib/vrhotkey.rb +35 -0
  44. data/example/vr/contrib/vrlistviewex.rb +71 -0
  45. data/example/vr/contrib/vrstdscrollbar.rb +414 -0
  46. data/example/vr/contrib/vrwincomponent.rb +54 -0
  47. data/example/vr/dragdropformat.rb +209 -0
  48. data/example/vr/rscutil.rb +168 -0
  49. data/example/vr/sysmod.rb +249 -0
  50. data/example/vr/vractivex.rb +56 -0
  51. data/example/vr/vrclipboard.rb +53 -0
  52. data/example/vr/vrcomctl.rb +1819 -0
  53. data/example/vr/vrcontrol.rb +1374 -0
  54. data/example/vr/vrdde.rb +623 -0
  55. data/example/vr/vrddrop.rb +190 -0
  56. data/example/vr/vrdialog.rb +406 -0
  57. data/example/vr/vrhandler.rb +195 -0
  58. data/example/vr/vrlayout.old.rb +209 -0
  59. data/example/vr/vrlayout.rb +173 -0
  60. data/example/vr/vrlayout2.rb +340 -0
  61. data/example/vr/vrmargin.rb +141 -0
  62. data/example/vr/vrmgdlayout.rb +381 -0
  63. data/example/vr/vrmmedia.rb +287 -0
  64. data/example/vr/vrolednd.rb +192 -0
  65. data/example/vr/vrowndraw.rb +108 -0
  66. data/example/vr/vrrichedit.rb +366 -0
  67. data/example/vr/vrtimer.rb +148 -0
  68. data/example/vr/vrtooltip.rb +273 -0
  69. data/example/vr/vrtray.rb +143 -0
  70. data/example/vr/vrtvitem.rb +118 -0
  71. data/example/vr/vrtwopane.rb +223 -0
  72. data/example/vr/vruby.rb +1051 -0
  73. data/example/vr/winconst.rb +158 -0
  74. data/example/vruby.rb +38 -0
  75. data/exerb.gemspec +26 -0
  76. data/extconf.rb +7 -0
  77. data/lib/exerb/archive.rb +143 -0
  78. data/lib/exerb/config.rb +51 -0
  79. data/lib/exerb/error.rb +15 -0
  80. data/lib/exerb/executable.rb +68 -0
  81. data/lib/exerb/file_table.rb +189 -0
  82. data/lib/exerb/mkexy.rb +81 -0
  83. data/lib/exerb/name_table.rb +120 -0
  84. data/lib/exerb/recipe.rb +465 -0
  85. data/lib/exerb/resource.rb +190 -0
  86. data/lib/exerb/resource/base.rb +29 -0
  87. data/lib/exerb/resource/binary.rb +31 -0
  88. data/lib/exerb/resource/dialog.rb +30 -0
  89. data/lib/exerb/resource/group_icon.rb +85 -0
  90. data/lib/exerb/resource/icon.rb +52 -0
  91. data/lib/exerb/resource/version_info.rb +155 -0
  92. data/lib/exerb/resource_library.rb +120 -0
  93. data/lib/exerb/utility.rb +95 -0
  94. data/lib/exerb/utility2.rb +122 -0
  95. data/lib/exerb/version.rb +13 -0
  96. data/lib/exerb/win32/const/resource.rb +51 -0
  97. data/lib/exerb/win32/icon_file.rb +78 -0
  98. data/lib/exerb/win32/pe_file.rb +59 -0
  99. data/lib/exerb/win32/resource_directory.rb +105 -0
  100. data/lib/exerb/win32/resource_directory_root.rb +67 -0
  101. data/lib/exerb/win32/resource_entry.rb +98 -0
  102. data/lib/exerb/win32/struct/base.rb +43 -0
  103. data/lib/exerb/win32/struct/icon_dir_entry.rb +83 -0
  104. data/lib/exerb/win32/struct/icon_header.rb +43 -0
  105. data/lib/exerb/win32/struct/icon_res_entry.rb +48 -0
  106. data/lib/exerb/win32/struct/image_dos_header.rb +73 -0
  107. data/lib/exerb/win32/struct/image_file_header.rb +47 -0
  108. data/lib/exerb/win32/struct/image_nt_headers32.rb +53 -0
  109. data/lib/exerb/win32/struct/image_optional_header32.rb +107 -0
  110. data/lib/exerb/win32/struct/image_resource_data_entry.rb +45 -0
  111. data/lib/exerb/win32/struct/image_resource_directory.rb +47 -0
  112. data/lib/exerb/win32/struct/image_resource_directory_entry.rb +72 -0
  113. data/lib/exerb/win32/struct/image_section_header.rb +53 -0
  114. data/lib/exerb/win32/struct/version_info_block.rb +75 -0
  115. data/lib/exerb/win32/struct/vs_fixed_file_info.rb +62 -0
  116. data/src/exerb/cui.c +48 -0
  117. data/src/exerb/default.rb +1 -0
  118. data/src/exerb/exerb.c +877 -0
  119. data/src/exerb/exerb.h +92 -0
  120. data/src/exerb/gui.c +176 -0
  121. data/src/exerb/module.c +138 -0
  122. data/src/exerb/module.h +7 -0
  123. data/src/exerb/patch.c +27 -0
  124. data/src/exerb/resource.h +22 -0
  125. data/src/exerb/resource.rc +121 -0
  126. data/src/exerb/ruby.ico +0 -0
  127. data/src/exerb/utility.c +263 -0
  128. data/src/exerb/utility.h +33 -0
  129. data/test/alltests.rb +16 -0
  130. data/test/test-argv.rb +26 -0
  131. data/test/test-argv/test-argv.rb +9 -0
  132. data/test/test-argv/test-argv.ret +1 -0
  133. data/test/test-dollarzero.rb +26 -0
  134. data/test/test-dollarzero/test-dollarzero.rb +10 -0
  135. data/test/test-dollarzero/test-dollarzero.ret +2 -0
  136. data/test/test-dot.rb +26 -0
  137. data/test/test-dot/dot.dot.dot.rb +9 -0
  138. data/test/test-dot/dot.dot.rb +9 -0
  139. data/test/test-dot/test-dot.rb +13 -0
  140. data/test/test-dot/test-dot.ret +5 -0
  141. data/test/test-exitcode.rb +28 -0
  142. data/test/test-exitcode/test-exitcode.rb +9 -0
  143. data/test/test-kcode.rb +43 -0
  144. data/test/test-kcode/euc.rb +10 -0
  145. data/test/test-kcode/euc.ret +2 -0
  146. data/test/test-kcode/none.rb +10 -0
  147. data/test/test-kcode/none.ret +2 -0
  148. data/test/test-kcode/sjis.rb +10 -0
  149. data/test/test-kcode/sjis.ret +2 -0
  150. data/test/test-kcode/utf8.rb +10 -0
  151. data/test/test-kcode/utf8.ret +2 -0
  152. data/test/test-loadpath.rb +24 -0
  153. data/test/test-loadpath/test-loadpath.rb +9 -0
  154. data/test/test-nest.rb +18 -0
  155. data/test/test-nest/foo.rb +1 -0
  156. data/test/test-nest/foo/bar.rb +2 -0
  157. data/test/test-nest/foo/foo.rb +1 -0
  158. data/test/test-nest/test-nest.rb +1 -0
  159. data/test/test-nest/test-nest.ret +1 -0
  160. data/test/test-preload.rb +24 -0
  161. data/test/test-preload/test-preload.rb +9 -0
  162. data/test/test-regexp.rb +26 -0
  163. data/test/test-regexp/test-regexp.rb +23 -0
  164. data/test/test-regexp/test-regexp.ret +13 -0
  165. data/test/test-require1.rb +26 -0
  166. data/test/test-require1/require1.rb +9 -0
  167. data/test/test-require1/require2.rb +9 -0
  168. data/test/test-require1/require3.rb +9 -0
  169. data/test/test-require1/require4.rb +9 -0
  170. data/test/test-require1/require5.rb +9 -0
  171. data/test/test-require1/require6.rb +9 -0
  172. data/test/test-require1/test-require1.rb +41 -0
  173. data/test/test-require1/test-require1.ret +27 -0
  174. data/test/test-socket.rb +26 -0
  175. data/test/test-socket/test-socket.rb +7 -0
  176. data/test/test-socket/test-socket.ret +1 -0
  177. data/test/testcase.rb +66 -0
  178. data/vendor/mkexports.rb +167 -0
  179. metadata +352 -0
@@ -0,0 +1,371 @@
1
+ ###############################
2
+ #
3
+ # contrib/toolbar.rb
4
+ #
5
+ # These modules/classes are contributed by Yukimi_Sake-san.
6
+ # Modified by nyasu <nyasu@osk.3web.ne.jp>
7
+ # Distributed at http://vruby.sourceforge.net/index.html
8
+ #
9
+ ###############################
10
+
11
+ module WMsg
12
+ # WM_USER = 0x400
13
+ TB_ENABLEBUTTON = WM_USER + 1
14
+ TB_CHECKBUTTON = WM_USER + 2
15
+ TB_PRESSBUTTON = WM_USER + 3
16
+ TB_HIDEBUTTON = WM_USER + 4
17
+ TB_INDETERMINATE = WM_USER + 5
18
+ TB_ISBUTTONENABLED = WM_USER + 9
19
+ TB_ISBUTTONCHECKED = WM_USER + 10
20
+ TB_ISBUTTONPRESSED = WM_USER + 11
21
+ TB_ISBUTTONHIDDEN = WM_USER + 12
22
+ TB_ISBUTTONINDETERMINATE = WM_USER + 13
23
+ TB_SETSTATE = WM_USER + 17
24
+ TB_GETSTATE = WM_USER + 18
25
+ TB_ADDBITMAP = WM_USER + 19
26
+ TB_ADDBUTTONS = WM_USER + 20
27
+ TB_INSERTBUTTON = WM_USER + 21
28
+ TB_DELETEBUTTON = WM_USER + 22
29
+ TB_GETBUTTON = WM_USER + 23
30
+ TB_BUTTONCOUNT = WM_USER + 24
31
+ TB_COMMANDTOINDEX = WM_USER + 25
32
+ TB_SAVERESTOREA = WM_USER + 26
33
+ TB_SAVERESTOREW = WM_USER + 76
34
+ TB_CUSTOMIZE = WM_USER + 27
35
+ TB_ADDSTRINGA = WM_USER + 28
36
+ TB_GETITEMRECT = WM_USER + 29
37
+ TB_BUTTONSTRUCTSIZE = WM_USER + 30
38
+ TB_SETBUTTONSIZE = WM_USER + 31
39
+ TB_SETBITMAPSIZE = WM_USER + 32
40
+ TB_AUTOSIZE = WM_USER + 33
41
+ TB_GETTOOLTIPS = WM_USER + 35
42
+ TB_SETTOOLTIPS = WM_USER + 36
43
+ TB_SETPARENT = WM_USER + 37
44
+ TB_SETROWS = WM_USER + 39
45
+ TB_GETROWS = WM_USER + 40
46
+ TB_GETBITMAPFLAGS = WM_USER + 41
47
+ TB_SETCMDID = WM_USER + 42
48
+ TB_CHANGEBITMAP = WM_USER + 43
49
+ TB_GETBITMAP = WM_USER + 44
50
+ TB_GETBUTTONTEXTA = WM_USER + 45
51
+ TB_REPLACEBITMAP = WM_USER + 46
52
+ TB_SETINDENT = WM_USER + 47
53
+ TB_SETIMAGELIST = WM_USER + 48
54
+ TB_GETIMAGELIST = WM_USER + 49
55
+ TB_LOADIMAGES = WM_USER + 50
56
+ TB_GETRECT = WM_USER + 51 # wParam is the Cmd instead of index
57
+ TB_SETHOTIMAGELIST = WM_USER + 52
58
+ TB_GETHOTIMAGELIST = WM_USER + 53
59
+ TB_SETDISABLEDIMAGELIST = WM_USER + 54
60
+ TB_GETDISABLEDIMAGELIST = WM_USER + 55
61
+ TB_SETSTYLE = WM_USER + 56
62
+ TB_GETSTYLE = WM_USER + 57
63
+ TB_GETBUTTONSIZE = WM_USER + 58
64
+ TB_SETBUTTONWIDTH = WM_USER + 59
65
+ TB_SETMAXTEXTROWS = WM_USER + 60
66
+ TB_GETTEXTROWS = WM_USER + 61
67
+ TB_GETBUTTONTEXTW = WM_USER + 75
68
+ TB_ADDSTRINGW = WM_USER + 77
69
+
70
+ TBBF_LARGE = 1
71
+
72
+ TB_GETBUTTONINFO = WM_USER + 65
73
+ TB_SETBUTTONINFO = WM_USER + 66
74
+
75
+
76
+ TBN_FIRST = -700
77
+ TBN_GETBUTTONINFO = TBN_FIRST-0
78
+ TBN_BEGINDRAG = TBN_FIRST-1
79
+ TBN_ENDDRAG = TBN_FIRST-2
80
+ TBN_BEGINADJUST = TBN_FIRST-3
81
+ TBN_ENDADJUST = TBN_FIRST-4
82
+ TBN_RESET = TBN_FIRST-5
83
+ TBN_QUERYINSERT = TBN_FIRST-6
84
+ TBN_QUERYDELETE = TBN_FIRST-7
85
+ TBN_TOOLBARCHANGE = TBN_FIRST-8
86
+ TBN_CUSTHELP = TBN_FIRST-9
87
+ TBN_GETBUTTONINFOW = TBN_FIRST-20
88
+ end
89
+
90
+ module WConst
91
+ TBSTATE_CHECKED = 1
92
+ TBSTATE_PRESSED = 2
93
+ TBSTATE_ENABLED = 4
94
+ TBSTATE_HIDDEN = 8
95
+ TBSTATE_INDETERMINATE = 16
96
+ TBSTATE_WRAP = 32
97
+
98
+ TBSTYLE_BUTTON = 0
99
+ TBSTYLE_SEP = 1
100
+ TBSTYLE_CHECK = 2
101
+ TBSTYLE_GROUP = 4
102
+ TBSTYLE_CHECKGROUP = (TBSTYLE_GROUP|TBSTYLE_CHECK)
103
+ TBSTYLE_TOOLTIPS = 256
104
+ TBSTYLE_WRAPABLE = 512
105
+ TBSTYLE_ALTDRAG = 1024
106
+ TBSTYLE_FLAT = 2048
107
+
108
+
109
+ TBIF_IMAGE = 0x00000001
110
+ TBIF_TEXT = 0x00000002
111
+ TBIF_STATE = 0x00000004
112
+ TBIF_STYLE = 0x00000008
113
+ TBIF_LPARAM = 0x00000010
114
+ TBIF_COMMAND = 0x00000020
115
+ TBIF_SIZE = 0x00000040
116
+ end
117
+
118
+ module WStruct
119
+ TB_BUTTON = "IICCCCLI"
120
+ # int iBitmap;int idCommand; BYTE fsState; BYTE fsStyle;
121
+ # BYTE[2] fsReserved; DWORD dwData;int iString;
122
+ TBNOTIFY = NMHDR+"I"+TB_BUTTON+"IP"
123
+ # NMHDR hdr; int iItem; TBBUTTON tbButton;
124
+ # int cchText; LPTSTR pszText;
125
+ TBADDBITMAP="UU"
126
+ #HINSTANCE hInst; UINT nID;
127
+
128
+ end
129
+
130
+ module VRToolbarUseable
131
+ =begin
132
+ == VRToolbarUseable
133
+ If you include this module in parent, you can solve the fault of a notify
134
+ events at the time of including a VRComCtlContainer, since toolbar buttons
135
+ are set to _vr_toolbar_buttons which is an original variable.
136
+ When not including this module , toolbar buttons are set to _vr_contorols
137
+ for back compatibility.
138
+ =end
139
+ require 'vr/vrcontrol'
140
+ include VRStdControlContainer
141
+ attr :_vr_toolbar_buttons
142
+ alias self_wmcommand_org self_wmcommand
143
+
144
+ def self_wmcommand(msg)
145
+ if @_vr_toolbar_buttons then
146
+ tbbid=LOWORD(msg.wParam)
147
+ tbbmid=HIWORD(msg.wParam)
148
+ c = @_vr_toolbar_buttons[tbbid]
149
+ if c then
150
+ c._vr_cmdhandlers[tbbmid].each{|shandler|
151
+ args=msgarg2handlerarg(shandler[1],msg,shandler[2])
152
+ c.__send__(shandler[0],*args) if c.respond_to?(shandler[0])
153
+ msg.retval = controlmsg_dispatching(c,shandler[0],*args)
154
+ } if c._vr_cmdhandlers and c._vr_cmdhandlers[tbbmid]
155
+ end
156
+ end
157
+ self_wmcommand_org(msg)
158
+ end
159
+
160
+ def registerToolbarButton(c,name,id)
161
+ @_vr_toolbar_buttons = {} unless @_vr_toolbar_buttons
162
+ c.etc= id
163
+ c.name=name
164
+ @_vr_toolbar_buttons[id]=c
165
+ end
166
+
167
+ end
168
+
169
+ class VRToolbar < VRNotifyControl
170
+ =begin
171
+ == VRToolbar
172
+ This class represents Toolbar.
173
+
174
+ === Methods
175
+ --- insertButton(i,name,style=TBSTYLE_BUTTON)
176
+ Inserts a button as ((|i|))-th button. ((|style|)) can be
177
+ a constant in WConst such as TBSTYLE_BUTTON (default),
178
+ TBSTYLE_SEP (separator), TBSTYLE_CHECK,...
179
+ --- addButton(style)
180
+ Adds a button at last of the buttons.
181
+ --- deleteButton(i)
182
+ Deletes a button at ((|i|))-th.
183
+ --- clearButtons
184
+ Deletes all buttons.
185
+ --- countButtons
186
+ Counts buttons.
187
+ --- setImagelist(imglist)
188
+ Sets the imagelist for the toolbar. ((|imglist|)) must be an instance of
189
+ SWin::Imagelist.
190
+ --- setParent(hwnd)
191
+ Sets the window to nofify command messages.
192
+ --- autoSize
193
+ Resizes toolbar.
194
+ --- indeterminateOf(i,bool=true)
195
+ Sets the indeterminate state of the ((|i|))-th button.
196
+ --- commandToIndex(id)
197
+ Retrieves the index number for the button whose id is ((|id|)).
198
+ This id is used in WM_COMMAND messages.
199
+ --- enableButton(i,bool=true)
200
+ Enables or disables the ((|i|))-th button.
201
+ --- getButtonStateOf(id)
202
+ Gets the state of the button whose id is ((|id|)).
203
+ --- setButtonStateOf(i,state)
204
+ Sets the state of the button whose id is ((|id|)).
205
+ --- setButtons(buttons)
206
+ Sets the array of ((|button|)) to a tool bar at once.
207
+ ((|button|)) must be an array of ((|[name,style]|))
208
+ --- enumButtons
209
+ Yields all toolbar buttons which are instance of
210
+ VRToolbar::VRToolbarButton.
211
+ === Event Handler
212
+ --- ????_clicked
213
+ Fired when the button clicked.
214
+
215
+ == VRToolbar::VRToolbarButton
216
+ This class is for each toolbar buttons. This resemble menus in using it.
217
+
218
+ === Methods
219
+ --- state
220
+ Returns the state of the button.
221
+ --- checked?
222
+ Returns true if the button is checked/pushed.
223
+ =end
224
+
225
+ include WConst
226
+
227
+ class VRToolbarButton
228
+ attr :name,1
229
+ attr :etc,1
230
+ attr :index
231
+ attr :toolbar
232
+
233
+ def _vr_cmdhandlers
234
+ {0=>[["clicked",MSGTYPE::ARGNONE,nil]]}
235
+ end
236
+
237
+ def initialize(i,toolbar)
238
+ @index,@toolbar = i,toolbar
239
+ end
240
+
241
+ def state
242
+ @toolbar.getButtonStateOf(@etc)
243
+ end
244
+
245
+ def checked?
246
+ (state&1)==1
247
+ end
248
+
249
+ end
250
+
251
+ def VRToolbar.Controltype() ["ToolbarWindow32",0] end
252
+
253
+ def vrinit
254
+ super
255
+ sendMessage WMsg::TB_BUTTONSTRUCTSIZE ,20,0
256
+ if defined?(VRTooltip) and defined?(@parent.tooltip) and @parent.tooltip then
257
+ sendMessage WMsg::TB_SETTOOLTIPS,@parent.tooltip.hWnd,0
258
+ end
259
+ end
260
+
261
+ def setButtonText(i,text)
262
+ if text.length>0 then
263
+ iid = indexToCommand(i)
264
+ tbi = [4*8,WConst::TBIF_TEXT,iid,0,0,0,text,text.length].pack("llllilpl")
265
+ sendMessage WMsg::TB_SETBUTTONINFO,i,tbi
266
+ end
267
+ end
268
+
269
+ def insertButton(i,name,tbStyle=TBSTYLE_BUTTON)
270
+ @_vr_tbbuttons = -1 unless defined?(@_vr_tbbuttons)
271
+ @_vr_tbbuttons += 1 unless tbStyle == TBSTYLE_SEP
272
+ id = @parent.newControlID
273
+ tbb=@screen.application.arg2cstructStr(WStruct::TB_BUTTON,
274
+ @_vr_tbbuttons,id,
275
+ ((tbStyle == TBSTYLE_SEP)? 0 : 4),tbStyle,0,0,0,0)
276
+ sendMessage WMsg::TB_INSERTBUTTON,i,tbb
277
+ i = commandToIndex(id)
278
+ r=VRToolbarButton.new(i,self)
279
+ if @parent.respond_to?(:registerToolbarButton) then
280
+ @parent.registerToolbarButton(r,name,id)
281
+ else
282
+ @parent.registerControl(r,name,id)
283
+ end
284
+ r
285
+ end
286
+
287
+ def addButton(name,tbStyle=TBSTYLE_BUTTON)
288
+ insertButton(0xffff,name,tbStyle)
289
+ end
290
+
291
+ def deleteButton(i)
292
+ sendMessage WMsg::TB_DELETEBUTTON,i,0
293
+ end
294
+
295
+ def countButtons
296
+ r=sendMessage WMsg::TB_BUTTONCOUNT,0,0
297
+ end
298
+
299
+ def clearButtons
300
+ (countButtons-1).downto(0) do |i|
301
+ deleteButton(i)
302
+ refresh
303
+ end
304
+ end
305
+
306
+ def setParent(win)
307
+ hwnd = if win.is_a?(SWin::Window) then win.hwnd else win end
308
+ sendMessage WMsg::TB_SETPARENT,hwnd,0
309
+ end
310
+
311
+ def autoSize
312
+ sendMessage WMsg::TB_AUTOSIZE ,0,0
313
+ refresh
314
+ end
315
+
316
+ def indeterminateOf(i,bool=true)
317
+ sendMessage WMsg::TB_INDETERMINATE,i,(if bool then -1 else 0 end)
318
+ end
319
+
320
+ def setImagelist(imagelist)
321
+ raise "not Imagelist" unless imagelist.is_a?(SWin::Imagelist)
322
+ self.properties["imagelist"]=imagelist
323
+ sendMessage WMsg::TB_SETIMAGELIST,0,imagelist.himagelist
324
+ refresh
325
+ end
326
+
327
+ def commandToIndex(id)
328
+ sendMessage WMsg::TB_COMMANDTOINDEX,id,0
329
+ end
330
+
331
+ def indexToCommand(i)
332
+ getButton(i)[1]
333
+ end
334
+
335
+ def checked?(i)
336
+ (getButtonStateOf(i) & 1)==1
337
+ end
338
+
339
+ def setButtonStateOf(id,state)
340
+ sendMessage WMsg::TB_SETSTATE,id,state
341
+ end
342
+
343
+ def getButtonStateOf(id)
344
+ sendMessage WMsg::TB_GETSTATE,id,0
345
+ end
346
+
347
+ def enableButton(id,bool=true)
348
+ sendMessage WMsg::TB_ENABLEBUTTON,id,(if bool then 1 else 0 end)
349
+ end
350
+
351
+ def getButton(i)
352
+ tbb=@screen.application.arg2cstructStr(WStruct::TB_BUTTON,
353
+ 0,0,0,0,0,0,0,0)
354
+ sendMessage WMsg::TB_GETBUTTON ,i ,tbb
355
+ @screen.application.unpack(tbb,WStruct::TB_BUTTON)
356
+ end
357
+
358
+ def setButtons(a)
359
+ a.each{|i| addButton(i[0], (i[1] ? i[1] : TBSTYLE_BUTTON))}
360
+ end
361
+
362
+ def enumButtons
363
+ raise "Use VRToolbarUseable" unless parent.respond_to? :_vr_toolbar_buttons
364
+ n = countButtons
365
+ raise "unknown error" unless n == parent._vr_toolbar_buttons.size
366
+ parent._vr_toolbar_buttons.each{|key,val|
367
+ yield val
368
+ }
369
+ end
370
+
371
+ end
@@ -0,0 +1,110 @@
1
+ ###############################
2
+ #
3
+ # contrib/vrctlcolor.rb
4
+ #
5
+ # These modules/classes are contributed by Shigitani-san.
6
+ # Modified by nyasu <nyasu@osk.3web.ne.jp>
7
+ # Distributed at http://vruby.sourceforge.net/index.html
8
+ #
9
+ ###############################
10
+
11
+ =begin
12
+ === VRCtlColor
13
+ VisualuRuby �ɂ����āAWM_CTLCOLOR ���������郂�W���[���B
14
+
15
+ === Methods
16
+ --- addCtlColor(ctl)
17
+ WM_CTLCOLOR ���󂯎�����Ƃ��ɏ�������Ώۂ̃R���g���[����o�^����B
18
+ �Ȃ��A�o�^����Ƃ��� ctl �ɂ� setCtlTextColor, setCtlBkColor �� 2 �‚̓��ك��\�b�h
19
+ ���lj�����܂��B
20
+
21
+ --- setChildTextColor(ctl, textcolor)
22
+ --- setChildBkColor(ctl, bkcolor)
23
+ �o�^�����R���g���[���̃e�L�X�g�F�A�w�i�F��ݒ肷��B�o�^����Ă��Ȃ��R���g
24
+ ���[�����w�肵���ꍇ�͉������Ȃ��B
25
+
26
+ --- ctl.setCtlTextColor(textcolor)
27
+ --- ctl.setCtlBkColor(bkcolor)
28
+ addCtlColor �Œlj����ꂽ���ك��\�b�h�B�R���g���[���̃e�L�X�g�F�A�w�i�F��ݒ�
29
+ ����B
30
+ =end
31
+
32
+ module WMsg
33
+ WM_CTLCOLORMSGBOX = 0x0132
34
+ WM_CTLCOLOREDIT = 0x0133
35
+ WM_CTLCOLORLISTBOX = 0x0134
36
+ WM_CTLCOLORBTN = 0x0135
37
+ WM_CTLCOLORDLG = 0x0136
38
+ WM_CTLCOLORSCROLLBAR = 0x0137
39
+ WM_CTLCOLORSTATIC = 0x0138
40
+ end
41
+
42
+ module VRCtlColor
43
+
44
+ include VRMessageHandler
45
+
46
+ def vrctlcolorinit
47
+ @win32_getBkColor = Win32API.new('gdi32.dll', 'GetBkColor', 'I', 'I')
48
+ @win32_setBkColor = Win32API.new('gdi32.dll', 'SetBkColor', 'II', 'I')
49
+ @win32_setTextColor = Win32API.new('gdi32.dll', 'SetTextColor', 'II', 'I')
50
+ @win32_createSolidBrush = Win32API.new('gdi32.dll', 'CreateSolidBrush', 'I', 'I')
51
+ @win32_deleteObject = Win32API.new('gdi32.dll', 'DeleteObject', 'I', 'I')
52
+
53
+ @_vrctlcolor = Hash.new
54
+ @_vrctlcolor_brush = Hash.new
55
+
56
+ msgs = [ WMsg::WM_CTLCOLORMSGBOX, WMsg::WM_CTLCOLOREDIT, WMsg::WM_CTLCOLORLISTBOX,
57
+ WMsg::WM_CTLCOLORBTN, WMsg::WM_CTLCOLORDLG, WMsg::WM_CTLCOLORSCROLLBAR,
58
+ WMsg::WM_CTLCOLORSTATIC ]
59
+ msgs.each {|msg| addHandler(msg, 'ctlcolor', MSGTYPE::ARGINTINT, nil) }
60
+ acceptEvents(msgs)
61
+ addHandler WMsg::WM_DESTROY,"_vrdestroy",MSGTYPE::ARGNONE,nil
62
+ acceptEvents [WMsg::WM_DESTROY]
63
+ end
64
+
65
+ def vrinit
66
+ super
67
+ vrctlcolorinit
68
+ end
69
+
70
+ def addCtlColor(ctl)
71
+ @_vrctlcolor[ctl.hWnd] = [nil, nil]
72
+ def ctl.setCtlTextColor(textcolor)
73
+ parent.setChildTextColor(self, textcolor)
74
+ end
75
+ def ctl.setCtlBkColor(bkcolor)
76
+ parent.setChildBkColor(self, bkcolor)
77
+ end
78
+ end
79
+
80
+ def setChildTextColor(ctl, textcolor)
81
+ return unless @_vrctlcolor.has_key?(ctl.hWnd)
82
+ @_vrctlcolor[ctl.hWnd][0] = textcolor
83
+ end
84
+
85
+ def setChildBkColor(ctl, bkcolor)
86
+ return unless @_vrctlcolor.has_key?(ctl.hWnd)
87
+ @_vrctlcolor[ctl.hWnd][1] = bkcolor
88
+ end
89
+
90
+ def self_ctlcolor(hDC, hWnd)
91
+ return nil unless @_vrctlcolor.has_key?(hWnd)
92
+ textcolor, bkcolor = @_vrctlcolor[hWnd]
93
+ @win32_setTextColor.call(hDC, textcolor) unless textcolor.nil?
94
+ bkcolor = @win32_getBkColor.call(hDC) if bkcolor.nil?
95
+ @win32_setBkColor.call(hDC, bkcolor)
96
+ SKIP_DEFAULTHANDLER[get_brush(bkcolor)]
97
+ end
98
+
99
+ def get_brush(bkcolor)
100
+ unless @_vrctlcolor_brush.has_key?(bkcolor) then
101
+ @_vrctlcolor_brush[bkcolor] = @win32_createSolidBrush.call(bkcolor)
102
+ end
103
+ @_vrctlcolor_brush[bkcolor]
104
+ end
105
+
106
+ def self__vrdestroy
107
+ @_vrctlcolor_brush.values.each {|brush| @win32_deleteObject.call(brush) }
108
+ end
109
+
110
+ end