fzeet 0.5.2 → 0.5.3

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.
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?