fzeet 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. data/examples/Dialog/Dialog.rbw +2 -2
  2. data/examples/Raw/UIRibbon/Command.dll +0 -0
  3. data/examples/Raw/UIRibbon/Command.rb +17 -11
  4. data/examples/Raw/UIRibbon/Command.xml +6 -0
  5. data/examples/Raw/UIRibbon/Minimal.dll +0 -0
  6. data/examples/Raw/UIRibbon/Minimal.rb +10 -6
  7. data/examples/Raw/UIRibbon/Minimal.xml +4 -0
  8. data/examples/UIRibbon/Color.rbw +12 -0
  9. data/examples/UIRibbon/Command.dll +0 -0
  10. data/examples/UIRibbon/Command.rb +17 -11
  11. data/examples/UIRibbon/Command.xml +6 -0
  12. data/examples/UIRibbon/ContextPopup.dll +0 -0
  13. data/examples/UIRibbon/ContextPopup.rb +23 -0
  14. data/examples/UIRibbon/ContextPopup.rbw +12 -0
  15. data/examples/UIRibbon/ContextPopup.xml +83 -0
  16. data/examples/UIRibbon/Minimal.dll +0 -0
  17. data/examples/UIRibbon/Minimal.rb +10 -6
  18. data/examples/UIRibbon/Minimal.xml +4 -0
  19. data/examples/Version.rbw +5 -0
  20. data/examples/res/go-next-big.bmp +0 -0
  21. data/examples/res/go-previous-big.bmp +0 -0
  22. data/lib/fzeet/Accelerator.rb +23 -3
  23. data/lib/fzeet/Application.rb +1 -1
  24. data/lib/fzeet/{common.rb → Common.rb} +2 -50
  25. data/lib/fzeet/{ControlButton.rb → Control/Button.rb} +1 -1
  26. data/lib/fzeet/{ControlCommon.rb → Control/Common.rb} +1 -1
  27. data/lib/fzeet/Control.rb +1 -1
  28. data/lib/fzeet/Dialog/Common.rb +5 -0
  29. data/lib/fzeet/{DialogFileDialog.rb → Dialog/FileDialog.rb} +1 -43
  30. data/lib/fzeet/Dialog/FolderDialog.rb +45 -0
  31. data/lib/fzeet/Dialog.rb +2 -1
  32. data/lib/fzeet/Menu.rb +77 -77
  33. data/lib/fzeet/UIRibbon.rb +86 -1
  34. data/lib/fzeet/{WindowCommon.rb → Window/Common.rb} +52 -2
  35. data/lib/fzeet/{WindowDialog.rb → Window/Dialog.rb} +6 -6
  36. data/lib/fzeet/{WindowWindow.rb → Window/Window.rb} +1 -1
  37. data/lib/fzeet/{WindowMethods.rb → Window/WindowMethods.rb} +49 -43
  38. data/lib/fzeet/Window.rb +2 -2
  39. data/lib/fzeet/windows/com.rb +97 -15
  40. data/lib/fzeet/windows/{comctlbutton.rb → comctl/Button.rb} +1 -1
  41. data/lib/fzeet/windows/{comctlcommon.rb → comctl/Common.rb} +1 -1
  42. data/lib/fzeet/windows/comctl.rb +1 -1
  43. data/lib/fzeet/windows/{comdlgcommon.rb → comdlg/Common.rb} +1 -1
  44. data/lib/fzeet/windows/{comdlgofn.rb → comdlg/FileDialog.rb} +1 -1
  45. data/lib/fzeet/windows/comdlg.rb +1 -1
  46. data/lib/fzeet/windows/common.rb +80 -5
  47. data/lib/fzeet/windows/gdi.rb +30 -0
  48. data/lib/fzeet/windows/kernel.rb +74 -21
  49. data/lib/fzeet/windows/ole.rb +60 -0
  50. data/lib/fzeet/windows/propsys.rb +40 -0
  51. data/lib/fzeet/windows/shell/Common.rb +10 -0
  52. data/lib/fzeet/windows/shell/FolderDialog.rb +39 -0
  53. data/lib/fzeet/windows/shell.rb +1 -43
  54. data/lib/fzeet/windows/uiribbon.rb +275 -18
  55. data/lib/fzeet/windows/user/Accelerator.rb +182 -0
  56. data/lib/fzeet/windows/user/Common.rb +33 -0
  57. data/lib/fzeet/windows/{userctlbutton.rb → user/Control/Button.rb} +1 -1
  58. data/lib/fzeet/windows/{userctlcommon.rb → user/Control/Common.rb} +1 -1
  59. data/lib/fzeet/windows/user/Control.rb +1 -0
  60. data/lib/fzeet/windows/user/Menu.rb +115 -0
  61. data/lib/fzeet/windows/{usermsg.rb → user/Message.rb} +1 -3
  62. data/lib/fzeet/windows/{usermbox.rb → user/MessageBox.rb} +1 -5
  63. data/lib/fzeet/windows/user/SystemParametersInfo.rb +244 -0
  64. data/lib/fzeet/windows/{userwnd.rb → user/Window.rb} +70 -38
  65. data/lib/fzeet/windows/user.rb +7 -7
  66. data/lib/fzeet/windows.rb +2 -73
  67. data/lib/fzeet.rb +1 -1
  68. metadata +39 -27
  69. data/lib/fzeet/DialogCommon.rb +0 -5
  70. data/lib/fzeet/windows/usercommon.rb +0 -8
  71. data/lib/fzeet/windows/userctl.rb +0 -1
  72. data/lib/fzeet/windows/userkbd.rb +0 -20
  73. data/lib/fzeet/windows/usermenu.rb +0 -50
  74. data/lib/fzeet/windows/userspi.rb +0 -29
  75. /data/examples/Dialog/{FileDialog.rbw → FileAndFolderDialog.rbw} +0 -0
