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
@@ -38,12 +38,12 @@ module Fzeet
38
38
  call "#{opts[:vcvars]}" >> "#{name}.log" &\
39
39
  "#{opts[:link]}" /nologo /machine:x86 /dll /noentry /out:"#{name}.dll" "#{ENV['TEMP']}/#{name}.res" >> "#{name}.log"
40
40
  CMD
41
- # system <<-CMD
41
+ # system <<-CMD
42
42
  #@echo off &\
43
43
  # "#{opts[:uicc]}" "#{name}.xml" "#{name}.bml" /header:"#{name}.h" /res:"#{name}.rc" > "#{name}.log" &\
44
44
  # "#{opts[:windres]}" -o"#{ENV['TEMP']}/#{name}.o" "#{name}.rc" >> "#{name}.log" &\
45
45
  # "#{opts[:gcc]}" -shared -o"#{name}.dll" "#{ENV['TEMP']}/#{name}.o" >> "#{name}.log"
46
- # CMD
46
+ # CMD
47
47
 
48
48
  raise "Ribbon build failed - see #{path}/#{name}.log for details." if File.read("#{path}/#{name}.log") =~ /error/i
49
49
 
@@ -71,32 +71,187 @@ module Fzeet
71
71
  module_function :LoadRibbonDll
72
72
 
73
73
  UI_PKEY_Enabled = PROPERTYKEY[VT_BOOL, 1]
74
+ UI_PKEY_LabelDescription = PROPERTYKEY[VT_LPWSTR, 2]
75
+ UI_PKEY_Keytip = PROPERTYKEY[VT_LPWSTR, 3]
76
+ UI_PKEY_Label = PROPERTYKEY[VT_LPWSTR, 4]
77
+ UI_PKEY_TooltipDescription = PROPERTYKEY[VT_LPWSTR, 5]
78
+ UI_PKEY_TooltipTitle = PROPERTYKEY[VT_LPWSTR, 6]
79
+ UI_PKEY_LargeImage = PROPERTYKEY[VT_UNKNOWN, 7]
80
+ UI_PKEY_LargeHighContrastImage = PROPERTYKEY[VT_UNKNOWN, 8]
81
+ UI_PKEY_SmallImage = PROPERTYKEY[VT_UNKNOWN, 9]
82
+ UI_PKEY_SmallHighContrastImage = PROPERTYKEY[VT_UNKNOWN, 10]
74
83
 
75
- LIBID_UIRibbon = GUID['942f35c2-e83b-45ef-b085-ac295dd63d5b']
84
+ UI_PKEY_CommandId = PROPERTYKEY[VT_UI4, 100]
85
+ UI_PKEY_ItemsSource = PROPERTYKEY[VT_UNKNOWN, 101]
86
+ UI_PKEY_Categories = PROPERTYKEY[VT_UNKNOWN, 102]
87
+ UI_PKEY_CategoryId = PROPERTYKEY[VT_UI4, 103]
88
+ UI_PKEY_SelectedItem = PROPERTYKEY[VT_UI4, 104]
89
+ UI_PKEY_CommandType = PROPERTYKEY[VT_UI4, 105]
90
+ UI_PKEY_ItemImage = PROPERTYKEY[VT_UNKNOWN, 106]
76
91
 
77
- CLSID_UIRibbonFramework = GUID['926749fa-2615-4987-8845-c33e65f2b957']
92
+ UI_PKEY_BooleanValue = PROPERTYKEY[VT_BOOL, 200]
93
+ UI_PKEY_DecimalValue = PROPERTYKEY[VT_DECIMAL, 201]
94
+ UI_PKEY_StringValue = PROPERTYKEY[VT_LPWSTR, 202]
95
+ UI_PKEY_MaxValue = PROPERTYKEY[VT_DECIMAL, 203]
96
+ UI_PKEY_MinValue = PROPERTYKEY[VT_DECIMAL, 204]
97
+ UI_PKEY_Increment = PROPERTYKEY[VT_DECIMAL, 205]
98
+ UI_PKEY_DecimalPlaces = PROPERTYKEY[VT_UI4, 206]
99
+ UI_PKEY_FormatString = PROPERTYKEY[VT_LPWSTR, 207]
100
+ UI_PKEY_RepresentativeString = PROPERTYKEY[VT_LPWSTR, 208]
78
101
 
