ffi-wingui-core 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/examples/Command.rbw +42 -23
- data/examples/Hello.rbw +1 -2
- data/examples/HelloOptout.rbw +1 -2
- data/examples/HelloTimeout.rbw +11 -12
- data/examples/Layered.rbw +99 -0
- data/examples/LifeCycle.rbw +3 -4
- data/examples/LifeCycleNC.rbw +3 -4
- data/examples/Menu.rbw +47 -58
- data/examples/MenuContext.rbw +11 -14
- data/examples/MenuPARGB32.rbw +58 -73
- data/examples/MinMax.rbw +101 -0
- data/examples/Minimal.rbw +3 -4
- data/examples/Region.rbw +100 -0
- data/examples/Scribble.rbw +15 -18
- data/examples/WndExtra.rbw +7 -8
- data/lib/ffi-wingui-core.rb +496 -50
- data/lib/ffi-wingui-core/ocra.rb +1 -0
- metadata +17 -13
data/examples/Command.rbw
CHANGED
@@ -1,33 +1,31 @@
|
|
1
1
|
require 'ffi-wingui-core'
|
2
|
-
|
3
|
-
exit if defined?(Ocra)
|
2
|
+
require 'ffi-wingui-core/ocra'
|
4
3
|
|
5
4
|
include WinGUI
|
6
5
|
|
7
|
-
APPNAME = L(File.basename(__FILE__, '.rbw'))
|
8
|
-
|
9
|
-
CMD_ITEM1 = WM_APP + 1
|
10
|
-
CTL_FOCUS = CMD_ITEM1 + 1
|
11
|
-
CTL_BUTTON1 = CTL_FOCUS + 1
|
12
|
-
|
13
6
|
WndExtra = Struct.new(
|
14
7
|
:haccel,
|
15
8
|
:hmf
|
16
|
-
)
|
9
|
+
)
|
17
10
|
|
18
11
|
def onCreate(hwnd,
|
19
12
|
cs
|
20
13
|
)
|
21
|
-
xtra =
|
14
|
+
xtra = Util::Id2Ref[GetWindowLong(hwnd, GWL_USERDATA)]
|
15
|
+
|
16
|
+
hsys = GetSystemMenu(hwnd, 0)
|
17
|
+
InsertMenu(hsys, SC_CLOSE, MF_STRING, SYSID[:ITEM1], L("Item&1\tAlt+S"))
|
18
|
+
InsertMenu(hsys, SC_CLOSE, MF_SEPARATOR, 0, nil)
|
22
19
|
|
23
20
|
hbar = CreateMenu()
|
24
21
|
hmenu1 = CreatePopupMenu()
|
25
|
-
|
26
|
-
|
22
|
+
InsertMenu(hmenu1, -1, MF_STRING, ID[:ITEM1], L("Item&1\tAlt+I"))
|
23
|
+
InsertMenu(hbar, -1, MF_POPUP, hmenu1.to_i, L('Menu&1'))
|
27
24
|
SetMenu(hwnd, hbar)
|
28
25
|
|
29
26
|
accels = [
|
30
|
-
[FVIRTKEY | FALT, '
|
27
|
+
[FVIRTKEY | FALT, 'S'.ord, SYSID[:ITEM1]],
|
28
|
+
[FVIRTKEY | FALT, 'I'.ord, ID[:ITEM1]]
|
31
29
|
]
|
32
30
|
|
33
31
|
FFI::MemoryPointer.new(ACCEL, accels.count) { |paccels|
|
@@ -51,7 +49,7 @@ def onCreate(hwnd,
|
|
51
49
|
0, L('Button'), L('&Button1'), WS_CHILD | WS_CLIPSIBLINGS |
|
52
50
|
WS_VISIBLE | WS_TABSTOP,
|
53
51
|
*DPIAwareXY(10, 10, 100, 25),
|
54
|
-
hwnd, FFI::Pointer.new(
|
52
|
+
hwnd, FFI::Pointer.new(ID[:BUTTON1]), GetModuleHandle(nil), nil
|
55
53
|
)
|
56
54
|
|
57
55
|
SendMessage(hbtn1, WM_SETFONT, xtra[:hmf].to_i, 1)
|
@@ -59,14 +57,14 @@ def onCreate(hwnd,
|
|
59
57
|
CreateWindowEx(
|
60
58
|
0, L('Static'), L(''), WS_CHILD | WS_CLIPSIBLINGS,
|
61
59
|
0, 0, 0, 0,
|
62
|
-
hwnd, FFI::Pointer.new(
|
60
|
+
hwnd, FFI::Pointer.new(ID[:FOCUS]), GetModuleHandle(nil), nil
|
63
61
|
)
|
64
62
|
|
65
63
|
0
|
66
64
|
end
|
67
65
|
|
68
66
|
def onDestroy(hwnd)
|
69
|
-
xtra =
|
67
|
+
xtra = Util::Id2Ref[GetWindowLong(hwnd, GWL_USERDATA)]
|
70
68
|
|
71
69
|
DestroyAcceleratorTable(xtra[:haccel])
|
72
70
|
DeleteObject(xtra[:hmf])
|
@@ -78,7 +76,19 @@ def onActivate(hwnd,
|
|
78
76
|
state, minimized,
|
79
77
|
hother
|
80
78
|
)
|
81
|
-
SetFocus(GetDlgItem(hwnd,
|
79
|
+
SetFocus(GetDlgItem(hwnd, ID[:FOCUS])) if state != WA_INACTIVE
|
80
|
+
|
81
|
+
0
|
82
|
+
end
|
83
|
+
|
84
|
+
def onSysItem1(lParam,
|
85
|
+
hwnd
|
86
|
+
)
|
87
|
+
MessageBox(hwnd,
|
88
|
+
L(__method__.to_s),
|
89
|
+
APPNAME,
|
90
|
+
MB_ICONINFORMATION
|
91
|
+
)
|
82
92
|
|
83
93
|
0
|
84
94
|
end
|
@@ -101,8 +111,8 @@ def onItem1(verb,
|
|
101
111
|
raise 'WM_COMMAND hctl must be NULL for menu/accelerator' unless
|
102
112
|
hctl.null?
|
103
113
|
|
104
|
-
EnableWindow(GetDlgItem(hwnd,
|
105
|
-
EnableMenuItem(GetMenu(hwnd),
|
114
|
+
EnableWindow(GetDlgItem(hwnd, ID[:BUTTON1]), 1)
|
115
|
+
EnableMenuItem(GetMenu(hwnd), ID[:ITEM1], MF_GRAYED)
|
106
116
|
|
107
117
|
0
|
108
118
|
end
|
@@ -124,7 +134,7 @@ def onButton1(verb,
|
|
124
134
|
raise 'WM_COMMAND hctl must NOT be NULL for control' if
|
125
135
|
hctl.null?
|
126
136
|
|
127
|
-
EnableMenuItem(GetMenu(hwnd),
|
137
|
+
EnableMenuItem(GetMenu(hwnd), ID[:ITEM1], MF_ENABLED)
|
128
138
|
EnableWindow(hctl, 0)
|
129
139
|
|
130
140
|
0
|
@@ -156,19 +166,28 @@ begin
|
|
156
166
|
FFI::Pointer.new(lParam)
|
157
167
|
)
|
158
168
|
|
169
|
+
when WM_SYSCOMMAND
|
170
|
+
id = wParam & 0xfff0
|
171
|
+
|
172
|
+
case id
|
173
|
+
when SYSID[:ITEM1]
|
174
|
+
onSysItem1(lParam, hwnd)
|
175
|
+
end
|
159
176
|
when WM_COMMAND
|
160
177
|
id, verb = LOWORD(wParam), HIWORD(wParam)
|
161
178
|
hctl = FFI::Pointer.new(lParam)
|
162
179
|
|
163
180
|
case id
|
164
|
-
when
|
181
|
+
when ID[:ITEM1]
|
165
182
|
onItem1(verb, hctl, hwnd)
|
166
|
-
when
|
183
|
+
when ID[:BUTTON1]
|
167
184
|
onButton1(verb, hctl, hwnd)
|
168
185
|
end
|
169
186
|
end
|
170
187
|
|
171
188
|
result || DefWindowProc(hwnd, uMsg, wParam, lParam)
|
189
|
+
rescue SystemExit => ex
|
190
|
+
PostQuitMessage(ex.status)
|
172
191
|
rescue
|
173
192
|
case MessageBox(hwnd,
|
174
193
|
L(Util.FormatException($!)),
|
@@ -184,7 +203,7 @@ end
|
|
184
203
|
}
|
185
204
|
|
186
205
|
def main
|
187
|
-
xtra = WndExtra.new
|
206
|
+
Util.Id2RefTrack(xtra = WndExtra.new)
|
188
207
|
|
189
208
|
WNDCLASSEX.new { |wc|
|
190
209
|
wc[:cbSize] = wc.size
|
data/examples/Hello.rbw
CHANGED
data/examples/HelloOptout.rbw
CHANGED
data/examples/HelloTimeout.rbw
CHANGED
@@ -1,21 +1,20 @@
|
|
1
1
|
require 'ffi-wingui-core'
|
2
|
-
|
3
|
-
exit if defined?(Ocra)
|
2
|
+
require 'ffi-wingui-core/ocra'
|
4
3
|
|
5
4
|
include WinGUI
|
6
5
|
|
7
|
-
|
8
|
-
MessageBoxTimeout(nil,
|
9
|
-
L("Hello, world!\n\n(Disappearing in 3 seconds...)"),
|
10
|
-
L('Hello'),
|
11
|
-
MB_ICONINFORMATION,
|
12
|
-
0,
|
13
|
-
3000
|
14
|
-
)
|
15
|
-
else
|
6
|
+
unless respond_to?(:MessageBoxTimeout)
|
16
7
|
MessageBox(nil,
|
17
8
|
L('MessageBoxTimeout is not supported'),
|
18
9
|
nil,
|
19
10
|
MB_ICONERROR
|
20
|
-
)
|
11
|
+
); exit(-1)
|
21
12
|
end
|
13
|
+
|
14
|
+
MessageBoxTimeout(nil,
|
15
|
+
L("Hello, world!\n\n(Disappearing in 3 seconds...)"),
|
16
|
+
L('Hello'),
|
17
|
+
MB_ICONINFORMATION,
|
18
|
+
0,
|
19
|
+
3000
|
20
|
+
)
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'ffi-wingui-core'
|
2
|
+
require 'ffi-wingui-core/ocra'
|
3
|
+
|
4
|
+
include WinGUI
|
5
|
+
|
6
|
+
def onCreate(hwnd,
|
7
|
+
cs
|
8
|
+
)
|
9
|
+
SetLayeredWindowAttributes(hwnd, 0, 128, LWA_ALPHA)
|
10
|
+
|
11
|
+
0
|
12
|
+
end
|
13
|
+
|
14
|
+
def onDestroy(hwnd)
|
15
|
+
PostQuitMessage(0); 0
|
16
|
+
end
|
17
|
+
|
18
|
+
WindowProc = FFI::Function.new(:long,
|
19
|
+
[:pointer, :uint, :uint, :long],
|
20
|
+
convention: :stdcall
|
21
|
+
) { |hwnd, uMsg, wParam, lParam|
|
22
|
+
begin
|
23
|
+
result = case uMsg
|
24
|
+
when WM_CREATE
|
25
|
+
onCreate(hwnd, CREATESTRUCT.new(FFI::Pointer.new(lParam)))
|
26
|
+
when WM_DESTROY
|
27
|
+
onDestroy(hwnd)
|
28
|
+
end
|
29
|
+
|
30
|
+
result || DefWindowProc(hwnd, uMsg, wParam, lParam)
|
31
|
+
rescue SystemExit => ex
|
32
|
+
PostQuitMessage(ex.status)
|
33
|
+
rescue
|
34
|
+
case MessageBox(hwnd,
|
35
|
+
L(Util.FormatException($!)),
|
36
|
+
APPNAME,
|
37
|
+
MB_ABORTRETRYIGNORE | MB_ICONERROR
|
38
|
+
)
|
39
|
+
when IDABORT
|
40
|
+
PostQuitMessage(2)
|
41
|
+
when IDRETRY
|
42
|
+
retry
|
43
|
+
end
|
44
|
+
end
|
45
|
+
}
|
46
|
+
|
47
|
+
def main
|
48
|
+
WNDCLASSEX.new { |wc|
|
49
|
+
wc[:cbSize] = wc.size
|
50
|
+
wc[:lpfnWndProc] = WindowProc
|
51
|
+
wc[:hInstance] = GetModuleHandle(nil)
|
52
|
+
wc[:hIcon] = LoadIcon(nil, IDI_APPLICATION)
|
53
|
+
wc[:hCursor] = LoadCursor(nil, IDC_ARROW)
|
54
|
+
wc[:hbrBackground] = FFI::Pointer.new(
|
55
|
+
((WINVER == WINXP) ? COLOR_MENUBAR : COLOR_MENU) + 1
|
56
|
+
)
|
57
|
+
|
58
|
+
PWSTR(APPNAME) { |className|
|
59
|
+
wc[:lpszClassName] = className
|
60
|
+
|
61
|
+
DetonateLastError(0, :RegisterClassEx,
|
62
|
+
wc
|
63
|
+
)
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
hwnd = CreateWindowEx(
|
68
|
+
WS_EX_LAYERED, APPNAME, APPNAME, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
|
69
|
+
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
|
70
|
+
nil, nil, GetModuleHandle(nil), nil
|
71
|
+
)
|
72
|
+
|
73
|
+
raise "CreateWindowEx failed (last error: #{GetLastError()})" if
|
74
|
+
hwnd.null? && GetLastError() != 0
|
75
|
+
|
76
|
+
exit(0) if hwnd.null?
|
77
|
+
|
78
|
+
ShowWindow(hwnd, SW_SHOWNORMAL)
|
79
|
+
UpdateWindow(hwnd)
|
80
|
+
|
81
|
+
MSG.new { |msg|
|
82
|
+
until DetonateLastError(-1, :GetMessage,
|
83
|
+
msg, nil, 0, 0
|
84
|
+
) == 0
|
85
|
+
TranslateMessage(msg)
|
86
|
+
DispatchMessage(msg)
|
87
|
+
end
|
88
|
+
|
89
|
+
exit(msg[:wParam])
|
90
|
+
}
|
91
|
+
rescue
|
92
|
+
MessageBox(hwnd,
|
93
|
+
L(Util.FormatException($!)),
|
94
|
+
APPNAME,
|
95
|
+
MB_ICONERROR
|
96
|
+
); exit(1)
|
97
|
+
end
|
98
|
+
|
99
|
+
main
|
data/examples/LifeCycle.rbw
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
require 'ffi-wingui-core'
|
2
|
-
|
3
|
-
exit if defined?(Ocra)
|
2
|
+
require 'ffi-wingui-core/ocra'
|
4
3
|
|
5
4
|
include WinGUI
|
6
5
|
|
7
|
-
APPNAME = L(File.basename(__FILE__, '.rbw'))
|
8
|
-
|
9
6
|
def onCreate(hwnd,
|
10
7
|
cs
|
11
8
|
)
|
@@ -58,6 +55,8 @@ begin
|
|
58
55
|
end
|
59
56
|
|
60
57
|
result || DefWindowProc(hwnd, uMsg, wParam, lParam)
|
58
|
+
rescue SystemExit => ex
|
59
|
+
PostQuitMessage(ex.status)
|
61
60
|
rescue
|
62
61
|
case MessageBox(hwnd,
|
63
62
|
L(Util.FormatException($!)),
|
data/examples/LifeCycleNC.rbw
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
require 'ffi-wingui-core'
|
2
|
-
|
3
|
-
exit if defined?(Ocra)
|
2
|
+
require 'ffi-wingui-core/ocra'
|
4
3
|
|
5
4
|
include WinGUI
|
6
5
|
|
7
|
-
APPNAME = L(File.basename(__FILE__, '.rbw'))
|
8
|
-
|
9
6
|
def onNCCreate(hwnd,
|
10
7
|
cs
|
11
8
|
)
|
@@ -88,6 +85,8 @@ begin
|
|
88
85
|
end
|
89
86
|
|
90
87
|
result || DefWindowProc(hwnd, uMsg, wParam, lParam)
|
88
|
+
rescue SystemExit => ex
|
89
|
+
PostQuitMessage(ex.status)
|
91
90
|
rescue
|
92
91
|
case MessageBox(hwnd,
|
93
92
|
L(Util.FormatException($!)),
|
data/examples/Menu.rbw
CHANGED
@@ -1,65 +1,52 @@
|
|
1
1
|
require 'ffi-wingui-core'
|
2
|
-
|
3
|
-
exit if defined?(Ocra)
|
2
|
+
require 'ffi-wingui-core/ocra'
|
4
3
|
|
5
4
|
include WinGUI
|
6
5
|
|
7
|
-
APPNAME = L(File.basename(__FILE__, '.rbw'))
|
8
|
-
|
9
|
-
CMD_ITEM1 = WM_APP + 1
|
10
|
-
CMD_ITEM2 = CMD_ITEM1 + 1
|
11
|
-
CMD_ITEM3 = CMD_ITEM2 + 1
|
12
|
-
CMD_ITEM4 = CMD_ITEM3 + 1
|
13
|
-
CMD_ITEM5 = CMD_ITEM4 + 1
|
14
|
-
CMD_ITEM6 = CMD_ITEM5 + 1
|
15
|
-
CMD_ITEM7 = CMD_ITEM6 + 1
|
16
|
-
CMD_ITEM8 = CMD_ITEM7 + 1
|
17
|
-
CMD_ITEM9 = CMD_ITEM8 + 1
|
18
|
-
|
19
6
|
WndExtra = Struct.new(
|
20
7
|
:dummy
|
21
|
-
)
|
8
|
+
)
|
22
9
|
|
23
10
|
def onCreate(hwnd,
|
24
11
|
cs
|
25
12
|
)
|
26
|
-
xtra =
|
13
|
+
xtra = Util::Id2Ref[GetWindowLong(hwnd, GWL_USERDATA)]
|
27
14
|
|
28
15
|
hbar = CreateMenu()
|
29
16
|
hmenu1 = CreatePopupMenu()
|
30
|
-
|
31
|
-
SetMenuDefaultItem(hmenu1,
|
17
|
+
InsertMenu(hmenu1, -1, MF_STRING, ID[:ITEM1], L('Item&1'))
|
18
|
+
SetMenuDefaultItem(hmenu1, ID[:ITEM1], 0)
|
32
19
|
|
33
|
-
|
34
|
-
|
20
|
+
InsertMenu(hmenu1, -1, MF_STRING | MF_GRAYED, ID[:ITEM2], L('Item&2'))
|
21
|
+
InsertMenu(hmenu1, -1, MF_STRING | MF_CHECKED, ID[:ITEM3], L('Item&3'))
|
35
22
|
|
36
|
-
|
23
|
+
InsertMenu(hmenu1, -1, MF_SEPARATOR, 0, nil)
|
37
24
|
|
38
|
-
|
39
|
-
|
40
|
-
|
25
|
+
InsertMenu(hmenu1, -1, MF_STRING | MF_CHECKED | MFT_RADIOCHECK,
|
26
|
+
ID[:ITEM4], L('Item&4'))
|
27
|
+
InsertMenu(hmenu1, -1, MF_STRING, ID[:ITEM5], L('Item&5'))
|
41
28
|
|
42
|
-
|
29
|
+
InsertMenu(hmenu1, -1, MF_SEPARATOR, 0, nil)
|
43
30
|
|
44
31
|
hmenu2 = CreatePopupMenu()
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
32
|
+
InsertMenu(hmenu2, -1, MF_STRING | MF_CHECKED | MFT_RADIOCHECK,
|
33
|
+
ID[:ITEM6], L('Item&6'))
|
34
|
+
InsertMenu(hmenu2, -1, MF_STRING, ID[:ITEM7], L('Item&7'))
|
35
|
+
InsertMenu(hmenu1, -1, MF_POPUP, hmenu2.to_i, L('Menu&2'))
|
36
|
+
InsertMenu(hbar, -1, MF_POPUP, hmenu1.to_i, L('Menu&1'))
|
50
37
|
|
51
|
-
|
38
|
+
InsertMenu(hbar, -1, MF_STRING, ID[:ITEM8], L('Item&8'))
|
52
39
|
|
53
40
|
hmenu3 = CreatePopupMenu()
|
54
|
-
|
55
|
-
|
41
|
+
InsertMenu(hmenu3, -1, MF_STRING, ID[:ITEM9], L('Item&9'))
|
42
|
+
InsertMenu(hbar, -1, MF_POPUP | MF_RIGHTJUSTIFY, hmenu3.to_i, L('Menu&3'))
|
56
43
|
SetMenu(hwnd, hbar)
|
57
44
|
|
58
45
|
0
|
59
46
|
end
|
60
47
|
|
61
48
|
def onDestroy(hwnd)
|
62
|
-
xtra =
|
49
|
+
xtra = Util::Id2Ref[GetWindowLong(hwnd, GWL_USERDATA)]
|
63
50
|
|
64
51
|
PostQuitMessage(0); 0
|
65
52
|
end
|
@@ -68,9 +55,9 @@ def onItem1(verb,
|
|
68
55
|
hctl, hwnd
|
69
56
|
)
|
70
57
|
hbar = GetMenu(hwnd)
|
71
|
-
i2grayed = (GetMenuState(hbar,
|
58
|
+
i2grayed = (GetMenuState(hbar, ID[:ITEM2], 0) & MF_GRAYED) == MF_GRAYED
|
72
59
|
|
73
|
-
EnableMenuItem(hbar,
|
60
|
+
EnableMenuItem(hbar, ID[:ITEM2], (i2grayed) ? MF_ENABLED : MF_GRAYED)
|
74
61
|
|
75
62
|
0
|
76
63
|
end
|
@@ -91,9 +78,9 @@ def onItem3(verb,
|
|
91
78
|
hctl, hwnd
|
92
79
|
)
|
93
80
|
hbar = GetMenu(hwnd)
|
94
|
-
i3checked = (GetMenuState(hbar,
|
81
|
+
i3checked = (GetMenuState(hbar, ID[:ITEM3], 0) & MF_CHECKED) == MF_CHECKED
|
95
82
|
|
96
|
-
CheckMenuItem(hbar,
|
83
|
+
CheckMenuItem(hbar, ID[:ITEM3], (i3checked) ? MF_UNCHECKED : MF_CHECKED)
|
97
84
|
|
98
85
|
0
|
99
86
|
end
|
@@ -101,7 +88,7 @@ end
|
|
101
88
|
def onItem4(verb,
|
102
89
|
hctl, hwnd
|
103
90
|
)
|
104
|
-
CheckMenuRadioItem(GetMenu(hwnd),
|
91
|
+
CheckMenuRadioItem(GetMenu(hwnd), ID[:ITEM4], ID[:ITEM5], ID[:ITEM4], 0)
|
105
92
|
|
106
93
|
0
|
107
94
|
end
|
@@ -109,7 +96,7 @@ end
|
|
109
96
|
def onItem5(verb,
|
110
97
|
hctl, hwnd
|
111
98
|
)
|
112
|
-
CheckMenuRadioItem(GetMenu(hwnd),
|
99
|
+
CheckMenuRadioItem(GetMenu(hwnd), ID[:ITEM4], ID[:ITEM5], ID[:ITEM5], 0)
|
113
100
|
|
114
101
|
0
|
115
102
|
end
|
@@ -117,7 +104,7 @@ end
|
|
117
104
|
def onItem6(verb,
|
118
105
|
hctl, hwnd
|
119
106
|
)
|
120
|
-
CheckMenuRadioItem(GetMenu(hwnd),
|
107
|
+
CheckMenuRadioItem(GetMenu(hwnd), ID[:ITEM6], ID[:ITEM7], ID[:ITEM6], 0)
|
121
108
|
|
122
109
|
0
|
123
110
|
end
|
@@ -125,7 +112,7 @@ end
|
|
125
112
|
def onItem7(verb,
|
126
113
|
hctl, hwnd
|
127
114
|
)
|
128
|
-
CheckMenuRadioItem(GetMenu(hwnd),
|
115
|
+
CheckMenuRadioItem(GetMenu(hwnd), ID[:ITEM6], ID[:ITEM7], ID[:ITEM7], 0)
|
129
116
|
|
130
117
|
0
|
131
118
|
end
|
@@ -146,12 +133,12 @@ def onItem9(verb,
|
|
146
133
|
hctl, hwnd
|
147
134
|
)
|
148
135
|
hbar = GetMenu(hwnd)
|
149
|
-
i2grayed = (GetMenuState(hbar,
|
150
|
-
i3checked = (GetMenuState(hbar,
|
151
|
-
i4checked = (GetMenuState(hbar,
|
152
|
-
i5checked = (GetMenuState(hbar,
|
153
|
-
i6checked = (GetMenuState(hbar,
|
154
|
-
i7checked = (GetMenuState(hbar,
|
136
|
+
i2grayed = (GetMenuState(hbar, ID[:ITEM2], 0) & MF_GRAYED) == MF_GRAYED
|
137
|
+
i3checked = (GetMenuState(hbar, ID[:ITEM3], 0) & MF_CHECKED) == MF_CHECKED
|
138
|
+
i4checked = (GetMenuState(hbar, ID[:ITEM4], 0) & MF_CHECKED) == MF_CHECKED
|
139
|
+
i5checked = (GetMenuState(hbar, ID[:ITEM5], 0) & MF_CHECKED) == MF_CHECKED
|
140
|
+
i6checked = (GetMenuState(hbar, ID[:ITEM6], 0) & MF_CHECKED) == MF_CHECKED
|
141
|
+
i7checked = (GetMenuState(hbar, ID[:ITEM7], 0) & MF_CHECKED) == MF_CHECKED
|
155
142
|
|
156
143
|
MessageBox(hwnd,
|
157
144
|
L("
|
@@ -194,28 +181,30 @@ begin
|
|
194
181
|
hctl = FFI::Pointer.new(lParam)
|
195
182
|
|
196
183
|
case id
|
197
|
-
when
|
184
|
+
when ID[:ITEM1]
|
198
185
|
onItem1(verb, hctl, hwnd)
|
199
|
-
when
|
186
|
+
when ID[:ITEM2]
|
200
187
|
onItem2(verb, hctl, hwnd)
|
201
|
-
when
|
188
|
+
when ID[:ITEM3]
|
202
189
|
onItem3(verb, hctl, hwnd)
|
203
|
-
when
|
190
|
+
when ID[:ITEM4]
|
204
191
|
onItem4(verb, hctl, hwnd)
|
205
|
-
when
|
192
|
+
when ID[:ITEM5]
|
206
193
|
onItem5(verb, hctl, hwnd)
|
207
|
-
when
|
194
|
+
when ID[:ITEM6]
|
208
195
|
onItem6(verb, hctl, hwnd)
|
209
|
-
when
|
196
|
+
when ID[:ITEM7]
|
210
197
|
onItem7(verb, hctl, hwnd)
|
211
|
-
when
|
198
|
+
when ID[:ITEM8]
|
212
199
|
onItem8(verb, hctl, hwnd)
|
213
|
-
when
|
200
|
+
when ID[:ITEM9]
|
214
201
|
onItem9(verb, hctl, hwnd)
|
215
202
|
end
|
216
203
|
end
|
217
204
|
|
218
205
|
result || DefWindowProc(hwnd, uMsg, wParam, lParam)
|
206
|
+
rescue SystemExit => ex
|
207
|
+
PostQuitMessage(ex.status)
|
219
208
|
rescue
|
220
209
|
case MessageBox(hwnd,
|
221
210
|
L(Util.FormatException($!)),
|
@@ -231,7 +220,7 @@ end
|
|
231
220
|
}
|
232
221
|
|
233
222
|
def main
|
234
|
-
xtra = WndExtra.new
|
223
|
+
Util.Id2RefTrack(xtra = WndExtra.new)
|
235
224
|
|
236
225
|
WNDCLASSEX.new { |wc|
|
237
226
|
wc[:cbSize] = wc.size
|