wrb 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README +28 -0
- data/Rakefile +66 -0
- data/bin/wrb +41 -0
- data/bin/wrb.bat +6 -0
- data/ext/rwin/aatree.c +192 -0
- data/ext/rwin/aatree.h +55 -0
- data/ext/rwin/extconf.rb +47 -0
- data/ext/rwin/rw_api.c +2058 -0
- data/ext/rwin/rw_devices.c +215 -0
- data/ext/rwin/rw_gdiplus.h +278 -0
- data/ext/rwin/rw_graphics.c +1583 -0
- data/ext/rwin/rw_resources.c +1988 -0
- data/ext/rwin/rw_ubfuncs.c +281 -0
- data/ext/rwin/rw_windows.c +1936 -0
- data/ext/rwin/rwin.c +451 -0
- data/ext/rwin/rwin.h +442 -0
- data/lib/rwin.rb +820 -0
- data/lib/wrb.rb +20 -0
- data/lib/wrb/applications/frmdesigner/angle.cur +0 -0
- data/lib/wrb/applications/frmdesigner/angle2.cur +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Button.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Button.rb +34 -0
- data/lib/wrb/applications/frmdesigner/controls/Checkbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Checkbox.rb +10 -0
- data/lib/wrb/applications/frmdesigner/controls/Combobox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Combobox.rb +88 -0
- data/lib/wrb/applications/frmdesigner/controls/ComboboxEx.rb +97 -0
- data/lib/wrb/applications/frmdesigner/controls/Comboboxex.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.rb +11 -0
- data/lib/wrb/applications/frmdesigner/controls/Edit.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Edit.rb +8 -0
- data/lib/wrb/applications/frmdesigner/controls/Groupbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Groupbox.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Imagelist.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Imagelist.rb +115 -0
- data/lib/wrb/applications/frmdesigner/controls/Listbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Listbox.rb +77 -0
- data/lib/wrb/applications/frmdesigner/controls/Listview.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Listview.rb +157 -0
- data/lib/wrb/applications/frmdesigner/controls/Menu.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Menu.rb +198 -0
- data/lib/wrb/applications/frmdesigner/controls/Menubar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Menubar.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/MonthCalender.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Monthcalender.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Panel.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Panel.rb +30 -0
- data/lib/wrb/applications/frmdesigner/controls/Progressbar.rb +10 -0
- data/lib/wrb/applications/frmdesigner/controls/Radiobutton.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Radiobutton.rb +13 -0
- data/lib/wrb/applications/frmdesigner/controls/Rebar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Rebar.rb +162 -0
- data/lib/wrb/applications/frmdesigner/controls/Splitter.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Splitter.rb +66 -0
- data/lib/wrb/applications/frmdesigner/controls/Static.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Static.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Statusbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Statusbar.rb +103 -0
- data/lib/wrb/applications/frmdesigner/controls/Tabctrl.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Tabctrl.rb +136 -0
- data/lib/wrb/applications/frmdesigner/controls/Timer.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Timer.rb +36 -0
- data/lib/wrb/applications/frmdesigner/controls/Toolbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Toolbar.rb +165 -0
- data/lib/wrb/applications/frmdesigner/controls/Trackbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Trackbar.rb +34 -0
- data/lib/wrb/applications/frmdesigner/controls/Treeview.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Treeview.rb +107 -0
- data/lib/wrb/applications/frmdesigner/controls/Updown.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Updown.rb +31 -0
- data/lib/wrb/applications/frmdesigner/controls/default.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/progressbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/unselect.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/fddialogs.rb +87 -0
- data/lib/wrb/applications/frmdesigner/fdesign.rb +1315 -0
- data/lib/wrb/applications/frmdesigner/fdmodules.rb +1394 -0
- data/lib/wrb/applications/frmdesigner/fdparseform.rb +197 -0
- data/lib/wrb/applications/frmdesigner/img13.bmp +0 -0
- data/lib/wrb/base.rb +1294 -0
- data/lib/wrb/combocommon.rb +77 -0
- data/lib/wrb/commctrlconst.rb +139 -0
- data/lib/wrb/commdlg.rb +77 -0
- data/lib/wrb/components/animate.rb +114 -0
- data/lib/wrb/components/bitmap.rb +116 -0
- data/lib/wrb/components/button.rb +134 -0
- data/lib/wrb/components/canvas.rb +266 -0
- data/lib/wrb/components/checkbox.rb +118 -0
- data/lib/wrb/components/choosecolordlg.rb +87 -0
- data/lib/wrb/components/choosefontdlg.rb +142 -0
- data/lib/wrb/components/clipboard.rb +174 -0
- data/lib/wrb/components/combobox.rb +282 -0
- data/lib/wrb/components/comboboxex.rb +574 -0
- data/lib/wrb/components/cursor.rb +91 -0
- data/lib/wrb/components/datetimepicker.rb +197 -0
- data/lib/wrb/components/ddeclient.rb +180 -0
- data/lib/wrb/components/ddeserver.rb +131 -0
- data/lib/wrb/components/dialog.rb +228 -0
- data/lib/wrb/components/edit.rb +412 -0
- data/lib/wrb/components/font.rb +35 -0
- data/lib/wrb/components/form.rb +65 -0
- data/lib/wrb/components/groupbox.rb +122 -0
- data/lib/wrb/components/header.rb +479 -0
- data/lib/wrb/components/hotkeyctrl.rb +72 -0
- data/lib/wrb/components/icon.rb +109 -0
- data/lib/wrb/components/imagelist.rb +396 -0
- data/lib/wrb/components/inifile.rb +97 -0
- data/lib/wrb/components/listbox.rb +149 -0
- data/lib/wrb/components/listview.rb +1467 -0
- data/lib/wrb/components/menu.rb +592 -0
- data/lib/wrb/components/menubar.rb +84 -0
- data/lib/wrb/components/monthcalender.rb +164 -0
- data/lib/wrb/components/openfilenamedlg.rb +147 -0
- data/lib/wrb/components/pager.rb +199 -0
- data/lib/wrb/components/panel.rb +103 -0
- data/lib/wrb/components/picture.rb +55 -0
- data/lib/wrb/components/printdlg.rb +148 -0
- data/lib/wrb/components/printdlgex.rb +117 -0
- data/lib/wrb/components/printer.rb +97 -0
- data/lib/wrb/components/progressbar.rb +140 -0
- data/lib/wrb/components/radiobutton.rb +49 -0
- data/lib/wrb/components/rebar.rb +830 -0
- data/lib/wrb/components/registry.rb +408 -0
- data/lib/wrb/components/richedit.rb +1181 -0
- data/lib/wrb/components/savefilenamedlg.rb +27 -0
- data/lib/wrb/components/scintilla.rb +1298 -0
- data/lib/wrb/components/scrollbar.rb +239 -0
- data/lib/wrb/components/splitter.rb +494 -0
- data/lib/wrb/components/static.rb +198 -0
- data/lib/wrb/components/statusbar.rb +490 -0
- data/lib/wrb/components/tabctrl.rb +686 -0
- data/lib/wrb/components/timer.rb +117 -0
- data/lib/wrb/components/toolbar.rb +1107 -0
- data/lib/wrb/components/tooltip.rb +651 -0
- data/lib/wrb/components/trackbar.rb +298 -0
- data/lib/wrb/components/treeview.rb +845 -0
- data/lib/wrb/components/updown.rb +198 -0
- data/lib/wrb/ddeml.rb +241 -0
- data/lib/wrb/documents/animate.html +46 -0
- data/lib/wrb/documents/bitmap.html +69 -0
- data/lib/wrb/documents/button.html +78 -0
- data/lib/wrb/documents/canvas.html +137 -0
- data/lib/wrb/documents/checkbox.html +77 -0
- data/lib/wrb/documents/choosecolordlg.html +29 -0
- data/lib/wrb/documents/choosefontdlg.html +31 -0
- data/lib/wrb/documents/clipboard.html +31 -0
- data/lib/wrb/documents/combobox.html +117 -0
- data/lib/wrb/documents/comboboxex.html +139 -0
- data/lib/wrb/documents/control.html +53 -0
- data/lib/wrb/documents/cursor.html +45 -0
- data/lib/wrb/documents/datetimepicker.html +70 -0
- data/lib/wrb/documents/ddeclient.html +33 -0
- data/lib/wrb/documents/ddeserver.html +26 -0
- data/lib/wrb/documents/dialog.html +78 -0
- data/lib/wrb/documents/edit.html +169 -0
- data/lib/wrb/documents/empty.html +11 -0
- data/lib/wrb/documents/favicon.png +0 -0
- data/lib/wrb/documents/font.html +38 -0
- data/lib/wrb/documents/form.html +63 -0
- data/lib/wrb/documents/groupbox.html +57 -0
- data/lib/wrb/documents/header.html +85 -0
- data/lib/wrb/documents/hotkeyctrl.html +42 -0
- data/lib/wrb/documents/icon.html +45 -0
- data/lib/wrb/documents/imagelist.html +101 -0
- data/lib/wrb/documents/images/button.png +0 -0
- data/lib/wrb/documents/images/checkbox.png +0 -0
- data/lib/wrb/documents/images/combobox.png +0 -0
- data/lib/wrb/documents/images/comboboxex.png +0 -0
- data/lib/wrb/documents/images/datetimepicker.png +0 -0
- data/lib/wrb/documents/images/edit.png +0 -0
- data/lib/wrb/documents/images/groupbox.png +0 -0
- data/lib/wrb/documents/images/hotkeyctrl.png +0 -0
- data/lib/wrb/documents/images/listbox.png +0 -0
- data/lib/wrb/documents/images/listview.png +0 -0
- data/lib/wrb/documents/images/menu.png +0 -0
- data/lib/wrb/documents/images/menubar.png +0 -0
- data/lib/wrb/documents/images/monthcalender.png +0 -0
- data/lib/wrb/documents/images/progressbar.png +0 -0
- data/lib/wrb/documents/images/radiobutton.png +0 -0
- data/lib/wrb/documents/images/rebar.png +0 -0
- data/lib/wrb/documents/images/richedit.png +0 -0
- data/lib/wrb/documents/images/splitter.png +0 -0
- data/lib/wrb/documents/images/static.png +0 -0
- data/lib/wrb/documents/images/statusbar.png +0 -0
- data/lib/wrb/documents/images/tabctrl.png +0 -0
- data/lib/wrb/documents/images/toolbar.png +0 -0
- data/lib/wrb/documents/images/tooltip.png +0 -0
- data/lib/wrb/documents/images/trackbar.png +0 -0
- data/lib/wrb/documents/images/treeview.png +0 -0
- data/lib/wrb/documents/images/updown.png +0 -0
- data/lib/wrb/documents/index.html +155 -0
- data/lib/wrb/documents/inifile.html +36 -0
- data/lib/wrb/documents/license.txt +22 -0
- data/lib/wrb/documents/listbox.html +96 -0
- data/lib/wrb/documents/listview.html +277 -0
- data/lib/wrb/documents/make_doc.rb +596 -0
- data/lib/wrb/documents/menu.html +144 -0
- data/lib/wrb/documents/menubar.html +54 -0
- data/lib/wrb/documents/monthcalender.html +48 -0
- data/lib/wrb/documents/openfilenamedlg.html +36 -0
- data/lib/wrb/documents/pager.html +63 -0
- data/lib/wrb/documents/panel.html +32 -0
- data/lib/wrb/documents/picture.html +48 -0
- data/lib/wrb/documents/printdlg.html +35 -0
- data/lib/wrb/documents/printdlgex.html +35 -0
- data/lib/wrb/documents/printer.html +40 -0
- data/lib/wrb/documents/progressbar.html +69 -0
- data/lib/wrb/documents/radiobutton.html +51 -0
- data/lib/wrb/documents/rebar.html +143 -0
- data/lib/wrb/documents/registry.html +36 -0
- data/lib/wrb/documents/richedit.html +232 -0
- data/lib/wrb/documents/samples/editimg.bmp +0 -0
- data/lib/wrb/documents/samples/editimg.iml +0 -0
- data/lib/wrb/documents/samples/fileimg.bmp +0 -0
- data/lib/wrb/documents/samples/fileimg.iml +0 -0
- data/lib/wrb/documents/samples/sample_button.rb +21 -0
- data/lib/wrb/documents/samples/sample_checkbox.rb +18 -0
- data/lib/wrb/documents/samples/sample_combobox.rb +18 -0
- data/lib/wrb/documents/samples/sample_comboboxex.rb +23 -0
- data/lib/wrb/documents/samples/sample_datetimepicker.rb +11 -0
- data/lib/wrb/documents/samples/sample_edit.rb +25 -0
- data/lib/wrb/documents/samples/sample_groupbox.rb +19 -0
- data/lib/wrb/documents/samples/sample_hotkeyctrl.rb +12 -0
- data/lib/wrb/documents/samples/sample_listbox.rb +12 -0
- data/lib/wrb/documents/samples/sample_listview.rb +32 -0
- data/lib/wrb/documents/samples/sample_menu.rb +21 -0
- data/lib/wrb/documents/samples/sample_menubar.rb +23 -0
- data/lib/wrb/documents/samples/sample_monthcalender.rb +11 -0
- data/lib/wrb/documents/samples/sample_progressbar.rb +14 -0
- data/lib/wrb/documents/samples/sample_radiobutton.rb +14 -0
- data/lib/wrb/documents/samples/sample_rebar.rb +25 -0
- data/lib/wrb/documents/samples/sample_richedit.rb +60 -0
- data/lib/wrb/documents/samples/sample_splitter.rb +33 -0
- data/lib/wrb/documents/samples/sample_static.rb +15 -0
- data/lib/wrb/documents/samples/sample_statusbar.rb +17 -0
- data/lib/wrb/documents/samples/sample_tabctrl.rb +19 -0
- data/lib/wrb/documents/samples/sample_toolbar.rb +29 -0
- data/lib/wrb/documents/samples/sample_tooltip.rb +50 -0
- data/lib/wrb/documents/samples/sample_trackbar.rb +30 -0
- data/lib/wrb/documents/samples/sample_treeview.rb +19 -0
- data/lib/wrb/documents/samples/sample_updown.rb +18 -0
- data/lib/wrb/documents/samples/sampleimg16.iml +0 -0
- data/lib/wrb/documents/samples/sampleimg32.iml +0 -0
- data/lib/wrb/documents/samples/samplemg16.png +0 -0
- data/lib/wrb/documents/samples/samplemg32.png +0 -0
- data/lib/wrb/documents/samples/wrb.ico +0 -0
- data/lib/wrb/documents/savefilenamedlg.html +19 -0
- data/lib/wrb/documents/scrollbar.html +60 -0
- data/lib/wrb/documents/splitter.html +96 -0
- data/lib/wrb/documents/static.html +84 -0
- data/lib/wrb/documents/statusbar.html +110 -0
- data/lib/wrb/documents/tabctrl.html +151 -0
- data/lib/wrb/documents/timer.html +43 -0
- data/lib/wrb/documents/toolbar.html +181 -0
- data/lib/wrb/documents/tooltip.html +131 -0
- data/lib/wrb/documents/trackbar.html +107 -0
- data/lib/wrb/documents/treeview.html +210 -0
- data/lib/wrb/documents/updown.html +85 -0
- data/lib/wrb/documents/wincontrol.html +258 -0
- data/lib/wrb/documents/window.html +499 -0
- data/lib/wrb/documents/wrb.css +228 -0
- data/lib/wrb/gmem.rb +26 -0
- data/lib/wrb/imecommon.rb +59 -0
- data/lib/wrb/listcommon.rb +185 -0
- data/lib/wrb/lzss.rb +126 -0
- data/lib/wrb/scrollinfo.rb +142 -0
- data/lib/wrb/toplevelcommon.rb +634 -0
- 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
|
data/lib/wrb/ddeml.rb
ADDED
@@ -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 < <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>
|