79
- IID_IUICommandHandler = GUID['75ae0a2d-dc03-4c9f-8883-069660d0beb6']
80
- IID_IUIApplication = GUID['D428903C-729A-491d-910D-682A08FF2522']
81
- IID_IUIFramework = GUID['F4F0385D-6872-43a8-AD09-4C339CB3F5C5']
102
+ UI_PKEY_FontProperties = PROPERTYKEY[VT_UNKNOWN, 300]
103
+ UI_PKEY_FontProperties_Family = PROPERTYKEY[VT_LPWSTR, 301]
104
+ UI_PKEY_FontProperties_Size = PROPERTYKEY[VT_DECIMAL, 302]
105
+ UI_PKEY_FontProperties_Bold = PROPERTYKEY[VT_UI4, 303]
106
+ UI_PKEY_FontProperties_Italic = PROPERTYKEY[VT_UI4, 304]
107
+ UI_PKEY_FontProperties_Underline = PROPERTYKEY[VT_UI4, 305]
108
+ UI_PKEY_FontProperties_Strikethrough = PROPERTYKEY[VT_UI4, 306]
109
+ UI_PKEY_FontProperties_VerticalPositioning = PROPERTYKEY[VT_UI4, 307]
110
+ UI_PKEY_FontProperties_ForegroundColor = PROPERTYKEY[VT_UI4, 308]
111
+ UI_PKEY_FontProperties_BackgroundColor = PROPERTYKEY[VT_UI4, 309]
112
+ UI_PKEY_FontProperties_ForegroundColorType = PROPERTYKEY[VT_UI4, 310]
113
+ UI_PKEY_FontProperties_BackgroundColorType = PROPERTYKEY[VT_UI4, 311]
114
+ UI_PKEY_FontProperties_ChangedProperties = PROPERTYKEY[VT_UNKNOWN, 312]
115
+ UI_PKEY_FontProperties_DeltaSize = PROPERTYKEY[VT_UI4, 313]
82
116
 