@@ -1,8 +1,7 @@
1
- require_relative 'usercommon'
1
+ require_relative 'Common'
2
2
 
3
3
  module Fzeet
4
4
  module Windows
5
- #{ MB_xxx
6
5
  MB_OK = 0x00000000
7
6
  MB_OKCANCEL = 0x00000001
8
7
  MB_ABORTRETRYIGNORE = 0x00000002
@@ -40,9 +39,7 @@ module Fzeet
40
39
  MB_DEFMASK = 0x00000F00
41
40
  MB_MODEMASK = 0x00003000
42
41
  MB_MISCMASK = 0x0000C000
43
- #}
44
42
 
45
- #{ IDxxx
46
43
  IDOK = 1
47
44
  IDCANCEL = 2
48
45
  IDABORT = 3
@@ -55,7 +52,6 @@ module Fzeet
55
52
  IDTRYAGAIN = 10
56
53
  IDCONTINUE = 11
57
54
  IDTIMEOUT = 32000
58
- #}
59
55
 
60
56
  attach_function :MessageBox, :MessageBoxA, [:pointer, :string, :string, :uint], :int
61
57
  end
@@ -0,0 +1,244 @@
1
+ require_relative 'Common'
2
+
3
+ module Fzeet
4
+ module Windows
5
+ SPI_GETBEEP = 0x0001
6
+ SPI_SETBEEP = 0x0002
7
+ SPI_GETMOUSE = 0x0003
8
+ SPI_SETMOUSE = 0x0004
9
+ SPI_GETBORDER = 0x0005
10
+ SPI_SETBORDER = 0x0006
11
+ SPI_GETKEYBOARDSPEED = 0x000A
12
+ SPI_SETKEYBOARDSPEED = 0x000B
13
+ SPI_LANGDRIVER = 0x000C
14
+ SPI_ICONHORIZONTALSPACING = 0x000D
15
+ SPI_GETSCREENSAVETIMEOUT = 0x000E
16
+ SPI_SETSCREENSAVETIMEOUT = 0x000F
17
+ SPI_GETSCREENSAVEACTIVE = 0x0010
18
+ SPI_SETSCREENSAVEACTIVE = 0x0011
19
+ SPI_GETGRIDGRANULARITY = 0x0012
20
+ SPI_SETGRIDGRANULARITY = 0x0013
21
+ SPI_SETDESKWALLPAPER = 0x0014
22
+ SPI_SETDESKPATTERN = 0x0015
23
+ SPI_GETKEYBOARDDELAY = 0x0016
24
+ SPI_SETKEYBOARDDELAY = 0x0017
25
+ SPI_ICONVERTICALSPACING = 0x0018
26
+ SPI_GETICONTITLEWRAP = 0x0019
27
+ SPI_SETICONTITLEWRAP = 0x001A
28
+ SPI_GETMENUDROPALIGNMENT = 0x001B
29
+ SPI_SETMENUDROPALIGNMENT = 0x001C
30
+ SPI_SETDOUBLECLKWIDTH = 0x001D
31
+ SPI_SETDOUBLECLKHEIGHT = 0x001E
32
+ SPI_GETICONTITLELOGFONT = 0x001F
33
+ SPI_SETDOUBLECLICKTIME = 0x0020
34
+ SPI_SETMOUSEBUTTONSWAP = 0x0021
35
+ SPI_SETICONTITLELOGFONT = 0x0022
36
+ SPI_GETFASTTASKSWITCH = 0x0023
37
+ SPI_SETFASTTASKSWITCH = 0x0024
38
+ SPI_SETDRAGFULLWINDOWS = 0x0025
39
+ SPI_GETDRAGFULLWINDOWS = 0x0026
40
+ SPI_GETNONCLIENTMETRICS = 0x0029
41
+ SPI_SETNONCLIENTMETRICS = 0x002A
42
+ SPI_GETMINIMIZEDMETRICS = 0x002B
43
+ SPI_SETMINIMIZEDMETRICS = 0x002C
44
+ SPI_GETICONMETRICS = 0x002D
45
+ SPI_SETICONMETRICS = 0x002E
46
+ SPI_SETWORKAREA = 0x002F
47
+ SPI_GETWORKAREA = 0x0030
48
+ SPI_SETPENWINDOWS = 0x0031
49
+ SPI_GETHIGHCONTRAST = 0x0042
50
+ SPI_SETHIGHCONTRAST = 0x0043
51
+ SPI_GETKEYBOARDPREF = 0x0044
52
+ SPI_SETKEYBOARDPREF = 0x0045
53
+ SPI_GETSCREENREADER = 0x0046
54
+ SPI_SETSCREENREADER = 0x0047
55
+ SPI_GETANIMATION = 0x0048
56
+ SPI_SETANIMATION = 0x0049
57
+ SPI_GETFONTSMOOTHING = 0x004A
58
+ SPI_SETFONTSMOOTHING = 0x004B
59
+ SPI_SETDRAGWIDTH = 0x004C
60
+ SPI_SETDRAGHEIGHT = 0x004D
61
+ SPI_SETHANDHELD = 0x004E
62
+ SPI_GETLOWPOWERTIMEOUT = 0x004F
63
+ SPI_GETPOWEROFFTIMEOUT = 0x0050
64
+ SPI_SETLOWPOWERTIMEOUT = 0x0051
65
+ SPI_SETPOWEROFFTIMEOUT = 0x0052
66
+ SPI_GETLOWPOWERACTIVE = 0x0053
67
+ SPI_GETPOWEROFFACTIVE = 0x0054
68
+ SPI_SETLOWPOWERACTIVE = 0x0055
69
+ SPI_SETPOWEROFFACTIVE = 0x0056
70
+ SPI_SETCURSORS = 0x0057
71
+ SPI_SETICONS = 0x0058
72
+ SPI_GETDEFAULTINPUTLANG = 0x0059
73
+ SPI_SETDEFAULTINPUTLANG = 0x005A
74
+ SPI_SETLANGTOGGLE = 0x005B
75
+ SPI_GETWINDOWSEXTENSION = 0x005C
76
+ SPI_SETMOUSETRAILS = 0x005D
77
+ SPI_GETMOUSETRAILS = 0x005E
78
+ SPI_SETSCREENSAVERRUNNING = 0x0061
79
+ SPI_SCREENSAVERRUNNING = SPI_SETSCREENSAVERRUNNING
80
+ SPI_GETFILTERKEYS = 0x0032
81
+ SPI_SETFILTERKEYS = 0x0033
82
+ SPI_GETTOGGLEKEYS = 0x0034
83
+ SPI_SETTOGGLEKEYS = 0x0035
84
+ SPI_GETMOUSEKEYS = 0x0036
85
+ SPI_SETMOUSEKEYS = 0x0037
86
+ SPI_GETSHOWSOUNDS = 0x0038
87
+ SPI_SETSHOWSOUNDS = 0x0039
88
+ SPI_GETSTICKYKEYS = 0x003A
89
+ SPI_SETSTICKYKEYS = 0x003B
90
+ SPI_GETACCESSTIMEOUT = 0x003C
91
+ SPI_SETACCESSTIMEOUT = 0x003D
92
+ SPI_GETSERIALKEYS = 0x003E
93
+ SPI_SETSERIALKEYS = 0x003F
94
+ SPI_GETSOUNDSENTRY = 0x0040
95
+ SPI_SETSOUNDSENTRY = 0x0041
96
+ SPI_GETSNAPTODEFBUTTON = 0x005F
97
+ SPI_SETSNAPTODEFBUTTON = 0x0060
98
+ SPI_GETMOUSEHOVERWIDTH = 0x0062
99
+ SPI_SETMOUSEHOVERWIDTH = 0x0063
100
+ SPI_GETMOUSEHOVERHEIGHT = 0x0064
101
+ SPI_SETMOUSEHOVERHEIGHT = 0x0065
102
+ SPI_GETMOUSEHOVERTIME = 0x0066
103
+ SPI_SETMOUSEHOVERTIME = 0x0067
104
+ SPI_GETWHEELSCROLLLINES = 0x0068
105
+ SPI_SETWHEELSCROLLLINES = 0x0069
106
+ SPI_GETMENUSHOWDELAY = 0x006A
107
+ SPI_SETMENUSHOWDELAY = 0x006B
108
+ SPI_GETWHEELSCROLLCHARS = 0x006C
109
+ SPI_SETWHEELSCROLLCHARS = 0x006D
110
+ SPI_GETSHOWIMEUI = 0x006E
111
+ SPI_SETSHOWIMEUI = 0x006F
112
+ SPI_GETMOUSESPEED = 0x0070
113
+ SPI_SETMOUSESPEED = 0x0071
114
+ SPI_GETSCREENSAVERRUNNING = 0x0072
115
+ SPI_GETDESKWALLPAPER = 0x0073
116
+ SPI_GETAUDIODESCRIPTION = 0x0074
117
+ SPI_SETAUDIODESCRIPTION = 0x0075
118
+ SPI_GETSCREENSAVESECURE = 0x0076
119
+ SPI_SETSCREENSAVESECURE = 0x0077
120
+ SPI_GETHUNGAPPTIMEOUT = 0x0078
121
+ SPI_SETHUNGAPPTIMEOUT = 0x0079
122
+ SPI_GETWAITTOKILLTIMEOUT = 0x007A
123
+ SPI_SETWAITTOKILLTIMEOUT = 0x007B
124
+ SPI_GETWAITTOKILLSERVICETIMEOUT = 0x007C
125
+ SPI_SETWAITTOKILLSERVICETIMEOUT = 0x007D
126
+ SPI_GETMOUSEDOCKTHRESHOLD = 0x007E
127
+ SPI_SETMOUSEDOCKTHRESHOLD = 0x007F
128
+ SPI_GETPENDOCKTHRESHOLD = 0x0080
129
+ SPI_SETPENDOCKTHRESHOLD = 0x0081
130
+ SPI_GETWINARRANGING = 0x0082
131
+ SPI_SETWINARRANGING = 0x0083
132
+ SPI_GETMOUSEDRAGOUTTHRESHOLD = 0x0084
133
+ SPI_SETMOUSEDRAGOUTTHRESHOLD = 0x0085
134
+ SPI_GETPENDRAGOUTTHRESHOLD = 0x0086
135
+ SPI_SETPENDRAGOUTTHRESHOLD = 0x0087
136
+ SPI_GETMOUSESIDEMOVETHRESHOLD = 0x0088
137
+ SPI_SETMOUSESIDEMOVETHRESHOLD = 0x0089
138
+ SPI_GETPENSIDEMOVETHRESHOLD = 0x008A
139
+ SPI_SETPENSIDEMOVETHRESHOLD = 0x008B
140
+ SPI_GETDRAGFROMMAXIMIZE = 0x008C
141
+ SPI_SETDRAGFROMMAXIMIZE = 0x008D
142
+ SPI_GETSNAPSIZING = 0x008E
143
+ SPI_SETSNAPSIZING = 0x008F
144
+ SPI_GETDOCKMOVING = 0x0090
145
+ SPI_SETDOCKMOVING = 0x0091
146
+ SPI_GETACTIVEWINDOWTRACKING = 0x1000
147
+ SPI_SETACTIVEWINDOWTRACKING = 0x1001
148
+ SPI_GETMENUANIMATION = 0x1002
149
+ SPI_SETMENUANIMATION = 0x1003
150
+ SPI_GETCOMBOBOXANIMATION = 0x1004
151
+ SPI_SETCOMBOBOXANIMATION = 0x1005
152
+ SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006
153
+ SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007
154
+ SPI_GETGRADIENTCAPTIONS = 0x1008
155
+ SPI_SETGRADIENTCAPTIONS = 0x1009
156
+ SPI_GETKEYBOARDCUES = 0x100A
157
+ SPI_SETKEYBOARDCUES = 0x100B
158
+ SPI_GETMENUUNDERLINES = SPI_GETKEYBOARDCUES
159
+ SPI_SETMENUUNDERLINES = SPI_SETKEYBOARDCUES
160
+ SPI_GETACTIVEWNDTRKZORDER = 0x100C
161
+ SPI_SETACTIVEWNDTRKZORDER = 0x100D
162
+ SPI_GETHOTTRACKING = 0x100E
163
+ SPI_SETHOTTRACKING = 0x100F
164
+ SPI_GETMENUFADE = 0x1012
165
+ SPI_SETMENUFADE = 0x1013
166
+ SPI_GETSELECTIONFADE = 0x1014
167
+ SPI_SETSELECTIONFADE = 0x1015
168
+ SPI_GETTOOLTIPANIMATION = 0x1016
169
+ SPI_SETTOOLTIPANIMATION = 0x1017
170
+ SPI_GETTOOLTIPFADE = 0x1018
171
+ SPI_SETTOOLTIPFADE = 0x1019
172
+ SPI_GETCURSORSHADOW = 0x101A
173
+ SPI_SETCURSORSHADOW = 0x101B
174
+ SPI_GETMOUSESONAR = 0x101C
175
+ SPI_SETMOUSESONAR = 0x101D
176
+ SPI_GETMOUSECLICKLOCK = 0x101E
177
+ SPI_SETMOUSECLICKLOCK = 0x101F
178
+ SPI_GETMOUSEVANISH = 0x1020
179
+ SPI_SETMOUSEVANISH = 0x1021
180
+ SPI_GETFLATMENU = 0x1022
181
+ SPI_SETFLATMENU = 0x1023
182
+ SPI_GETDROPSHADOW = 0x1024
183
+ SPI_SETDROPSHADOW = 0x1025
184
+ SPI_GETBLOCKSENDINPUTRESETS = 0x1026
185
+ SPI_SETBLOCKSENDINPUTRESETS = 0x1027
186
+ SPI_GETUIEFFECTS = 0x103E
187
+ SPI_SETUIEFFECTS = 0x103F
188
+ SPI_GETDISABLEOVERLAPPEDCONTENT = 0x1040
189
+ SPI_SETDISABLEOVERLAPPEDCONTENT = 0x1041
190
+ SPI_GETCLIENTAREAANIMATION = 0x1042
191
+ SPI_SETCLIENTAREAANIMATION = 0x1043
192
+ SPI_GETCLEARTYPE = 0x1048
193
+ SPI_SETCLEARTYPE = 0x1049
194
+ SPI_GETSPEECHRECOGNITION = 0x104A
195
+ SPI_SETSPEECHRECOGNITION = 0x104B
196
+ SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000
197
+ SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001
198
+ SPI_GETACTIVEWNDTRKTIMEOUT = 0x2002
199
+ SPI_SETACTIVEWNDTRKTIMEOUT = 0x2003
200
+ SPI_GETFOREGROUNDFLASHCOUNT = 0x2004
201
+ SPI_SETFOREGROUNDFLASHCOUNT = 0x2005
202
+ SPI_GETCARETWIDTH = 0x2006
203
+ SPI_SETCARETWIDTH = 0x2007
204
+ SPI_GETMOUSECLICKLOCKTIME = 0x2008
205
+ SPI_SETMOUSECLICKLOCKTIME = 0x2009
206
+ SPI_GETFONTSMOOTHINGTYPE = 0x200A
207
+ SPI_SETFONTSMOOTHINGTYPE = 0x200B
208
+ SPI_GETFONTSMOOTHINGCONTRAST = 0x200C
209
+ SPI_SETFONTSMOOTHINGCONTRAST = 0x200D
210
+ SPI_GETFOCUSBORDERWIDTH = 0x200E
211
+ SPI_SETFOCUSBORDERWIDTH = 0x200F
212
+ SPI_GETFOCUSBORDERHEIGHT = 0x2010
213
+ SPI_SETFOCUSBORDERHEIGHT = 0x2011
214
+ SPI_GETFONTSMOOTHINGORIENTATION = 0x2012
215
+ SPI_SETFONTSMOOTHINGORIENTATION = 0x2013
216
+ SPI_GETMINIMUMHITRADIUS = 0x2014
217
+ SPI_SETMINIMUMHITRADIUS = 0x2015
218
+ SPI_GETMESSAGEDURATION = 0x2016
219
+ SPI_SETMESSAGEDURATION = 0x2017
220
+
221
+ class NONCLIENTMETRICS < FFI::Struct
222
+ layout *[
223
+ :cbSize, :uint,
224
+ :iBorderWidth, :int,
225
+ :iScrollWidth, :int,
226
+ :iScrollHeight, :int,
227
+ :iCaptionWidth, :int,
228
+ :iCaptionHeight, :int,
229
+ :lfCaptionFont, LOGFONT,
230
+ :iSmCaptionWidth, :int,
231
+ :iSmCaptionHeight, :int,
232
+ :lfSmCaptionFont, LOGFONT,
233
+ :iMenuWidth, :int,
234
+ :iMenuHeight, :int,
235
+ :lfMenuFont, LOGFONT,
236
+ :lfStatusFont, LOGFONT,
237
+ :lfMessageFont, LOGFONT,
238
+ (WINVER.AtLeastWindowsVista?) ? [:iPaddedBorderWidth, :int] : nil
239
+ ].flatten.compact
240
+ end
241
+
242
+ attach_function :SystemParametersInfo, :SystemParametersInfoA, [:uint, :uint, :pointer, :uint], :int
243
+ end
244
+ end
@@ -1,7 +1,21 @@
1
- require_relative 'usercommon'
1
+ require_relative 'Common'
2
2
 
