fzeet 0.5.3 → 0.6.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.
- data/examples/Command.rbw +2 -2
- data/examples/Control/Button.rbw +33 -11
- data/examples/Control/ComboBox.rbw +30 -0
- data/examples/Control/ComboBoxEx.rbw +30 -0
- data/examples/Control/DateTimePicker.rbw +9 -0
- data/examples/Control/Edit.rbw +18 -0
- data/examples/Control/Header.rbw +9 -0
- data/examples/Control/ListBox.rbw +30 -0
- data/examples/Control/ListView.rbw +11 -0
- data/examples/Control/MonthCalendar.rbw +9 -0
- data/examples/Control/ProgressBar.rbw +22 -0
- data/examples/Control/PropertySheet.rbw +50 -0
- data/examples/Control/Static.rbw +14 -0
- data/examples/Control/SysLink.rbw +9 -0
- data/examples/Control/TreeView.rbw +28 -0
- data/examples/Control/UpDown.rbw +12 -0
- data/examples/Dialog/Dialog.rbw +9 -9
- data/examples/Dialog/DialogApplication.rbw +1 -1
- data/examples/Menu/ContextMenu.rbw +3 -1
- data/examples/Menu/MenuPARGB32.rbw +6 -6
- data/examples/Paint.rbw +9 -0
- data/examples/UIRibbon/ContextPopup.rbw +7 -4
- data/examples/UIRibbon/Control/Button.dll +0 -0
- data/examples/UIRibbon/Control/Button.rb +91 -0
- data/examples/UIRibbon/Control/Button.rbw +20 -0
- data/examples/UIRibbon/Control/Button.xml +247 -0
- data/examples/UIRibbon/Size.rbw +13 -0
- data/examples/res/audio-volume-muted-big.bmp +0 -0
- data/examples/res/audio-volume-muted-small.bmp +0 -0
- data/examples/res/audio-volume-muted.bmp +0 -0
- data/examples/res/go-down-big.bmp +0 -0
- data/examples/res/go-down-small.bmp +0 -0
- data/examples/res/go-down.bmp +0 -0
- data/examples/res/go-jump-big.bmp +0 -0
- data/examples/res/go-jump-small.bmp +0 -0
- data/examples/res/go-jump.bmp +0 -0
- data/examples/res/media-playback-pause-big.bmp +0 -0
- data/examples/res/media-playback-pause-small.bmp +0 -0
- data/examples/res/media-playback-pause.bmp +0 -0
- data/lib/fzeet/Application.rb +4 -2
- data/lib/fzeet/Common.rb +44 -2
- data/lib/fzeet/Control/Button.rb +17 -0
- data/lib/fzeet/Control/ComboBox.rb +46 -0
- data/lib/fzeet/Control/ComboBoxEx.rb +35 -0
- data/lib/fzeet/Control/Common.rb +2 -0
- data/lib/fzeet/Control/DateTimePicker.rb +38 -0
- data/lib/fzeet/Control/Edit.rb +53 -0
- data/lib/fzeet/Control/Header.rb +46 -0
- data/lib/fzeet/Control/ListBox.rb +72 -0
- data/lib/fzeet/Control/ListView.rb +90 -0
- data/lib/fzeet/Control/MonthCalendar.rb +38 -0
- data/lib/fzeet/Control/ProgressBar.rb +40 -0
- data/lib/fzeet/Control/Static.rb +34 -0
- data/lib/fzeet/Control/SysLink.rb +40 -0
- data/lib/fzeet/Control/TreeView.rb +32 -0
- data/lib/fzeet/Control/UpDown.rb +36 -0
- data/lib/fzeet/Control.rb +13 -0
- data/lib/fzeet/UIRibbon.rb +91 -31
- data/lib/fzeet/Window/Common.rb +22 -1
- data/lib/fzeet/Window/View.rb +15 -0
- data/lib/fzeet/Window/WindowMethods.rb +26 -1
- data/lib/fzeet/Window.rb +1 -0
- data/lib/fzeet/windows/comctl/Button.rb +3 -0
- data/lib/fzeet/windows/comctl/ComboBox.rb +12 -0
- data/lib/fzeet/windows/comctl/ComboBoxEx.rb +65 -0
- data/lib/fzeet/windows/comctl/Common.rb +52 -1
- data/lib/fzeet/windows/comctl/DateTimePicker.rb +54 -0
- data/lib/fzeet/windows/comctl/Edit.rb +20 -0
- data/lib/fzeet/windows/comctl/Header.rb +128 -0
- data/lib/fzeet/windows/comctl/ListView.rb +317 -0
- data/lib/fzeet/windows/comctl/MonthCalendar.rb +62 -0
- data/lib/fzeet/windows/comctl/ProgressBar.rb +31 -0
- data/lib/fzeet/windows/comctl/PropertySheet.rb +205 -0
- data/lib/fzeet/windows/comctl/SysLink.rb +34 -0
- data/lib/fzeet/windows/comctl/TreeView.rb +198 -0
- data/lib/fzeet/windows/comctl/UpDown.rb +43 -0
- data/lib/fzeet/windows/comctl.rb +12 -0
- data/lib/fzeet/windows/common.rb +74 -2
- data/lib/fzeet/windows/gdi.rb +2 -0
- data/lib/fzeet/windows/libc.rb +4 -0
- data/lib/fzeet/windows/ole.rb +0 -22
- data/lib/fzeet/windows/shell/Common.rb +2 -0
- data/lib/fzeet/windows/user/Control/Button.rb +6 -0
- data/lib/fzeet/windows/user/Control/ComboBox.rb +72 -0
- data/lib/fzeet/windows/user/Control/Common.rb +1 -1
- data/lib/fzeet/windows/user/Control/Edit.rb +71 -0
- data/lib/fzeet/windows/user/Control/ListBox.rb +78 -0
- data/lib/fzeet/windows/user/Control/Static.rb +49 -0
- data/lib/fzeet/windows/user/Control.rb +4 -0
- data/lib/fzeet/windows/user/Window.rb +47 -0
- metadata +66 -4
@@ -0,0 +1,62 @@
|
|
1
|
+
require_relative 'Common'
|
2
|
+
|
3
|
+
module Fzeet
|
4
|
+
module Windows
|
5
|
+
MCS_DAYSTATE = 0x0001
|
6
|
+
MCS_MULTISELECT = 0x0002
|
7
|
+
MCS_WEEKNUMBERS = 0x0004
|
8
|
+
MCS_NOTODAYCIRCLE = 0x0008
|
9
|
+
MCS_NOTODAY = 0x0010
|
10
|
+
MCS_NOTRAILINGDATES = 0x0040
|
11
|
+
MCS_SHORTDAYSOFWEEK = 0x0080
|
12
|
+
MCS_NOSELCHANGEONNAV = 0x0100
|
13
|
+
|
14
|
+
MCM_FIRST = 0x1000
|
15
|
+
MCM_GETCURSEL = MCM_FIRST + 1
|
16
|
+
MCM_SETCURSEL = MCM_FIRST + 2
|
17
|
+
MCM_GETMAXSELCOUNT = MCM_FIRST + 3
|
18
|
+
MCM_SETMAXSELCOUNT = MCM_FIRST + 4
|
19
|
+
MCM_GETSELRANGE = MCM_FIRST + 5
|
20
|
+
MCM_SETSELRANGE = MCM_FIRST + 6
|
21
|
+
MCM_GETMONTHRANGE = MCM_FIRST + 7
|
22
|
+
MCM_SETDAYSTATE = MCM_FIRST + 8
|
23
|
+
MCM_GETMINREQRECT = MCM_FIRST + 9
|
24
|
+
MCM_SETCOLOR = MCM_FIRST + 10
|
25
|
+
MCM_GETCOLOR = MCM_FIRST + 11
|
26
|
+
MCM_SETTODAY = MCM_FIRST + 12
|
27
|
+
MCM_GETTODAY = MCM_FIRST + 13
|
28
|
+
MCM_HITTEST = MCM_FIRST + 14
|
29
|
+
MCM_SETFIRSTDAYOFWEEK = MCM_FIRST + 15
|
30
|
+
MCM_GETFIRSTDAYOFWEEK = MCM_FIRST + 16
|
31
|
+
MCM_GETRANGE = MCM_FIRST + 17
|
32
|
+
MCM_SETRANGE = MCM_FIRST + 18
|
33
|
+
MCM_GETMONTHDELTA = MCM_FIRST + 19
|
34
|
+
MCM_SETMONTHDELTA = MCM_FIRST + 20
|
35
|
+
MCM_GETMAXTODAYWIDTH = MCM_FIRST + 21
|
36
|
+
MCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
|
37
|
+
MCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
|
38
|
+
MCM_GETCURRENTVIEW = MCM_FIRST + 22
|
39
|
+
MCM_GETCALENDARCOUNT = MCM_FIRST + 23
|
40
|
+
MCM_GETCALENDARGRIDINFO = MCM_FIRST + 24
|
41
|
+
MCM_GETCALID = MCM_FIRST + 27
|
42
|
+
MCM_SETCALID = MCM_FIRST + 28
|
43
|
+
MCM_SIZERECTTOMIN = MCM_FIRST + 29
|
44
|
+
MCM_SETCALENDARBORDER = MCM_FIRST + 30
|
45
|
+
MCM_GETCALENDARBORDER = MCM_FIRST + 31
|
46
|
+
MCM_SETCURRENTVIEW = MCM_FIRST + 32
|
47
|
+
|
48
|
+
MCN_FIRST = 0x1_0000_0000 - 746
|
49
|
+
MCN_LAST = 0x1_0000_0000 - 752
|
50
|
+
MCN_SELCHANGE = MCN_FIRST - 3
|
51
|
+
MCN_GETDAYSTATE = MCN_FIRST - 1
|
52
|
+
MCN_SELECT = MCN_FIRST
|
53
|
+
MCN_VIEWCHANGE = MCN_FIRST - 4
|
54
|
+
|
55
|
+
class NMSELCHANGE < FFI::Struct
|
56
|
+
layout \
|
57
|
+
:nmhdr, NMHDR,
|
58
|
+
:stSelStart, SYSTEMTIME,
|
59
|
+
:stSelEnd, SYSTEMTIME
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative 'Common'
|
2
|
+
|
3
|
+
module Fzeet
|
4
|
+
module Windows
|
5
|
+
PBS_SMOOTH = 0x01
|
6
|
+
PBS_VERTICAL = 0x04
|
7
|
+
PBS_MARQUEE = 0x08
|
8
|
+
PBS_SMOOTHREVERSE = 0x10
|
9
|
+
|
10
|
+
PBM_SETRANGE = WM_USER + 1
|
11
|
+
PBM_SETPOS = WM_USER + 2
|
12
|
+
PBM_DELTAPOS = WM_USER + 3
|
13
|
+
PBM_SETSTEP = WM_USER + 4
|
14
|
+
PBM_STEPIT = WM_USER + 5
|
15
|
+
PBM_SETRANGE32 = WM_USER + 6
|
16
|
+
PBM_GETRANGE = WM_USER + 7
|
17
|
+
PBM_GETPOS = WM_USER + 8
|
18
|
+
PBM_SETBARCOLOR = WM_USER + 9
|
19
|
+
PBM_SETBKCOLOR = CCM_SETBKCOLOR
|
20
|
+
PBM_SETMARQUEE = WM_USER + 10
|
21
|
+
PBM_GETSTEP = WM_USER + 13
|
22
|
+
PBM_GETBKCOLOR = WM_USER + 14
|
23
|
+
PBM_GETBARCOLOR = WM_USER + 15
|
24
|
+
PBM_SETSTATE = WM_USER + 16
|
25
|
+
PBM_GETSTATE = WM_USER + 17
|
26
|
+
|
27
|
+
PBST_NORMAL = 0x0001
|
28
|
+
PBST_ERROR = 0x0002
|
29
|
+
PBST_PAUSED = 0x0003
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,205 @@
|
|
1
|
+
require_relative 'Common'
|
2
|
+
|
3
|
+
module Fzeet
|
4
|
+
module Windows
|
5
|
+
PSP_DEFAULT = 0x00000000
|
6
|
+
PSP_DLGINDIRECT = 0x00000001
|
7
|
+
PSP_USEHICON = 0x00000002
|
8
|
+
PSP_USEICONID = 0x00000004
|
9
|
+
PSP_USETITLE = 0x00000008
|
10
|
+
PSP_RTLREADING = 0x00000010
|
11
|
+
PSP_HASHELP = 0x00000020
|
12
|
+
PSP_USEREFPARENT = 0x00000040
|
13
|
+
PSP_USECALLBACK = 0x00000080
|
14
|
+
PSP_PREMATURE = 0x00000400
|
15
|
+
PSP_HIDEHEADER = 0x00000800
|
16
|
+
PSP_USEHEADERTITLE = 0x00001000
|
17
|
+
PSP_USEHEADERSUBTITLE = 0x00002000
|
18
|
+
PSP_USEFUSIONCONTEXT = 0x00004000
|
19
|
+
|
20
|
+
callback :PSPCALLBACK, [:pointer, :uint, :pointer], :uint
|
21
|
+
|
22
|
+
class PROPSHEETPAGE < FFI::Struct
|
23
|
+
layout *[
|
24
|
+
:dwSize, :ulong,
|
25
|
+
:dwFlags, :ulong,
|
26
|
+
:hInstance, :pointer,
|
27
|
+
:template, Class.new(FFI::Union) {
|
28
|
+
layout \
|
29
|
+
:pszTemplate, :pointer,
|
30
|
+
:pResource, :pointer
|
31
|
+
},
|
32
|
+
:icon, Class.new(FFI::Union) {
|
33
|
+
layout \
|
34
|
+
:hIcon, :pointer,
|
35
|
+
:pszIcon, :pointer
|
36
|
+
},
|
37
|
+
:pszTitle, :pointer,
|
38
|
+
:pfnDlgProc, :DLGPROC,
|
39
|
+
:lParam, :long,
|
40
|
+
:pfnCallback, :PSPCALLBACK,
|
41
|
+
:pcRefParent, :pointer,
|
42
|
+
:pszHeaderTitle, :pointer,
|
43
|
+
:pszHeaderSubTitle, :pointer,
|
44
|
+
(WINVER.AtLeastWindowsXP?) ? [
|
45
|
+
:hActCtx, :pointer
|
46
|
+
] : nil,
|
47
|
+
(WINVER.AtLeastWindowsVista?) ? [
|
48
|
+
:header, Class.new(FFI::Union) {
|
49
|
+
layout \
|
50
|
+
:hbmHeader, :pointer,
|
51
|
+
:pszbmHeader, :pointer
|
52
|
+
}
|
53
|
+
] : nil
|
54
|
+
].flatten.compact
|
55
|
+
end
|
56
|
+
|
57
|
+
attach_function :CreatePropertySheetPage, :CreatePropertySheetPageA, [:pointer], :pointer
|
58
|
+
attach_function :DestroyPropertySheetPage, [:pointer], :int
|
59
|
+
|
60
|
+
PSH_DEFAULT = 0x00000000
|
61
|
+
PSH_PROPTITLE = 0x00000001
|
62
|
+
PSH_USEHICON = 0x00000002
|
63
|
+
PSH_USEICONID = 0x00000004
|
64
|
+
PSH_PROPSHEETPAGE = 0x00000008
|
65
|
+
PSH_WIZARDHASFINISH = 0x00000010
|
66
|
+
PSH_WIZARD = 0x00000020
|
67
|
+
PSH_USEPSTARTPAGE = 0x00000040
|
68
|
+
PSH_NOAPPLYNOW = 0x00000080
|
69
|
+
PSH_USECALLBACK = 0x00000100
|
70
|
+
PSH_HASHELP = 0x00000200
|
71
|
+
PSH_MODELESS = 0x00000400
|
72
|
+
PSH_RTLREADING = 0x00000800
|
73
|
+
PSH_WIZARDCONTEXTHELP = 0x00001000
|
74
|
+
PSH_WIZARD97 = 0x01000000
|
75
|
+
PSH_WATERMARK = 0x00008000
|
76
|
+
PSH_USEHBMWATERMARK = 0x00010000
|
77
|
+
PSH_USEHPLWATERMARK = 0x00020000
|
78
|
+
PSH_STRETCHWATERMARK = 0x00040000
|
79
|
+
PSH_HEADER = 0x00080000
|
80
|
+
PSH_USEHBMHEADER = 0x00100000
|
81
|
+
PSH_USEPAGELANG = 0x00200000
|
82
|
+
PSH_WIZARD_LITE = 0x00400000
|
83
|
+
PSH_NOCONTEXTHELP = 0x02000000
|
84
|
+
PSH_AEROWIZARD = 0x00004000
|
85
|
+
PSH_RESIZABLE = 0x04000000
|
86
|
+
PSH_HEADERBITMAP = 0x08000000
|
87
|
+
PSH_NOMARGIN = 0x10000000
|
88
|
+
|
89
|
+
callback :PROPSHEETCALLBACK, [:pointer, :uint, :long], :int
|
90
|
+
|
91
|
+
class PROPSHEETHEADER < FFI::Struct
|
92
|
+
layout \
|
93
|
+
:dwSize, :ulong,
|
94
|
+
:dwFlags, :ulong,
|
95
|
+
:hwndParent, :pointer,
|
96
|
+
:hInstance, :pointer,
|
97
|
+
:icon, Class.new(FFI::Union) {
|
98
|
+
layout \
|
99
|
+
:hIcon, :pointer,
|
100
|
+
:pszIcon, :pointer
|
101
|
+
},
|
102
|
+
:pszCaption, :pointer,
|
103
|
+
:nPages, :uint,
|
104
|
+
:start, Class.new(FFI::Union) {
|
105
|
+
layout \
|
106
|
+
:nStartPage, :uint,
|
107
|
+
:pStartPage, :pointer
|
108
|
+
},
|
109
|
+
:pages, Class.new(FFI::Union) {
|
110
|
+
layout \
|
111
|
+
:ppsp, :pointer,
|
112
|
+
:phpage, :pointer
|
113
|
+
},
|
114
|
+
:pfnCallback, :PROPSHEETCALLBACK,
|
115
|
+
:watermark, Class.new(FFI::Union) {
|
116
|
+
layout \
|
117
|
+
:hbmWatermark, :pointer,
|
118
|
+
:pszbmWatermark, :pointer
|
119
|
+
},
|
120
|
+
:hplWatermark, :pointer,
|
121
|
+
:header, Class.new(FFI::Union) {
|
122
|
+
layout \
|
123
|
+
:hbmHeader, :pointer,
|
124
|
+
:pszbmHeader, :pointer
|
125
|
+
}
|
126
|
+
end
|
127
|
+
|
128
|
+
attach_function :PropertySheet, :PropertySheetA, [:pointer], :int
|
129
|
+
|
130
|
+
PSM_SETCURSEL = WM_USER + 101
|
131
|
+
PSM_REMOVEPAGE = WM_USER + 102
|
132
|
+
PSM_ADDPAGE = WM_USER + 103
|
133
|
+
PSM_CHANGED = WM_USER + 104
|
134
|
+
PSM_RESTARTWINDOWS = WM_USER + 105
|
135
|
+
PSM_REBOOTSYSTEM = WM_USER + 106
|
136
|
+
PSM_CANCELTOCLOSE = WM_USER + 107
|
137
|
+
PSM_QUERYSIBLINGS = WM_USER + 108
|
138
|
+
PSM_UNCHANGED = WM_USER + 109
|
139
|
+
PSM_APPLY = WM_USER + 110
|
140
|
+
PSM_SETTITLE = WM_USER + 111
|
141
|
+
PSM_SETWIZBUTTONS = WM_USER + 112
|
142
|
+
PSM_PRESSBUTTON = WM_USER + 113
|
143
|
+
PSM_SETCURSELID = WM_USER + 114
|
144
|
+
PSM_SETFINISHTEXT = WM_USER + 115
|
145
|
+
PSM_GETTABCONTROL = WM_USER + 116
|
146
|
+
PSM_ISDIALOGMESSAGE = WM_USER + 117
|
147
|
+
PSM_GETCURRENTPAGEHWND = WM_USER + 118
|
148
|
+
PSM_INSERTPAGE = WM_USER + 119
|
149
|
+
PSM_SETHEADERTITLE = WM_USER + 125
|
150
|
+
PSM_SETHEADERSUBTITLE = WM_USER + 127
|
151
|
+
PSM_HWNDTOINDEX = WM_USER + 129
|
152
|
+
PSM_INDEXTOHWND = WM_USER + 130
|
153
|
+
PSM_PAGETOINDEX = WM_USER + 131
|
154
|
+
PSM_INDEXTOPAGE = WM_USER + 132
|
155
|
+
PSM_IDTOINDEX = WM_USER + 133
|
156
|
+
PSM_INDEXTOID = WM_USER + 134
|
157
|
+
PSM_GETRESULT = WM_USER + 135
|
158
|
+
PSM_RECALCPAGESIZES = WM_USER + 136
|
159
|
+
PSM_SETNEXTTEXT = WM_USER + 137
|
160
|
+
PSM_SHOWWIZBUTTONS = WM_USER + 138
|
161
|
+
PSM_ENABLEWIZBUTTONS = WM_USER + 139
|
162
|
+
PSM_SETBUTTONTEXT = WM_USER + 140
|
163
|
+
|
164
|
+
PSWIZF_SETCOLOR = 0xffffffff
|
165
|
+
|
166
|
+
PSWIZB_BACK = 0x00000001
|
167
|
+
PSWIZB_NEXT = 0x00000002
|
168
|
+
PSWIZB_FINISH = 0x00000004
|
169
|
+
PSWIZB_DISABLEDFINISH = 0x00000008
|
170
|
+
PSWIZB_CANCEL = 0x00000010
|
171
|
+
PSWIZB_SHOW = 0
|
172
|
+
PSWIZB_RESTORE = 1
|
173
|
+
|
174
|
+
PSWIZBF_ELEVATIONREQUIRED = 0x00000001
|
175
|
+
|
176
|
+
PSBTN_BACK = 0
|
177
|
+
PSBTN_NEXT = 1
|
178
|
+
PSBTN_FINISH = 2
|
179
|
+
PSBTN_OK = 3
|
180
|
+
PSBTN_APPLYNOW = 4
|
181
|
+
PSBTN_CANCEL = 5
|
182
|
+
PSBTN_HELP = 6
|
183
|
+
PSBTN_MAX = 6
|
184
|
+
|
185
|
+
PSN_FIRST = 0x1_0000_0000 - 200
|
186
|
+
PSN_LAST = 0x1_0000_0000 - 299
|
187
|
+
PSN_SETACTIVE = PSN_FIRST - 0
|
188
|
+
PSN_KILLACTIVE = PSN_FIRST - 1
|
189
|
+
PSN_APPLY = PSN_FIRST - 2
|
190
|
+
PSN_RESET = PSN_FIRST - 3
|
191
|
+
PSN_HELP = PSN_FIRST - 5
|
192
|
+
PSN_WIZBACK = PSN_FIRST - 6
|
193
|
+
PSN_WIZNEXT = PSN_FIRST - 7
|
194
|
+
PSN_WIZFINISH = PSN_FIRST - 8
|
195
|
+
PSN_QUERYCANCEL = PSN_FIRST - 9
|
196
|
+
PSN_GETOBJECT = PSN_FIRST - 10
|
197
|
+
PSN_TRANSLATEACCELERATOR = PSN_FIRST - 12
|
198
|
+
PSN_QUERYINITIALFOCUS = PSN_FIRST - 13
|
199
|
+
|
200
|
+
PSNRET_NOERROR = 0
|
201
|
+
PSNRET_INVALID = 1
|
202
|
+
PSNRET_INVALID_NOCHANGEPAGE = 2
|
203
|
+
PSNRET_MESSAGEHANDLED = 3
|
204
|
+
end
|
205
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative 'Common'
|
2
|
+
|
3
|
+
module Fzeet
|
4
|
+
module Windows
|
5
|
+
LWS_TRANSPARENT = 0x0001
|
6
|
+
LWS_IGNORERETURN = 0x0002
|
7
|
+
LWS_NOPREFIX = 0x0004
|
8
|
+
LWS_USEVISUALSTYLE = 0x0008
|
9
|
+
LWS_USECUSTOMTEXT = 0x0010
|
10
|
+
LWS_RIGHT = 0x0020
|
11
|
+
|
12
|
+
LM_HITTEST = WM_USER + 0x300
|
13
|
+
LM_GETIDEALHEIGHT = WM_USER + 0x301
|
14
|
+
LM_SETITEM = WM_USER + 0x302
|
15
|
+
LM_GETITEM = WM_USER + 0x303
|
16
|
+
LM_GETIDEALSIZE = LM_GETIDEALHEIGHT
|
17
|
+
|
18
|
+
class LITEM < FFI::Struct
|
19
|
+
layout \
|
20
|
+
:mask, :uint,
|
21
|
+
:iLink, :int,
|
22
|
+
:state, :uint,
|
23
|
+
:stateMask, :uint,
|
24
|
+
:szID, [:ushort, 48],
|
25
|
+
:szUrl, [:ushort, 2048 + 32 + 4]
|
26
|
+
end
|
27
|
+
|
28
|
+
class NMLINK < FFI::Struct
|
29
|
+
layout \
|
30
|
+
:hdr, NMHDR,
|
31
|
+
:item, LITEM
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,198 @@
|
|
1
|
+
require_relative 'Common'
|
2
|
+
|
3
|
+
module Fzeet
|
4
|
+
module Windows
|
5
|
+
TVS_HASBUTTONS = 0x0001
|
6
|
+
TVS_HASLINES = 0x0002
|
7
|
+
TVS_LINESATROOT = 0x0004
|
8
|
+
TVS_EDITLABELS = 0x0008
|
9
|
+
TVS_DISABLEDRAGDROP = 0x0010
|
10
|
+
TVS_SHOWSELALWAYS = 0x0020
|
11
|
+
TVS_RTLREADING = 0x0040
|
12
|
+
TVS_NOTOOLTIPS = 0x0080
|
13
|
+
TVS_CHECKBOXES = 0x0100
|
14
|
+
TVS_TRACKSELECT = 0x0200
|
15
|
+
TVS_SINGLEEXPAND = 0x0400
|
16
|
+
TVS_INFOTIP = 0x0800
|
17
|
+
TVS_FULLROWSELECT = 0x1000
|
18
|
+
TVS_NOSCROLL = 0x2000
|
19
|
+
TVS_NONEVENHEIGHT = 0x4000
|
20
|
+
TVS_NOHSCROLL = 0x8000
|
21
|
+
|
22
|
+
TVS_EX_MULTISELECT = 0x0002
|
23
|
+
TVS_EX_DOUBLEBUFFER = 0x0004
|
24
|
+
TVS_EX_NOINDENTSTATE = 0x0008
|
25
|
+
TVS_EX_RICHTOOLTIP = 0x0010
|
26
|
+
TVS_EX_AUTOHSCROLL = 0x0020
|
27
|
+
TVS_EX_FADEINOUTEXPANDOS = 0x0040
|
28
|
+
TVS_EX_PARTIALCHECKBOXES = 0x0080
|
29
|
+
TVS_EX_EXCLUSIONCHECKBOXES = 0x0100
|
30
|
+
TVS_EX_DIMMEDCHECKBOXES = 0x0200
|
31
|
+
TVS_EX_DRAWIMAGEASYNC = 0x0400
|
32
|
+
|
33
|
+
TV_FIRST = 0x1100
|
34
|
+
|
35
|
+
TVM_INSERTITEM = TV_FIRST + 0
|
36
|
+
TVM_DELETEITEM = TV_FIRST + 1
|
37
|
+
TVM_EXPAND = TV_FIRST + 2
|
38
|
+
TVM_GETITEMRECT = TV_FIRST + 4
|
39
|
+
TVM_GETCOUNT = TV_FIRST + 5
|
40
|
+
TVM_GETINDENT = TV_FIRST + 6
|
41
|
+
TVM_SETINDENT = TV_FIRST + 7
|
42
|
+
TVM_GETIMAGELIST = TV_FIRST + 8
|
43
|
+
TVM_SETIMAGELIST = TV_FIRST + 9
|
44
|
+
TVM_GETNEXTITEM = TV_FIRST + 10
|
45
|
+
TVM_SELECTITEM = TV_FIRST + 11
|
46
|
+
TVM_GETITEM = TV_FIRST + 12
|
47
|
+
TVM_SETITEM = TV_FIRST + 13
|
48
|
+
TVM_EDITLABEL = TV_FIRST + 14
|
49
|
+
TVM_GETEDITCONTROL = TV_FIRST + 15
|
50
|
+
TVM_GETVISIBLECOUNT = TV_FIRST + 16
|
51
|
+
TVM_HITTEST = TV_FIRST + 17
|
52
|
+
TVM_CREATEDRAGIMAGE = TV_FIRST + 18
|
53
|
+
TVM_SORTCHILDREN = TV_FIRST + 19
|
54
|
+
TVM_ENSUREVISIBLE = TV_FIRST + 20
|
55
|
+
TVM_SORTCHILDRENCB = TV_FIRST + 21
|
56
|
+
TVM_ENDEDITLABELNOW = TV_FIRST + 22
|
57
|
+
TVM_GETISEARCHSTRING = TV_FIRST + 23
|
58
|
+
TVM_SETTOOLTIPS = TV_FIRST + 24
|
59
|
+
TVM_GETTOOLTIPS = TV_FIRST + 25
|
60
|
+
TVM_SETINSERTMARK = TV_FIRST + 26
|
61
|
+
TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
|
62
|
+
TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
|
63
|
+
TVM_SETITEMHEIGHT = TV_FIRST + 27
|
64
|
+
TVM_GETITEMHEIGHT = TV_FIRST + 28
|
65
|
+
TVM_SETBKCOLOR = TV_FIRST + 29
|
66
|
+
TVM_SETTEXTCOLOR = TV_FIRST + 30
|
67
|
+
TVM_GETBKCOLOR = TV_FIRST + 31
|
68
|
+
TVM_GETTEXTCOLOR = TV_FIRST + 32
|
69
|
+
TVM_SETSCROLLTIME = TV_FIRST + 33
|
70
|
+
TVM_GETSCROLLTIME = TV_FIRST + 34
|
71
|
+
TVM_SETINSERTMARKCOLOR = TV_FIRST + 37
|
72
|
+
TVM_GETINSERTMARKCOLOR = TV_FIRST + 38
|
73
|
+
TVM_GETITEMSTATE = TV_FIRST + 39
|
74
|
+
TVM_SETLINECOLOR = TV_FIRST + 40
|
75
|
+
TVM_GETLINECOLOR = TV_FIRST + 41
|
76
|
+
TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42
|
77
|
+
TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43
|
78
|
+
TVM_SETEXTENDEDSTYLE = TV_FIRST + 44
|
79
|
+
TVM_GETEXTENDEDSTYLE = TV_FIRST + 45
|
80
|
+
TVM_SETAUTOSCROLLINFO = TV_FIRST + 59
|
81
|
+
TVM_GETSELECTEDCOUNT = TV_FIRST + 70
|
82
|
+
TVM_SHOWINFOTIP = TV_FIRST + 71
|
83
|
+
TVM_GETITEMPARTRECT = TV_FIRST + 72
|
84
|
+
|
85
|
+
TVN_FIRST = 0x1_0000_0000 - 400
|
86
|
+
TVN_LAST = 0x1_0000_0000 - 499
|
87
|
+
TVN_SELCHANGING = TVN_FIRST - 1
|
88
|
+
TVN_SELCHANGED = TVN_FIRST - 2
|
89
|
+
TVN_GETDISPINFO = TVN_FIRST - 3
|
90
|
+
TVN_SETDISPINFO = TVN_FIRST - 4
|
91
|
+
TVN_ITEMEXPANDING = TVN_FIRST - 5
|
92
|
+
TVN_ITEMEXPANDED = TVN_FIRST - 6
|
93
|
+
TVN_BEGINDRAG = TVN_FIRST - 7
|
94
|
+
TVN_BEGINRDRAG = TVN_FIRST - 8
|
95
|
+
TVN_DELETEITEM = TVN_FIRST - 9
|
96
|
+
TVN_BEGINLABELEDIT = TVN_FIRST - 10
|
97
|
+
TVN_ENDLABELEDIT = TVN_FIRST - 11
|
98
|
+
TVN_KEYDOWN = TVN_FIRST - 12
|
99
|
+
TVN_GETINFOTIP = TVN_FIRST - 13
|
100
|
+
TVN_SINGLEEXPAND = TVN_FIRST - 15
|
101
|
+
TVN_ITEMCHANGING = TVN_FIRST - 16
|
102
|
+
TVN_ITEMCHANGED = TVN_FIRST - 18
|
103
|
+
TVN_ASYNCDRAW = TVN_FIRST - 20
|
104
|
+
|
105
|
+
TVIF_TEXT = 0x0001
|
106
|
+
TVIF_IMAGE = 0x0002
|
107
|
+
TVIF_PARAM = 0x0004
|
108
|
+
TVIF_STATE = 0x0008
|
109
|
+
TVIF_HANDLE = 0x0010
|
110
|
+
TVIF_SELECTEDIMAGE = 0x0020
|
111
|
+
TVIF_CHILDREN = 0x0040
|
112
|
+
TVIF_INTEGRAL = 0x0080
|
113
|
+
TVIF_STATEEX = 0x0100
|
114
|
+
TVIF_EXPANDEDIMAGE = 0x0200
|
115
|
+
|
116
|
+
TVIS_SELECTED = 0x0002
|
117
|
+
TVIS_CUT = 0x0004
|
118
|
+
TVIS_DROPHILITED = 0x0008
|
119
|
+
TVIS_BOLD = 0x0010
|
120
|
+
TVIS_EXPANDED = 0x0020
|
121
|
+
TVIS_EXPANDEDONCE = 0x0040
|
122
|
+
TVIS_EXPANDPARTIAL = 0x0080
|
123
|
+
TVIS_OVERLAYMASK = 0x0F00
|
124
|
+
TVIS_STATEIMAGEMASK = 0xF000
|
125
|
+
TVIS_USERMASK = 0xF000
|
126
|
+
|
127
|
+
TVIS_EX_FLAT = 0x0001
|
128
|
+
TVIS_EX_DISABLED = 0x0002
|
129
|
+
TVIS_EX_ALL = 0x0002
|
130
|
+
|
131
|
+
I_CHILDRENCALLBACK = -1
|
132
|
+
|
133
|
+
class TVITEM < FFI::Struct
|
134
|
+
layout \
|
135
|
+
:mask, :uint,
|
136
|
+
:hItem, :pointer,
|
137
|
+
:state, :uint,
|
138
|
+
:stateMask, :uint,
|
139
|
+
:pszText, :pointer,
|
140
|
+
:cchTextMax, :int,
|
141
|
+
:iImage, :int,
|
142
|
+
:iSelectedImage, :int,
|
143
|
+
:cChildren, :int,
|
144
|
+
:lParam, :long,
|
145
|
+
end
|
146
|
+
|
147
|
+
class TVITEMEX < FFI::Struct
|
148
|
+
layout *[
|
149
|
+
:mask, :uint,
|
150
|
+
:hItem, :pointer,
|
151
|
+
:state, :uint,
|
152
|
+
:stateMask, :uint,
|
153
|
+
:pszText, :pointer,
|
154
|
+
:cchTextMax, :int,
|
155
|
+
:iImage, :int,
|
156
|
+
:iSelectedImage, :int,
|
157
|
+
:cChildren, :int,
|
158
|
+
:lParam, :long,
|
159
|
+
:iIntegral, :int,
|
160
|
+
(WINVER.AtLeastWindowsVista?) ? [
|
161
|
+
:uStateEx, :uint,
|
162
|
+
:hwnd, :pointer,
|
163
|
+
:iExpandedImage, :int
|
164
|
+
] : nil,
|
165
|
+
(WINVER.AtLeastWindows7?) ? [
|
166
|
+
:iReserved, :int
|
167
|
+
] : nil
|
168
|
+
].flatten.compact
|
169
|
+
end
|
170
|
+
|
171
|
+
TVI_ROOT = FFI::Pointer.new(-0x10000)
|
172
|
+
TVI_FIRST = FFI::Pointer.new(-0x0FFFF)
|
173
|
+
TVI_LAST = FFI::Pointer.new(-0x0FFFE)
|
174
|
+
TVI_SORT = FFI::Pointer.new(-0x0FFFD)
|
175
|
+
|
176
|
+
class TVINSERTSTRUCT < FFI::Struct
|
177
|
+
include AnonymousSupport
|
178
|
+
|
179
|
+
layout \
|
180
|
+
:hParent, :pointer,
|
181
|
+
:hInsertAfter, :pointer,
|
182
|
+
:_, Class.new(FFI::Union) {
|
183
|
+
layout \
|
184
|
+
:itemex, TVITEMEX,
|
185
|
+
:item, TVITEM
|
186
|
+
}
|
187
|
+
end
|
188
|
+
|
189
|
+
class NMTREEVIEW < FFI::Struct
|
190
|
+
layout \
|
191
|
+
:hdr, NMHDR,
|
192
|
+
:action, :uint,
|
193
|
+
:itemOld, TVITEM,
|
194
|
+
:itemNew, TVITEM,
|
195
|
+
:ptDrag, POINT
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require_relative 'Common'
|
2
|
+
|
3
|
+
module Fzeet
|
4
|
+
module Windows
|
5
|
+
UDS_WRAP = 0x0001
|
6
|
+
UDS_SETBUDDYINT = 0x0002
|
7
|
+
UDS_ALIGNRIGHT = 0x0004
|
8
|
+
UDS_ALIGNLEFT = 0x0008
|
9
|
+
UDS_AUTOBUDDY = 0x0010
|
10
|
+
UDS_ARROWKEYS = 0x0020
|
11
|
+
UDS_HORZ = 0x0040
|
12
|
+
UDS_NOTHOUSANDS = 0x0080
|
13
|
+
UDS_HOTTRACK = 0x0100
|
14
|
+
|
15
|
+
UDM_SETRANGE = WM_USER + 101
|
16
|
+
UDM_GETRANGE = WM_USER + 102
|
17
|
+
UDM_SETPOS = WM_USER + 103
|
18
|
+
UDM_GETPOS = WM_USER + 104
|
19
|
+
UDM_SETBUDDY = WM_USER + 105
|
20
|
+
UDM_GETBUDDY = WM_USER + 106
|
21
|
+
UDM_SETACCEL = WM_USER + 107
|
22
|
+
UDM_GETACCEL = WM_USER + 108
|
23
|
+
UDM_SETBASE = WM_USER + 109
|
24
|
+
UDM_GETBASE = WM_USER + 110
|
25
|
+
UDM_SETRANGE32 = WM_USER + 111
|
26
|
+
UDM_GETRANGE32 = WM_USER + 112
|
27
|
+
UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
|
28
|
+
UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
|
29
|
+
UDM_SETPOS32 = WM_USER + 113
|
30
|
+
UDM_GETPOS32 = WM_USER + 114
|
31
|
+
|
32
|
+
UDN_FIRST = 0x1_0000_0000 - 721
|
33
|
+
UDN_LAST = 0x1_0000_0000 - 729
|
34
|
+
UDN_DELTAPOS = UDN_FIRST - 1
|
35
|
+
|
36
|
+
class NMUPDOWN < FFI::Struct
|
37
|
+
layout \
|
38
|
+
:hdr, NMHDR,
|
39
|
+
:iPos, :int,
|
40
|
+
:iDelta, :int
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/fzeet/windows/comctl.rb
CHANGED
@@ -1 +1,13 @@
|
|
1
1
|
require_relative 'comctl/Button'
|
2
|
+
require_relative 'comctl/SysLink' if Fzeet::Windows::WINVER.AtLeastWindowsXP?
|
3
|
+
require_relative 'comctl/Edit'
|
4
|
+
require_relative 'comctl/UpDown'
|
5
|
+
require_relative 'comctl/MonthCalendar'
|
6
|
+
require_relative 'comctl/DateTimePicker'
|
7
|
+
require_relative 'comctl/ComboBox'
|
8
|
+
require_relative 'comctl/ComboBoxEx'
|
9
|
+
require_relative 'comctl/Header'
|
10
|
+
require_relative 'comctl/ListView'
|
11
|
+
require_relative 'comctl/TreeView'
|
12
|
+
require_relative 'comctl/ProgressBar'
|
13
|
+
require_relative 'comctl/PropertySheet'
|
data/lib/fzeet/windows/common.rb
CHANGED
@@ -15,7 +15,6 @@ module Fzeet
|
|
15
15
|
|
16
16
|
attach_function :GetLastError, [], :ulong
|
17
17
|
attach_function :SetLastError, [:ulong], :void
|
18
|
-
attach_function :RestoreLastError, [:ulong], :void
|
19
18
|
|
20
19
|
def DetonateLastError(on, name, *args)
|
21
20
|
raise "#{name} failed (last error #{GetLastError()})." if (failed = [*on].include?(result = send(name, *args)))
|
@@ -79,16 +78,63 @@ module Fzeet
|
|
79
78
|
def LOBYTE(w) w & 0xff end
|
80
79
|
def HIBYTE(w) (w >> 8) & 0xff end
|
81
80
|
def MAKEWORD(low, high) (low & 0xff) | ((high & 0xff) << 8) end
|
81
|
+
|
82
82
|
def LOWORD(l) l & 0xffff end
|
83
83
|
def HIWORD(l) (l >> 16) & 0xffff end
|
84
84
|
def MAKELONG(low, high) (low & 0xffff) | ((high & 0xffff) << 16) end
|
85
|
+
|
85
86
|
def GET_X_LPARAM(l) ((w = LOWORD(l)) > 0x7fff) ? w - 0x1_0000 : w end
|
86
87
|
def GET_Y_LPARAM(l) ((w = HIWORD(l)) > 0x7fff) ? w - 0x1_0000 : w end
|
87
88
|
|
89
|
+
def LPWSTR(s)
|
90
|
+
FFI::MemoryPointer.new(:uchar, (s.length + 2) * 2) { |p|
|
91
|
+
"#{s}\0".encode('utf-16le').each_byte.with_index { |b, i|
|
92
|
+
p.put_char(i, b)
|
93
|
+
|
94
|
+
yield p
|
95
|
+
}
|
96
|
+
}
|
97
|
+
end
|
98
|
+
|
99
|
+
def WCSTOMBS(p)
|
100
|
+
result = ''
|
101
|
+
|
102
|
+
FFI::MemoryPointer.new(:uchar, len = wcslen(p) + 1) { |buf|
|
103
|
+
raise 'wcstombs failed.' if wcstombs(buf, p, len) == 0xffffffff
|
104
|
+
|
105
|
+
result << buf.read_string
|
106
|
+
}
|
107
|
+
|
108
|
+
result
|
109
|
+
end
|
110
|
+
|
88
111
|
module_function \
|
89
112
|
:LOBYTE, :HIBYTE, :MAKEWORD,
|
90
113
|
:LOWORD, :HIWORD, :MAKELONG,
|
91
|
-
:GET_X_LPARAM, :GET_Y_LPARAM
|
114
|
+
:GET_X_LPARAM, :GET_Y_LPARAM,
|
115
|
+
:LPWSTR, :WCSTOMBS
|
116
|
+
|
117
|
+
module AnonymousSupport
|
118
|
+
def [](k)
|
119
|
+
if members.include?(k)
|
120
|
+
super
|
121
|
+
elsif self[:_].members.include?(k)
|
122
|
+
self[:_][k]
|
123
|
+
else
|
124
|
+
self[:_][:_][k]
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def []=(k, v)
|
129
|
+
if members.include?(k)
|
130
|
+
super
|
131
|
+
elsif self[:_].members.include?(k)
|
132
|
+
self[:_][k] = v
|
133
|
+
else
|
134
|
+
self[:_][:_][k] = v
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
92
138
|
|
93
139
|
class POINT < FFI::Struct
|
94
140
|
layout \
|
@@ -127,5 +173,31 @@ module Fzeet
|
|
127
173
|
:lfPitchAndFamily, :uchar,
|
128
174
|
:lfFaceName, [:char, 32]
|
129
175
|
end
|
176
|
+
|
177
|
+
class SYSTEMTIME < FFI::Struct
|
178
|
+
layout \
|
179
|
+
:wYear, :ushort,
|
180
|
+
:wMonth, :ushort,
|
181
|
+
:wDayOfWeek, :ushort,
|
182
|
+
:wDay, :ushort,
|
183
|
+
:wHour, :ushort,
|
184
|
+
:wMinute, :ushort,
|
185
|
+
:wSecond, :ushort,
|
186
|
+
:wMilliseconds, :ushort
|
187
|
+
|
188
|
+
def to_local
|
189
|
+
Time.local(
|
190
|
+
self[:wYear], self[:wMonth], self[:wDay],
|
191
|
+
self[:wHour], self[:wMinute], self[:wSecond], self[:wMilliseconds]
|
192
|
+
)
|
193
|
+
end
|
194
|
+
|
195
|
+
def to_utc
|
196
|
+
Time.utc(
|
197
|
+
self[:wYear], self[:wMonth], self[:wDay],
|
198
|
+
self[:wHour], self[:wMinute], self[:wSecond], self[:wMilliseconds]
|
199
|
+
)
|
200
|
+
end
|
201
|
+
end
|
130
202
|
end
|
131
203
|
end
|
data/lib/fzeet/windows/gdi.rb
CHANGED
@@ -41,6 +41,8 @@ module Fzeet
|
|
41
41
|
|
42
42
|
attach_function :DeleteObject, [:pointer], :int
|
43
43
|
|
44
|
+
attach_function :SelectObject, [:pointer, :pointer], :pointer
|
45
|
+
|
44
46
|
attach_function :MoveToEx, [:pointer, :int, :int, :pointer], :int
|
45
47
|
attach_function :LineTo, [:pointer, :int, :int], :int
|
46
48
|
end
|
data/lib/fzeet/windows/libc.rb
CHANGED
@@ -6,5 +6,9 @@ module Fzeet
|
|
6
6
|
ffi_convention :cdecl
|
7
7
|
|
8
8
|
attach_function :memcmp, [:pointer, :pointer, :uint], :int
|
9
|
+
|
10
|
+
attach_function :wcslen, [:buffer_in], :uint
|
11
|
+
attach_function :mbstowcs, [:pointer, :string, :uint], :uint
|
12
|
+
attach_function :wcstombs, [:pointer, :buffer_in, :uint], :uint
|
9
13
|
end
|
10
14
|
end
|