83
- IUICommandHandler = COM::Interface[IUnknown,
84
- IID_IUICommandHandler,
117
+ UI_PKEY_RecentItems = PROPERTYKEY[VT_ARRAY | VT_UNKNOWN, 350]
118
+ UI_PKEY_Pinned = PROPERTYKEY[VT_BOOL, 351]
85
119
 
86
- Execute: [[:uint, :int, :pointer, :pointer, :pointer], :long],
87
- UpdateProperty: [[:uint, :pointer, :pointer, :pointer], :long]
120
+ UI_PKEY_Color = PROPERTYKEY[VT_UI4, 400]
121
+ UI_PKEY_ColorType = PROPERTYKEY[VT_UI4, 401]
122
+ UI_PKEY_ColorMode = PROPERTYKEY[VT_UI4, 402]
123
+ UI_PKEY_ThemeColorsCategoryLabel = PROPERTYKEY[VT_LPWSTR, 403]
124
+ UI_PKEY_StandardColorsCategoryLabel = PROPERTYKEY[VT_LPWSTR, 404]
125
+ UI_PKEY_RecentColorsCategoryLabel = PROPERTYKEY[VT_LPWSTR, 405]
126
+ UI_PKEY_AutomaticColorLabel = PROPERTYKEY[VT_LPWSTR, 406]
127
+ UI_PKEY_NoColorLabel = PROPERTYKEY[VT_LPWSTR, 407]
128
+ UI_PKEY_MoreColorsLabel = PROPERTYKEY[VT_LPWSTR, 408]
129
+ UI_PKEY_ThemeColors = PROPERTYKEY[VT_VECTOR | VT_UI4, 409]
130
+ UI_PKEY_StandardColors = PROPERTYKEY[VT_VECTOR | VT_UI4, 410]
131
+ UI_PKEY_ThemeColorsTooltips = PROPERTYKEY[VT_VECTOR | VT_LPWSTR, 411]
132
+ UI_PKEY_StandardColorsTooltips = PROPERTYKEY[VT_VECTOR | VT_LPWSTR, 412]
133
+
134
+ UI_PKEY_Viewable = PROPERTYKEY[VT_BOOL, 1000]
135
+ UI_PKEY_Minimized = PROPERTYKEY[VT_BOOL, 1001]
136
+ UI_PKEY_QuickAccessToolbarDock = PROPERTYKEY[VT_UI4, 1002]
137
+
138
+ UI_PKEY_ContextAvailable = PROPERTYKEY[VT_UI4, 1100]
139
+
140
+ UI_PKEY_GlobalBackgroundColor = PROPERTYKEY[VT_UI4, 2000]
141
+ UI_PKEY_GlobalHighlightColor = PROPERTYKEY[VT_UI4, 2001]
142
+ UI_PKEY_GlobalTextColor = PROPERTYKEY[VT_UI4, 2002]
143
+
144
+ def UI_GetHValue(hsb) LOBYTE(hsb) end
145
+ def UI_GetSValue(hsb) LOBYTE(hsb >> 8) end
146
+ def UI_GetBValue(hsb) LOBYTE(hsb >> 16) end
147
+ def UI_HSB(h, s, b) h | (s << 8) | (b << 16) end
148
+
149
+ def UI_RGB2HSB(r, g, b)
150
+ r, g, b = r.to_f / 255, g.to_f / 255, b.to_f / 255
151
+
152
+ max, min = [r, g, b].max, [r, g, b].min
153
+
154
+ l = (max + min) / 2
155
+
156
+ s = if max == min
157
+ 0
158
+ elsif l < 0.5
159
+ (max - min) / (max + min)
160
+ else
161
+ (max - min) / (2 - (max + min))
162
+ end
163
+
164
+ h = if max == min
165
+ 0
166
+ elsif r == max
167
+ (g - b) / (max - min)
168
+ elsif g == max
169
+ 2 + (b - r) / (max - min)
170
+ else
171
+ 4 + (r - g) / (max - min)
172
+ end * 60
173
+
174
+ h += 360 if h < 0
175
+
176
+ h = h / 360
177
+
178
+ [
179
+ # hue
180
+ (255 * h).round,
181
+
182
+ # saturation
183
+ (255 * s).round,
184
+
185
+ # brightness
186
+ (l < 0.1793) ?
187
+ 0 :
188
+ (l > 0.9821) ?
189
+ 255 :
190
+ (257.7 + 149.9 * Math.log(l)).round
191
+ ]
192
+ end
193
+
194
+ module_function \
195
+ :UI_GetHValue, :UI_GetSValue, :UI_GetBValue, :UI_HSB,
196
+ :UI_RGB2HSB
197
+
198
+ UI_CONTEXTAVAILABILITY_NOTAVAILABLE = 0
199
+ UI_CONTEXTAVAILABILITY_AVAILABLE = 1
200
+ UI_CONTEXTAVAILABILITY_ACTIVE = 2
201
+
202
+ UI_FONTPROPERTIES_NOTAVAILABLE = 0
203
+ UI_FONTPROPERTIES_NOTSET = 1
204
+ UI_FONTPROPERTIES_SET = 2
205
+
206
+ UI_FONTVERTICALPOSITION_NOTAVAILABLE = 0
207
+ UI_FONTVERTICALPOSITION_NOTSET = 1
208
+ UI_FONTVERTICALPOSITION_SUPERSCRIPT = 2
209
+ UI_FONTVERTICALPOSITION_SUBSCRIPT = 3
210
+
211
+ UI_FONTUNDERLINE_NOTAVAILABLE = 0
212
+ UI_FONTUNDERLINE_NOTSET = 1
213
+ UI_FONTUNDERLINE_SET = 2
214
+
215
+ UI_FONTDELTASIZE_GROW = 0
216
+ UI_FONTDELTASIZE_SHRINK = 1
217
+
218
+ UI_CONTROLDOCK_TOP = 1
219
+ UI_CONTROLDOCK_BOTTOM = 3
220
+
221
+ UI_SWATCHCOLORTYPE_NOCOLOR = 0
222
+ UI_SWATCHCOLORTYPE_AUTOMATIC = 1
223
+ UI_SWATCHCOLORTYPE_RGB = 2
224
+
225
+ UI_SWATCHCOLORMODE_NORMAL = 0
226
+ UI_SWATCHCOLORMODE_MONOCHROME = 1
227
+
228
+ IUISimplePropertySet = COM::Interface[IUnknown,
229
+ GUID['c205bb48-5b1c-4219-a106-15bd0a5f24e2'],
230
+
231
+ GetValue: [[:pointer, :pointer], :long]
88
232
  ]
89
233
 
90
- IUIApplication = COM::Interface[IUnknown,
91
- IID_IUIApplication,
234
+ UISimplePropertySet = COM::Instance[IUISimplePropertySet]
92
235
 
93
- OnViewChanged: [[:uint, :int, :pointer, :int, :int], :long],
94
- OnCreateUICommand: [[:uint, :int, :pointer], :long],
95
- OnDestroyUICommand: [[:uint, :int, :pointer], :long]
236
+ IUIRibbon = COM::Interface[IUnknown,
237
+ GUID['803982ab-370a-4f7e-a9e7-8784036a6e26'],
238
+
239
+ GetHeight: [[:pointer], :long],
240
+ LoadSettingsFromStream: [[:pointer], :long],
241
+ SaveSettingsToStream: [[:pointer], :long]
96
242
  ]
97
243
 
244
+ UIRibbon = COM::Instance[IUIRibbon]
245
+
246
+ UI_INVALIDATIONS_STATE = 0x00000001
247
+ UI_INVALIDATIONS_VALUE = 0x00000002
248
+ UI_INVALIDATIONS_PROPERTY = 0x00000004
249
+ UI_INVALIDATIONS_ALLPROPERTIES = 0x00000008
250
+
251
+ UI_ALL_COMMANDS = 0
252
+
98
253
  IUIFramework = COM::Interface[IUnknown,
99
- IID_IUIFramework,
254
+ GUID['F4F0385D-6872-43a8-AD09-4C339CB3F5C5'],
100
255
 
101
256
  Initialize: [[:pointer, :pointer], :long],
102
257
  Destroy: [[], :long],
@@ -109,8 +264,110 @@ module Fzeet
109
264
  SetModes: [[:int], :long]
110
265
  ]
111
266
 
267
+ UIFramework = COM::Factory[IUIFramework, GUID['926749fa-2615-4987-8845-c33e65f2b957']]
268
+
269
+ IUIContextualUI = COM::Interface[IUnknown,
270
+ GUID['EEA11F37-7C46-437c-8E55-B52122B29293'],
271
+
272
+ ShowAtLocation: [[:int, :int], :long]
273
+ ]
274
+
275
+ UIContextualUI = COM::Instance[IUIContextualUI]
276
+
277
+ IUICollection = COM::Interface[IUnknown,
278
+ GUID['DF4F45BF-6F9D-4dd7-9D68-D8F9CD18C4DB'],
279
+
280
+ GetCount: [[:pointer], :long],
281
+ GetItem: [[:uint, :pointer], :long],
282
+ Add: [[:pointer], :long],
283
+ Insert: [[:uint, :pointer], :long],
284
+ RemoveAt: [[:uint], :long],
285
+ Replace: [[:uint, :pointer], :long],
286
+ Clear: [[], :long]
287
+ ]
288
+
289
+ UICollection = COM::Instance[IUICollection]
290
+
291
+ UI_COLLECTIONCHANGE_INSERT = 0
292
+ UI_COLLECTIONCHANGE_REMOVE = 1
293
+ UI_COLLECTIONCHANGE_REPLACE = 2
294
+ UI_COLLECTIONCHANGE_RESET = 3
295
+
296
+ UI_COLLECTION_INVALIDINDEX = 0xffffffff
297
+
298
+ IUICollectionChangedEvent = COM::Interface[IUnknown,
299
+ GUID['6502AE91-A14D-44b5-BBD0-62AACC581D52'],
300
+
301
+ OnChanged: [[:int, :uint, :pointer, :uint, :pointer], :long]
302
+ ]
303
+
304
+ UICollectionChangedEvent = COM::Callback[IUICollectionChangedEvent]
305
+
306
+ UI_EXECUTIONVERB_EXECUTE = 0
307
+ UI_EXECUTIONVERB_PREVIEW = 1
308
+ UI_EXECUTIONVERB_CANCELPREVIEW = 2
309
+
310
+ IUICommandHandler = COM::Interface[IUnknown,
311
+ GUID['75ae0a2d-dc03-4c9f-8883-069660d0beb6'],
312
+
313
+ Execute: [[:uint, :int, :pointer, :pointer, :pointer], :long],
314
+ UpdateProperty: [[:uint, :pointer, :pointer, :pointer], :long]
315
+ ]
316
+
112
317
  UICommandHandler = COM::Callback[IUICommandHandler]
318
+
319
+ UI_COMMANDTYPE_UNKNOWN = 0
320
+ UI_COMMANDTYPE_GROUP = 1
321
+ UI_COMMANDTYPE_ACTION = 2
322
+ UI_COMMANDTYPE_ANCHOR = 3
323
+ UI_COMMANDTYPE_CONTEXT = 4
324
+ UI_COMMANDTYPE_COLLECTION = 5
325
+ UI_COMMANDTYPE_COMMANDCOLLECTION = 6
326
+ UI_COMMANDTYPE_DECIMAL = 7
327
+ UI_COMMANDTYPE_BOOLEAN = 8
328
+ UI_COMMANDTYPE_FONT = 9
329
+ UI_COMMANDTYPE_RECENTITEMS = 10
330
+ UI_COMMANDTYPE_COLORANCHOR = 11
331
+ UI_COMMANDTYPE_COLORCOLLECTION = 12
332
+
333
+ UI_VIEWTYPE_RIBBON = 1
334
+
335
+ UI_VIEWVERB_CREATE = 0
336
+ UI_VIEWVERB_DESTROY = 1
337
+ UI_VIEWVERB_SIZE = 2
338
+ UI_VIEWVERB_ERROR = 3
339
+
340
+ IUIApplication = COM::Interface[IUnknown,
341
+ GUID['D428903C-729A-491d-910D-682A08FF2522'],
342
+
343
+ OnViewChanged: [[:uint, :int, :pointer, :int, :int], :long],
344
+ OnCreateUICommand: [[:uint, :int, :pointer], :long],
345
+ OnDestroyUICommand: [[:uint, :int, :pointer], :long]
346
+ ]
347
+
113
348
  UIApplication = COM::Callback[IUIApplication]
114
- UIFramework = COM::Factory[IUIFramework, CLSID_UIRibbonFramework]
349
+
350
+ IUIImage = COM::Interface[IUnknown,
351
+ GUID['23c8c838-4de6-436b-ab01-5554bb7c30dd'],
352
+
353
+ GetBitmap: [[:pointer], :long]
354
+ ]
355
+
356
+ UIImage = COM::Instance[IUIImage]
357
+
358
+ UI_OWNERSHIP_TRANSFER = 0
359
+ UI_OWNERSHIP_COPY = 1
360
+
361
+ IUIImageFromBitmap = COM::Interface[IUnknown,
362
+ GUID['18aba7f3-4c1c-4ba2-bf6c-f5c3326fa816'],
363
+
364
+ CreateImage: [[:pointer, :int, :pointer], :long]
365
+ ]
366
+
367
+ UIImageFromBitmap = COM::Factory[IUIImageFromBitmap, GUID['0f7434b6-59b6-4250-999e-d168d6ae4293']]
368
+
369
+ def UI_MAKEAPPMODE(x) 1 << x end
370
+
371
+ module_function :UI_MAKEAPPMODE
115
372
  end
116
373
  end
@@ -0,0 +1,182 @@
1
+ require_relative 'Common'
2
+
3
+ module Fzeet
4
+ module Windows
5
+ FVIRTKEY = 1
6
+ FNOINVERT = 0x02
7
+ FSHIFT = 0x04
8
+ FCONTROL = 0x08
9
+ FALT = 0x10
10
+
11
+ VK_LBUTTON = 0x01
12
+ VK_RBUTTON = 0x02
13
+ VK_CANCEL = 0x03
14
+ VK_MBUTTON = 0x04
15
+ VK_XBUTTON1 = 0x05
16
+ VK_XBUTTON2 = 0x06
17
+ VK_BACK = 0x08
18
+ VK_TAB = 0x09
19
+ VK_CLEAR = 0x0C
20
+ VK_RETURN = 0x0D
21
+ VK_SHIFT = 0x10
22
+ VK_CONTROL = 0x11
23
+ VK_MENU = 0x12
24
+ VK_PAUSE = 0x13
25
+ VK_CAPITAL = 0x14
26
+ VK_KANA = 0x15
27
+ VK_HANGEUL = 0x15
28
+ VK_HANGUL = 0x15
29
+ VK_JUNJA = 0x17
30
+ VK_FINAL = 0x18
31
+ VK_HANJA = 0x19
32
+ VK_KANJI = 0x19
33
+ VK_ESCAPE = 0x1B
34
+ VK_CONVERT = 0x1C
35
+ VK_NONCONVERT = 0x1D
36
+ VK_ACCEPT = 0x1E
37
+ VK_MODECHANGE = 0x1F
38
+ VK_SPACE = 0x20
39
+ VK_PRIOR = 0x21
40
+ VK_NEXT = 0x22
41
+ VK_END = 0x23
42
+ VK_HOME = 0x24
43
+ VK_LEFT = 0x25
44
+ VK_UP = 0x26
45
+ VK_RIGHT = 0x27
46
+ VK_DOWN = 0x28
47
+ VK_SELECT = 0x29
48
+ VK_PRINT = 0x2A
49
+ VK_EXECUTE = 0x2B
50
+ VK_SNAPSHOT = 0x2C
51
+ VK_INSERT = 0x2D
52
+ VK_DELETE = 0x2E
53
+ VK_HELP = 0x2F
54
+ VK_LWIN = 0x5B
55
+ VK_RWIN = 0x5C
56
+ VK_APPS = 0x5D
57
+ VK_SLEEP = 0x5F
58
+ VK_NUMPAD0 = 0x60
59
+ VK_NUMPAD1 = 0x61
60
+ VK_NUMPAD2 = 0x62
61
+ VK_NUMPAD3 = 0x63
62
+ VK_NUMPAD4 = 0x64
63
+ VK_NUMPAD5 = 0x65
64
+ VK_NUMPAD6 = 0x66
65
+ VK_NUMPAD7 = 0x67
66
+ VK_NUMPAD8 = 0x68
67
+ VK_NUMPAD9 = 0x69
68
+ VK_MULTIPLY = 0x6A
69
+ VK_ADD = 0x6B
70
+ VK_SEPARATOR = 0x6C
71
+ VK_SUBTRACT = 0x6D
72
+ VK_DECIMAL = 0x6E
73
+ VK_DIVIDE = 0x6F
74
+ VK_F1 = 0x70
75
+ VK_F2 = 0x71
76
+ VK_F3 = 0x72
77
+ VK_F4 = 0x73
78
+ VK_F5 = 0x74
79
+ VK_F6 = 0x75
80
+ VK_F7 = 0x76
81
+ VK_F8 = 0x77
82
+ VK_F9 = 0x78
83
+ VK_F10 = 0x79
84
+ VK_F11 = 0x7A
85
+ VK_F12 = 0x7B
86
+ VK_F13 = 0x7C
87
+ VK_F14 = 0x7D
88
+ VK_F15 = 0x7E
89
+ VK_F16 = 0x7F
90
+ VK_F17 = 0x80
91
+ VK_F18 = 0x81
92
+ VK_F19 = 0x82
93
+ VK_F20 = 0x83
94
+ VK_F21 = 0x84
95
+ VK_F22 = 0x85
96
+ VK_F23 = 0x86
97
+ VK_F24 = 0x87
98
+ VK_NUMLOCK = 0x90
99
+ VK_SCROLL = 0x91
100
+ VK_OEM_NEC_EQUAL = 0x92
101
+ VK_OEM_FJ_JISHO = 0x92
102
+ VK_OEM_FJ_MASSHOU = 0x93
103
+ VK_OEM_FJ_TOUROKU = 0x94
104
+ VK_OEM_FJ_LOYA = 0x95
105
+ VK_OEM_FJ_ROYA = 0x96
106
+ VK_LSHIFT = 0xA0
107
+ VK_RSHIFT = 0xA1
108
+ VK_LCONTROL = 0xA2
109
+ VK_RCONTROL = 0xA3
110
+ VK_LMENU = 0xA4
111
+ VK_RMENU = 0xA5
112
+ VK_BROWSER_BACK = 0xA6
113
+ VK_BROWSER_FORWARD = 0xA7
114
+ VK_BROWSER_REFRESH = 0xA8
115
+ VK_BROWSER_STOP = 0xA9
116
+ VK_BROWSER_SEARCH = 0xAA
117
+ VK_BROWSER_FAVORITES = 0xAB
118
+ VK_BROWSER_HOME = 0xAC
119
+ VK_VOLUME_MUTE = 0xAD
120
+ VK_VOLUME_DOWN = 0xAE
121
+ VK_VOLUME_UP = 0xAF
122
+ VK_MEDIA_NEXT_TRACK = 0xB0
123
+ VK_MEDIA_PREV_TRACK = 0xB1
124
+ VK_MEDIA_STOP = 0xB2
125
+ VK_MEDIA_PLAY_PAUSE = 0xB3
126
+ VK_LAUNCH_MAIL = 0xB4
127
+ VK_LAUNCH_MEDIA_SELECT = 0xB5
128
+ VK_LAUNCH_APP1 = 0xB6
129
+ VK_LAUNCH_APP2 = 0xB7
130
+ VK_OEM_1 = 0xBA
131
+ VK_OEM_PLUS = 0xBB
132
+ VK_OEM_COMMA = 0xBC
133
+ VK_OEM_MINUS = 0xBD
134
+ VK_OEM_PERIOD = 0xBE
135
+ VK_OEM_2 = 0xBF
136
+ VK_OEM_3 = 0xC0
137
+ VK_OEM_4 = 0xDB
138
+ VK_OEM_5 = 0xDC
139
+ VK_OEM_6 = 0xDD
140
+ VK_OEM_7 = 0xDE
141
+ VK_OEM_8 = 0xDF
142
+ VK_OEM_AX = 0xE1
143
+ VK_OEM_102 = 0xE2
144
+ VK_ICO_HELP = 0xE3
145
+ VK_ICO_00 = 0xE4
146
+ VK_PROCESSKEY = 0xE5
147
+ VK_ICO_CLEAR = 0xE6
148
+ VK_PACKET = 0xE7
149
+ VK_OEM_RESET = 0xE9
150
+ VK_OEM_JUMP = 0xEA
151
+ VK_OEM_PA1 = 0xEB
152
+ VK_OEM_PA2 = 0xEC
153
+ VK_OEM_PA3 = 0xED
154
+ VK_OEM_WSCTRL = 0xEE
155
+ VK_OEM_CUSEL = 0xEF
156
+ VK_OEM_ATTN = 0xF0
157
+ VK_OEM_FINISH = 0xF1
158
+ VK_OEM_COPY = 0xF2
159
+ VK_OEM_AUTO = 0xF3
160
+ VK_OEM_ENLW = 0xF4
161
+ VK_OEM_BACKTAB = 0xF5
162
+ VK_ATTN = 0xF6
163
+ VK_CRSEL = 0xF7
164
+ VK_EXSEL = 0xF8
165
+ VK_EREOF = 0xF9
166
+ VK_PLAY = 0xFA
167
+ VK_ZOOM = 0xFB
168
+ VK_NONAME = 0xFC
169
+ VK_PA1 = 0xFD
170
+ VK_OEM_CLEAR = 0xFE
171
+
172
+ class ACCEL < FFI::Struct
173
+ layout \
174
+ :fVirt, :uchar,
175
+ :key, :ushort,
176
+ :cmd, :ushort
177
+ end
178
+
179
+ attach_function :CreateAcceleratorTable, :CreateAcceleratorTableA, [:pointer, :int], :pointer
180
+ attach_function :DestroyAcceleratorTable, [:pointer], :int
181
+ end
182
+ end
@@ -0,0 +1,33 @@
1
+ require_relative '../common'
2
+
3
+ module Fzeet
4
+ module Windows
5
+ ffi_lib 'user32'
6
+ ffi_convention :stdcall
7
+
8
+ if WINVER.AtLeastWindowsVista?
9
+ attach_function :SetProcessDPIAware, [], :int
10
+ end
11
+
12
+ IMAGE_BITMAP = 0
13
+ IMAGE_ICON = 1
14
+ IMAGE_CURSOR = 2
15
+ IMAGE_ENHMETAFILE = 3
16
+
17
+ LR_DEFAULTCOLOR = 0x00000000
18
+ LR_MONOCHROME = 0x00000001
19
+ LR_COLOR = 0x00000002
20
+ LR_COPYRETURNORG = 0x00000004
21
+ LR_COPYDELETEORG = 0x00000008
22
+ LR_LOADFROMFILE = 0x00000010
23
+ LR_LOADTRANSPARENT = 0x00000020
24
+ LR_DEFAULTSIZE = 0x00000040
25
+ LR_VGACOLOR = 0x00000080
26
+ LR_LOADMAP3DCOLORS = 0x00001000
27
+ LR_CREATEDIBSECTION = 0x00002000
28
+ LR_COPYFROMRESOURCE = 0x00004000
29
+ LR_SHARED = 0x00008000
30
+
31
+ attach_function :LoadImage, :LoadImageA, [:pointer, :string, :uint, :int, :int, :uint], :pointer
32
+ end
33
+ end
@@ -1,4 +1,4 @@
1
- require_relative 'userctlcommon'
1
+ require_relative 'Common'
2
2
 
3
3
  module Fzeet
4
4
  module Windows
@@ -1,4 +1,4 @@
1
- require_relative 'usercommon'
1
+ require_relative '../Common'
2
2
 
3
3
  module Fzeet
4
4
  module Windows
@@ -0,0 +1 @@
1
+ require_relative 'Control/Button'
@@ -0,0 +1,115 @@
1
+ require_relative 'Common'
2
+
3
+ module Fzeet
4
+ module Windows
5
+ attach_function :CreateMenu, [], :pointer
6
+ attach_function :CreatePopupMenu, [], :pointer
7
+ attach_function :DestroyMenu, [:pointer], :int
8
+
9
+ MF_INSERT = 0x00000000
10
+ MF_CHANGE = 0x00000080
11
+ MF_APPEND = 0x00000100
12
+ MF_DELETE = 0x00000200
13
+ MF_REMOVE = 0x00001000
14
+ MF_BYCOMMAND = 0x00000000
15
+ MF_BYPOSITION = 0x00000400
16
+ MF_SEPARATOR = 0x00000800
17
+ MF_ENABLED = 0x00000000
18
+ MF_GRAYED = 0x00000001
19
+ MF_DISABLED = 0x00000002
20
+ MF_UNCHECKED = 0x00000000
21
+ MF_CHECKED = 0x00000008
22
+ MF_USECHECKBITMAPS = 0x00000200
23
+ MF_STRING = 0x00000000
24
+ MF_BITMAP = 0x00000004
25
+ MF_OWNERDRAW = 0x00000100
26
+ MF_POPUP = 0x00000010
27
+ MF_MENUBARBREAK = 0x00000020
28
+ MF_MENUBREAK = 0x00000040
29
+ MF_UNHILITE = 0x00000000
30
+ MF_HILITE = 0x00000080
31
+ MF_DEFAULT = 0x00001000
32
+ MF_SYSMENU = 0x00002000
33
+ MF_HELP = 0x00004000
34
+ MF_RIGHTJUSTIFY = 0x00004000
35
+ MF_MOUSESELECT = 0x00008000
36
+ MF_END = 0x00000080
37
+
38
+ MFT_STRING = MF_STRING
39
+ MFT_BITMAP = MF_BITMAP
40
+ MFT_MENUBARBREAK = MF_MENUBARBREAK
41
+ MFT_MENUBREAK = MF_MENUBREAK
42
+ MFT_OWNERDRAW = MF_OWNERDRAW
43
+ MFT_RADIOCHECK = 0x00000200
44
+ MFT_SEPARATOR = MF_SEPARATOR
45
+ MFT_RIGHTORDER = 0x00002000
46
+ MFT_RIGHTJUSTIFY = MF_RIGHTJUSTIFY
47
+
48
+ MFS_GRAYED = 0x00000003
49
+ MFS_DISABLED = MFS_GRAYED
50
+ MFS_CHECKED = MF_CHECKED
51
+ MFS_HILITE = MF_HILITE
52
+ MFS_ENABLED = MF_ENABLED
53
+ MFS_UNCHECKED = MF_UNCHECKED
54
+ MFS_UNHILITE = MF_UNHILITE
55
+ MFS_DEFAULT = MF_DEFAULT
56
+
57
+ attach_function :AppendMenu, :AppendMenuA, [:pointer, :uint, :uint, :string], :int
58
+ attach_function :GetMenuState, [:pointer, :uint, :uint], :uint
59
+ attach_function :EnableMenuItem, [:pointer, :uint, :uint], :int
60
+ attach_function :CheckMenuItem, [:pointer, :uint, :uint], :ulong
61
+ attach_function :CheckMenuRadioItem, [:pointer, :uint, :uint, :uint, :uint], :int
62
+
63
+ MIIM_STATE = 0x00000001
64
+ MIIM_ID = 0x00000002
65
+ MIIM_SUBMENU = 0x00000004
66
+ MIIM_CHECKMARKS = 0x00000008
67
+ MIIM_TYPE = 0x00000010
68
+ MIIM_DATA = 0x00000020
69
+ MIIM_STRING = 0x00000040
70
+ MIIM_BITMAP = 0x00000080
71
+ MIIM_FTYPE = 0x00000100
72
+
73
+ class MENUITEMINFO < FFI::Struct
74
+ layout \
75
+ :cbSize, :uint,
76
+ :fMask, :uint,
77
+ :fType, :uint,
78
+ :fState, :uint,
79
+ :wID, :uint,
80
+ :hSubMenu, :pointer,
81
+ :hbmpChecked, :pointer,
82
+ :hbmpUnchecked, :pointer,
83
+ :dwItemData, :ulong,
84
+ :dwTypeData, :pointer,
85
+ :cch, :uint,
86
+ :hbmpItem, :pointer
87
+ end
88
+
89
+ attach_function :GetMenuItemInfo, :GetMenuItemInfoA, [:pointer, :uint, :int, :pointer], :int
90
+ attach_function :SetMenuItemInfo, :SetMenuItemInfoA, [:pointer, :uint, :int, :pointer], :int
91
+
92
+ TPM_LEFTBUTTON = 0x0000
93
+ TPM_RIGHTBUTTON = 0x0002
94
+ TPM_LEFTALIGN = 0x0000
95
+ TPM_CENTERALIGN = 0x0004
96
+ TPM_RIGHTALIGN = 0x0008
97
+ TPM_TOPALIGN = 0x0000
98
+ TPM_VCENTERALIGN = 0x0010
99
+ TPM_BOTTOMALIGN = 0x0020
100
+ TPM_HORIZONTAL = 0x0000
101
+ TPM_VERTICAL = 0x0040
102
+ TPM_NONOTIFY = 0x0080
103
+ TPM_RETURNCMD = 0x0100
104
+ TPM_RECURSE = 0x0001
105
+ TPM_HORPOSANIMATION = 0x0400
106
+ TPM_HORNEGANIMATION = 0x0800
107
+ TPM_VERPOSANIMATION = 0x1000
108
+ TPM_VERNEGANIMATION = 0x2000
109
+ TPM_NOANIMATION = 0x4000
110
+ TPM_LAYOUTRTL = 0x8000
111
+ TPM_WORKAREA = 0x10000
112
+
113
+ attach_function :TrackPopupMenu, [:pointer, :uint, :int, :int, :int, :pointer, :pointer], :int
114
+ end
115
+ end
@@ -1,8 +1,7 @@
1
- require_relative 'usercommon'
1
+ require_relative 'Common'
2
2
 
3
3
  module Fzeet
4
4
  module Windows
5
- #{ WM_xxx
6
5
  WM_NULL = 0x0000
7
6
  WM_CREATE = 0x0001
8
7
  WM_DESTROY = 0x0002
@@ -236,7 +235,6 @@ module Fzeet
236
235
  WM_PENWINLAST = 0x038F
237
236
  WM_APP = 0x8000
238
237
  WM_USER = 0x0400
239
- #}
240
238
 
241
239
  class MSG < FFI::Struct
242
240
  layout \