3
3
  module Fzeet
4
4
  module Windows
5
+ CS_VREDRAW = 0x0001
6
+ CS_HREDRAW = 0x0002
7
+ CS_DBLCLKS = 0x0008
8
+ CS_OWNDC = 0x0020
9
+ CS_CLASSDC = 0x0040
10
+ CS_PARENTDC = 0x0080
11
+ CS_NOCLOSE = 0x0200
12
+ CS_SAVEBITS = 0x0800
13
+ CS_BYTEALIGNCLIENT = 0x1000
14
+ CS_BYTEALIGNWINDOW = 0x2000
15
+ CS_GLOBALCLASS = 0x4000
16
+ CS_IME = 0x00010000
17
+ CS_DROPSHADOW = 0x00020000
18
+
5
19
  callback :WNDPROC, [:pointer, :uint, :uint, :long], :long
6
20
 
7
21
  attach_function :DefWindowProc, :DefWindowProcA, [:pointer, :uint, :uint, :long], :long
@@ -10,7 +24,6 @@ module Fzeet
10
24
 
11
25
  attach_function :DefDlgProc, :DefDlgProcA, [:pointer, :uint, :uint, :long], :long
12
26
 
13
- #{ IDI_xxx
14
27
  IDI_APPLICATION = FFI::Pointer.new(32512)
15
28
  IDI_HAND = FFI::Pointer.new(32513)
16
29
  IDI_QUESTION = FFI::Pointer.new(32514)
@@ -21,11 +34,9 @@ module Fzeet
21
34
  IDI_WARNING = IDI_EXCLAMATION
22
35
  IDI_ERROR = IDI_HAND
23
36
  IDI_INFORMATION = IDI_ASTERISK
24
- #}
25
37
 
26
38
  attach_function :LoadIcon, :LoadIconA, [:pointer, :pointer], :pointer
27
39
 
28
- #{ IDC_xxx
29
40
  IDC_ARROW = FFI::Pointer.new(32512)
30
41
  IDC_IBEAM = FFI::Pointer.new(32513)
31
42
  IDC_WAIT = FFI::Pointer.new(32514)
@@ -42,18 +53,9 @@ module Fzeet
42
53
  IDC_HAND = FFI::Pointer.new(32649)
43
54
  IDC_APPSTARTING = FFI::Pointer.new(32650)
44
55
  IDC_HELP = FFI::Pointer.new(32651)
45
- #}
46
56
 
47
57
  attach_function :LoadCursor, :LoadCursorA, [:pointer, :pointer], :pointer
48
58
 
49
- IMAGE_BITMAP = 0
50
-
51
- LR_LOADFROMFILE = 0x00000010
52
- LR_CREATEDIBSECTION = 0x00002000
53
-
54
- attach_function :LoadImage, :LoadImageA, [:pointer, :string, :uint, :int, :int, :uint], :pointer
55
-
56
- #{ COLOR_xxx
57
59
  COLOR_SCROLLBAR = 0
58
60
  COLOR_BACKGROUND = 1
59
61
  COLOR_ACTIVECAPTION = 2
@@ -90,9 +92,7 @@ module Fzeet
90
92
  COLOR_3DHIGHLIGHT = COLOR_BTNHIGHLIGHT
91
93
  COLOR_3DHILIGHT = COLOR_BTNHIGHLIGHT
92
94
  COLOR_BTNHILIGHT = COLOR_BTNHIGHLIGHT
93
- #}
94
95
 
95
- #{ CTLCOLOR_xxx
96
96
  CTLCOLOR_MSGBOX = 0
97
97
  CTLCOLOR_EDIT = 1
98
98
  CTLCOLOR_LISTBOX = 2
@@ -101,7 +101,6 @@ module Fzeet
101
101
  CTLCOLOR_SCROLLBAR = 5
102
102
  CTLCOLOR_STATIC = 6
103
103
  CTLCOLOR_MAX = 7
104
- #}
105
104
 
106
105
  class WNDCLASSEX < FFI::Struct
107
106
  layout \
@@ -121,7 +120,28 @@ module Fzeet
121
120
 
122
121
  attach_function :RegisterClassEx, :RegisterClassExA, [:pointer], :ushort
123
122
 
124
- #{ HWND_xxx
123
+ GCL_MENUNAME = -8
124
+ GCL_HBRBACKGROUND = -10
125
+ GCL_HCURSOR = -12
126
+ GCL_HICON = -14
127
+ GCL_HMODULE = -16
128
+ GCL_CBWNDEXTRA = -18
129
+ GCL_CBCLSEXTRA = -20
130
+ GCL_WNDPROC = -24
131
+ GCL_STYLE = -26
132
+ GCL_HICONSM = -34
133
+
134
+ GCLP_MENUNAME = -8
135
+ GCLP_HBRBACKGROUND = -10
136
+ GCLP_HCURSOR = -12
137
+ GCLP_HICON = -14
138
+ GCLP_HMODULE = -16
139
+ GCLP_WNDPROC = -24
140
+ GCLP_HICONSM = -34
141
+
142
+ attach_function :GetClassLong, :GetClassLongA, [:pointer, :int], :ulong
143
+ attach_function :SetClassLong, :SetClassLongA, [:pointer, :int, :long], :ulong
144
+
125
145
  HWND_BROADCAST = FFI::Pointer.new(0xffff)
126
146
  HWND_MESSAGE = FFI::Pointer.new(-3)
127
147
  HWND_DESKTOP = FFI::Pointer.new(0)
@@ -129,9 +149,7 @@ module Fzeet
129
149
  HWND_BOTTOM = FFI::Pointer.new(1)
130
150
  HWND_TOPMOST = FFI::Pointer.new(-1)
131
151
  HWND_NOTOPMOST = FFI::Pointer.new(-2)
132
- #}
133
152
 
134
- #{ WS_xxx
135
153
  WS_OVERLAPPED = 0x00000000
136
154
  WS_POPUP = 0x80000000
137
155
  WS_CHILD = 0x40000000
@@ -160,9 +178,7 @@ module Fzeet
160
178
  WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU
161
179
  WS_CHILDWINDOW = WS_CHILD
162
180
  WS_ACTIVECAPTION = 0x0001
163
- #}
164
181
 
165
- #{ WS_EX_xxx
166
182
  WS_EX_DLGMODALFRAME = 0x00000001
167
183
  WS_EX_NOPARENTNOTIFY = 0x00000004
168
184
  WS_EX_TOPMOST = 0x00000008
@@ -189,7 +205,6 @@ module Fzeet
189
205
  WS_EX_LAYOUTRTL = 0x00400000
190
206
  WS_EX_COMPOSITED = 0x02000000
191
207
  WS_EX_NOACTIVATE = 0x08000000
192
- #}
193
208
 
194
209
  CW_USEDEFAULT = -0x80000000
195
210
 
@@ -210,10 +225,8 @@ module Fzeet
210
225
  end
211
226
 
212
227
  attach_function :CreateWindowEx, :CreateWindowExA, [:ulong, :string, :string, :ulong, :int, :int, :int, :int, :pointer, :pointer, :pointer, :pointer], :pointer
213
- attach_function :CreateDialogIndirectParam, :CreateDialogIndirectParamA, [:pointer, :pointer, :pointer, :DLGPROC, :long], :pointer
214
228
  attach_function :DestroyWindow, [:pointer], :int
215
229
 
216
- #{ DS_xxx
217
230
  DS_ABSALIGN = 0x01
218
231
  DS_SYSMODAL = 0x02
219
232
  DS_LOCALEDIT = 0x20
@@ -229,8 +242,6 @@ module Fzeet
229
242
  DS_CENTERMOUSE = 0x1000
230
243
  DS_CONTEXTHELP = 0x2000
231
244
  DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS
232
- DS_USEPIXELS = 0x8000
233
- #}
234
245
 
235
246
  class DLGTEMPLATE < FFI::Struct
236
247
  layout \
@@ -246,10 +257,10 @@ module Fzeet
246
257
  :title, :ushort
247
258
  end
248
259
 
260
+ attach_function :CreateDialogIndirectParam, :CreateDialogIndirectParamA, [:pointer, :pointer, :pointer, :DLGPROC, :long], :pointer
249
261
  attach_function :DialogBoxIndirectParam, :DialogBoxIndirectParamA, [:pointer, :pointer, :pointer, :DLGPROC, :long], :int
250
262
  attach_function :EndDialog, [:pointer, :int], :int
251
263
 
252
- #{ GWL_xxx
253
264
  GWL_WNDPROC = -4
254
265
  GWL_HINSTANCE = -6
255
266
  GWL_HWNDPARENT = -8
@@ -257,26 +268,48 @@ module Fzeet
257
268
  GWL_EXSTYLE = -20
258
269
  GWL_USERDATA = -21
259
270
  GWL_ID = -12
260
- #}
261
271
 
262
- #{ GWLP_xxx
263
272
  GWLP_WNDPROC = -4
264
273
  GWLP_HINSTANCE = -6
265
274
  GWLP_HWNDPARENT = -8
266
275
  GWLP_USERDATA = -21
267
276
  GWLP_ID = -12
268
- #}
269
277
 
270
- #{ DWL_xxx
271
278
  DWL_MSGRESULT = 0
272
279
  DWL_DLGPROC = 4
273
280
  DWL_USER = 8
274
- #}
275
281
 
276
282
  attach_function :GetWindowLong, :GetWindowLongA, [:pointer, :int], :long
277
283
  attach_function :SetWindowLong, :SetWindowLongA, [:pointer, :int, :long], :long
278
284
 
285
+ attach_function :IsWindowEnabled, [:pointer], :int
286
+ attach_function :EnableWindow, [:pointer, :int], :int
287
+
288
+ attach_function :IsWindowVisible, [:pointer], :int
289
+
290
+ SW_HIDE = 0
279
291
  SW_SHOWNORMAL = 1
292
+ SW_NORMAL = 1
293
+ SW_SHOWMINIMIZED = 2
294
+ SW_SHOWMAXIMIZED = 3
295
+ SW_MAXIMIZE = 3
296
+ SW_SHOWNOACTIVATE = 4
297
+ SW_SHOW = 5
298
+ SW_MINIMIZE = 6
299
+ SW_SHOWMINNOACTIVE = 7
300
+ SW_SHOWNA = 8
301
+ SW_RESTORE = 9
302
+ SW_SHOWDEFAULT = 10
303
+ SW_FORCEMINIMIZE = 11
304
+ SW_MAX = 11
305
+ SW_PARENTCLOSING = 1
306
+ SW_OTHERZOOM = 2
307
+ SW_PARENTOPENING = 3
308
+ SW_OTHERUNZOOM = 4
309
+ SW_SCROLLCHILDREN = 0x0001
310
+ SW_INVALIDATE = 0x0002
311
+ SW_ERASE = 0x0004
312
+ SW_SMOOTHSCROLL = 0x0010
280
313
 
281
314
  attach_function :ShowWindow, [:pointer, :int], :int
282
315
 
@@ -286,9 +319,6 @@ module Fzeet
286
319
  attach_function :GetWindowText, :GetWindowTextA, [:pointer, :pointer, :int], :int
287
320
  attach_function :SetWindowText, :SetWindowTextA, [:pointer, :string], :int
288
321
 
289
- attach_function :IsWindowEnabled, [:pointer], :int
290
- attach_function :EnableWindow, [:pointer, :int], :int
291
-
292
322
  attach_function :GetClientRect, [:pointer, :pointer], :int
293
323
  attach_function :GetWindowRect, [:pointer, :pointer], :int
294
324
 
@@ -322,13 +352,15 @@ module Fzeet
322
352
  attach_function :GetDC, [:pointer], :pointer
323
353
  attach_function :ReleaseDC, [:pointer, :pointer], :int
324
354
 
355
+ attach_function :GetMenu, [:pointer], :pointer
356
+ attach_function :SetMenu, [:pointer, :pointer], :int
357
+
358
+ attach_function :DrawMenuBar, [:pointer], :int
359
+
325
360
  attach_function :GetDlgItem, [:pointer, :int], :pointer
326
361
 
327
362
  callback :WNDENUMPROC, [:pointer, :long], :int
328
363
 
329
364
  attach_function :EnumChildWindows, [:pointer, :WNDENUMPROC, :long], :int
330
-
331
- attach_function :GetMenu, [:pointer], :pointer
332
- attach_function :SetMenu, [:pointer, :pointer], :int
333
365
  end
334
366
  end
@@ -1,7 +1,7 @@
1
- require_relative 'usermbox'
2
- require_relative 'userwnd'
3
- require_relative 'usermsg'
4
- require_relative 'usermenu'
5
- require_relative 'userkbd'
6
- require_relative 'userctl'
7
- require_relative 'userspi'
1
+ require_relative 'user/MessageBox'
2
+ require_relative 'user/Window'
3
+ require_relative 'user/Message'
4
+ require_relative 'user/Menu'
5
+ require_relative 'user/Accelerator'
6
+ require_relative 'user/Control'
7
+ require_relative 'user/SystemParametersInfo'
data/lib/fzeet/windows.rb CHANGED
@@ -12,76 +12,5 @@ require_relative 'windows/com'
12
12
  require_relative 'windows/ole'
13
13
  require_relative 'windows/shell'
14
14
 
15
- require_relative 'windows/uiribbon'
16
-
17
- module Fzeet
18
- module Windows
19
- def DetonateLastError(on, name, *args)
20
- raise "#{name} failed (last error #{GetLastError()})." if (failed = [*on].include?(result = send(name, *args)))
21
-
22
- result
23
- ensure
24
- yield failed if block_given?
25
- end
26
-
27
- def DetonateHresult(name, *args)
28
- failed = FAILED(result = send(name, *args)) and raise "#{name} failed (hresult #{format('%#08x', result)})."
29
-
30
- result
31
- ensure
32
- yield failed if block_given?
33
- end
34
-
35
- module_function :DetonateLastError, :DetonateHresult
36
-
37
- COMMON_CONTROLS_ACTCTX = {handle: INVALID_HANDLE_VALUE, cookie: FFI::MemoryPointer.new(:ulong), activated: false}
38
-
39
- at_exit {
40
- DeactivateActCtx(0, COMMON_CONTROLS_ACTCTX[:cookie].get_ulong(0)) if COMMON_CONTROLS_ACTCTX[:activated]
41
- COMMON_CONTROLS_ACTCTX[:cookie].free
42
- ReleaseActCtx(COMMON_CONTROLS_ACTCTX[:handle]) unless COMMON_CONTROLS_ACTCTX[:handle] == INVALID_HANDLE_VALUE
43
- }
44
-
45
- def EnableVisualStyles
46
- raise 'Visual styles already enabled.' if COMMON_CONTROLS_ACTCTX[:activated]
47
-
48
- manifest = "#{ENV['TEMP']}/Fzeet.Common-Controls.manifest"
49
-
50
- File.open(manifest, 'w:utf-8') { |file|
51
- file << <<-XML
52
- <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
53
- <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
54
- <dependency>
55
- <dependentAssembly>
56
- <assemblyIdentity type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*' />
57
- </dependentAssembly>
58
- </dependency>
59
- </assembly>
60
- XML
61
- }
62
-
63
- ac = ACTCTX.new
64
-
65
- ac[:cbSize] = ac.size
66
- ac[:lpSource] = source = FFI::MemoryPointer.from_string(File.expand_path(manifest))
67
-
68
- COMMON_CONTROLS_ACTCTX[:handle] = DetonateLastError(INVALID_HANDLE_VALUE, :CreateActCtx, ac) { source.free }
69
-
70
- DetonateLastError(0, :ActivateActCtx, COMMON_CONTROLS_ACTCTX[:handle], COMMON_CONTROLS_ACTCTX[:cookie]) { |failed|
71
- next unless failed
72
-
73
- ReleaseActCtx(COMMON_CONTROLS_ACTCTX[:handle]); COMMON_CONTROLS_ACTCTX[:handle] = INVALID_HANDLE_VALUE
74
- }
75
-
76
- COMMON_CONTROLS_ACTCTX[:activated] = true
77
- end
78
-
79
- def InitializeOle
80
- DetonateHresult(:OleInitialize, nil)
81
-
82
- at_exit { OleUninitialize() }
83
- end
84
-
85
- module_function :EnableVisualStyles, :InitializeOle
86
- end
87
- end
15
+ require_relative 'windows/propsys' if Fzeet::Windows::WINVER.AtLeastWindowsVista?
16
+ require_relative 'windows/uiribbon' if Fzeet::Windows::WINVER.AtLeastWindowsVista?
data/lib/fzeet.rb CHANGED
@@ -4,4 +4,4 @@ require_relative 'fzeet/Menu'
4
4
  require_relative 'fzeet/Accelerator'
5
5
  require_relative 'fzeet/Control'
6
6
  require_relative 'fzeet/Dialog'
7
- require_relative 'fzeet/UIRibbon'
7
+ require_relative 'fzeet/UIRibbon' if Fzeet::Windows::WINVER.AtLeastWindowsVista?