windows-pr 1.1.3 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. data/CHANGES +15 -0
  2. data/MANIFEST +65 -65
  3. data/README +149 -149
  4. data/Rakefile +37 -52
  5. data/doc/conversion_guide.txt +37 -37
  6. data/lib/windows/clipboard.rb +2 -0
  7. data/lib/windows/com.rb +2 -0
  8. data/lib/windows/com/accessibility.rb +12 -10
  9. data/lib/windows/com/automation.rb +149 -147
  10. data/lib/windows/com/variant.rb +24 -22
  11. data/lib/windows/console.rb +114 -112
  12. data/lib/windows/debug.rb +35 -33
  13. data/lib/windows/device_io.rb +248 -246
  14. data/lib/windows/directory.rb +2 -0
  15. data/lib/windows/error.rb +2 -0
  16. data/lib/windows/eventlog.rb +2 -0
  17. data/lib/windows/file.rb +264 -262
  18. data/lib/windows/file_mapping.rb +25 -23
  19. data/lib/windows/filesystem.rb +2 -0
  20. data/lib/windows/gdi/bitmap.rb +65 -63
  21. data/lib/windows/gdi/device_context.rb +46 -44
  22. data/lib/windows/gdi/metafile.rb +40 -38
  23. data/lib/windows/gdi/painting_drawing.rb +115 -113
  24. data/lib/windows/handle.rb +2 -0
  25. data/lib/windows/library.rb +2 -0
  26. data/lib/windows/limits.rb +34 -31
  27. data/lib/windows/mailslot.rb +2 -0
  28. data/lib/windows/memory.rb +2 -0
  29. data/lib/windows/msvcrt/buffer.rb +75 -73
  30. data/lib/windows/msvcrt/directory.rb +31 -29
  31. data/lib/windows/msvcrt/file.rb +47 -45
  32. data/lib/windows/msvcrt/io.rb +62 -60
  33. data/lib/windows/msvcrt/string.rb +2 -0
  34. data/lib/windows/msvcrt/time.rb +169 -167
  35. data/lib/windows/national.rb +580 -578
  36. data/lib/windows/network/management.rb +525 -523
  37. data/lib/windows/network/snmp.rb +92 -90
  38. data/lib/windows/network/winsock.rb +128 -126
  39. data/lib/windows/nio.rb +2 -0
  40. data/lib/windows/ntfs/winternl.rb +96 -82
  41. data/lib/windows/path.rb +143 -141
  42. data/lib/windows/pipe.rb +42 -40
  43. data/lib/windows/process.rb +2 -0
  44. data/lib/windows/registry.rb +171 -126
  45. data/lib/windows/security.rb +479 -477
  46. data/lib/windows/security/authentication.rb +32 -30
  47. data/lib/windows/service.rb +142 -140
  48. data/lib/windows/shell.rb +171 -169
  49. data/lib/windows/socket.rb +86 -0
  50. data/lib/windows/sound.rb +39 -37
  51. data/lib/windows/synchronize.rb +133 -131
  52. data/lib/windows/system_info.rb +4 -2
  53. data/lib/windows/thread.rb +2 -0
  54. data/lib/windows/time.rb +48 -46
  55. data/lib/windows/tool_helper.rb +36 -34
  56. data/lib/windows/unicode.rb +2 -0
  57. data/lib/windows/volume.rb +61 -59
  58. data/lib/windows/window.rb +81 -79
  59. data/lib/windows/window/classes.rb +59 -57
  60. data/lib/windows/window/dialog.rb +91 -89
  61. data/lib/windows/window/menu.rb +102 -100
  62. data/lib/windows/window/message.rb +297 -295
  63. data/lib/windows/window/properties.rb +20 -18
  64. data/lib/windows/window/timer.rb +19 -17
  65. data/lib/windows/wsa.rb +102 -0
  66. data/test/tc_clipboard.rb +41 -41
  67. data/test/tc_com.rb +32 -32
  68. data/test/tc_com_automation.rb +15 -15
  69. data/test/tc_console.rb +108 -108
  70. data/test/tc_debug.rb +48 -48
  71. data/test/tc_device_io.rb +29 -29
  72. data/test/tc_directory.rb +25 -25
  73. data/test/tc_error.rb +38 -50
  74. data/test/tc_eventlog.rb +58 -58
  75. data/test/tc_file.rb +67 -67
  76. data/test/tc_file_mapping.rb +38 -38
  77. data/test/tc_filesystem.rb +27 -27
  78. data/test/tc_gdi_bitmap.rb +25 -25
  79. data/test/tc_gdi_metafile.rb +23 -23
  80. data/test/tc_handle.rb +36 -36
  81. data/test/tc_library.rb +37 -37
  82. data/test/tc_limits.rb +34 -34
  83. data/test/tc_mailslot.rb +22 -22
  84. data/test/tc_memory.rb +44 -44
  85. data/test/tc_msvcrt_buffer.rb +59 -68
  86. data/test/tc_msvcrt_directory.rb +96 -98
  87. data/test/tc_msvcrt_file.rb +80 -80
  88. data/test/tc_msvcrt_io.rb +48 -48
  89. data/test/tc_msvcrt_string.rb +94 -93
  90. data/test/tc_msvcrt_time.rb +19 -29
  91. data/test/tc_national.rb +38 -38
  92. data/test/tc_network_management.rb +32 -32
  93. data/test/tc_network_snmp.rb +31 -31
  94. data/test/tc_network_winsock.rb +34 -34
  95. data/test/tc_nio.rb +32 -32
  96. data/test/tc_ntfs_winternl.rb +33 -18
  97. data/test/tc_path.rb +90 -90
  98. data/test/tc_pipe.rb +53 -53
  99. data/test/tc_process.rb +24 -24
  100. data/test/tc_registry.rb +29 -29
  101. data/test/tc_security.rb +104 -104
  102. data/test/tc_security_authentication.rb +34 -34
  103. data/test/tc_service.rb +57 -57
  104. data/test/tc_shell.rb +34 -34
  105. data/test/tc_socket.rb +20 -0
  106. data/test/tc_sound.rb +37 -37
  107. data/test/tc_synchronize.rb +75 -75
  108. data/test/tc_system_info.rb +33 -43
  109. data/test/tc_thread.rb +29 -29
  110. data/test/tc_time.rb +32 -32
  111. data/test/tc_tool_helper.rb +29 -29
  112. data/test/tc_unicode.rb +62 -62
  113. data/test/tc_volume.rb +47 -47
  114. data/test/tc_window.rb +45 -45
  115. data/test/tc_window_classes.rb +33 -33
  116. data/test/tc_window_dialog.rb +33 -33
  117. data/test/tc_window_menu.rb +29 -29
  118. data/test/tc_window_message.rb +33 -33
  119. data/test/tc_window_properties.rb +29 -29
  120. data/test/tc_window_timer.rb +29 -29
  121. data/test/tc_wsa.rb +19 -0
  122. data/windows-pr.gemspec +1 -1
  123. metadata +13 -7
@@ -1,57 +1,59 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Window
5
- module Classes
6
- API.auto_namespace = 'Windows::Window::Classes'
7
- API.auto_constant = true
8
- API.auto_method = true
9
- API.auto_unicode = true
10
-
11
- # Class Field Offsets
12
-
13
- GCL_MENUNAME = -8
14
- GCL_HBRBACKGROUND = -10
15
- GCL_HCURSOR = -12
16
- GCL_HICON = -14
17
- GCL_HMODULE = -16
18
- GCL_CBWNDEXTRA = -18
19
- GCL_CBCLSEXTRA = -20
20
- GCL_WNDPROC = -24
21
- GCL_STYLE = -26
22
- GCW_ATOM = -32
23
-
24
- # Window Field Offsets
25
-
26
- GWL_WNDPROC = -4
27
- GWL_HINSTANCE = -6
28
- GWL_HWNDPARENT = -8
29
- GWL_STYLE = -16
30
- GWL_EXSTYLE = -20
31
- GWL_USERDATA = -21
32
- GWL_ID = -12
33
-
34
- API.new('GetClassInfo', 'LPP', 'B', 'user32')
35
- API.new('GetClassInfoEx', 'LPP', 'B', 'user32')
36
- API.new('GetClassLong', 'LI', 'L', 'user32')
37
- API.new('GetClassName', 'LPI', 'I', 'user32')
38
- API.new('GetClassWord', 'LI', 'L', 'user32')
39
- API.new('GetWindowLong', 'LI', 'L', 'user32')
40
- API.new('RegisterClass', 'P', 'L', 'user32')
41
- API.new('RegisterClassEx', 'P', 'L', 'user32')
42
- API.new('SetClassLong', 'LIL', 'L', 'user32')
43
- API.new('SetClassWord', 'LIL', 'L', 'user32')
44
- API.new('SetWindowLong', 'LIL', 'L', 'user32')
45
- API.new('UnregisterClass', 'PL', 'B', 'user32')
46
-
47
- # In 32-bit Windows, these methods are aliases
48
- begin
49
- API.new('GetWindowLongPtr', 'LI', 'L', 'user32')
50
- API.new('SetWindowLongPtr', 'LIP', 'L', 'user32')
51
- rescue Win32::API::LoadLibraryError
52
- alias :GetWindowLongPtr :GetWindowLong
53
- alias :SetWindowLongPtr :SetWindowLong
54
- end
55
- end
56
- end
57
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Window
5
+ module Classes
6
+ API.auto_namespace = 'Windows::Window::Classes'
7
+ API.auto_constant = true
8
+ API.auto_method = true
9
+ API.auto_unicode = true
10
+
11
+ private
12
+
13
+ # Class Field Offsets
14
+
15
+ GCL_MENUNAME = -8
16
+ GCL_HBRBACKGROUND = -10
17
+ GCL_HCURSOR = -12
18
+ GCL_HICON = -14
19
+ GCL_HMODULE = -16
20
+ GCL_CBWNDEXTRA = -18
21
+ GCL_CBCLSEXTRA = -20
22
+ GCL_WNDPROC = -24
23
+ GCL_STYLE = -26
24
+ GCW_ATOM = -32
25
+
26
+ # Window Field Offsets
27
+
28
+ GWL_WNDPROC = -4
29
+ GWL_HINSTANCE = -6
30
+ GWL_HWNDPARENT = -8
31
+ GWL_STYLE = -16
32
+ GWL_EXSTYLE = -20
33
+ GWL_USERDATA = -21
34
+ GWL_ID = -12
35
+
36
+ API.new('GetClassInfo', 'LPP', 'B', 'user32')
37
+ API.new('GetClassInfoEx', 'LPP', 'B', 'user32')
38
+ API.new('GetClassLong', 'LI', 'L', 'user32')
39
+ API.new('GetClassName', 'LPI', 'I', 'user32')
40
+ API.new('GetClassWord', 'LI', 'L', 'user32')
41
+ API.new('GetWindowLong', 'LI', 'L', 'user32')
42
+ API.new('RegisterClass', 'P', 'L', 'user32')
43
+ API.new('RegisterClassEx', 'P', 'L', 'user32')
44
+ API.new('SetClassLong', 'LIL', 'L', 'user32')
45
+ API.new('SetClassWord', 'LIL', 'L', 'user32')
46
+ API.new('SetWindowLong', 'LIL', 'L', 'user32')
47
+ API.new('UnregisterClass', 'PL', 'B', 'user32')
48
+
49
+ # In 32-bit Windows, these methods are aliases
50
+ begin
51
+ API.new('GetWindowLongPtr', 'LI', 'L', 'user32')
52
+ API.new('SetWindowLongPtr', 'LIP', 'L', 'user32')
53
+ rescue Win32::API::LoadLibraryError
54
+ alias :GetWindowLongPtr :GetWindowLong
55
+ alias :SetWindowLongPtr :SetWindowLong
56
+ end
57
+ end
58
+ end
59
+ end
@@ -1,89 +1,91 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Window
5
- module Dialog
6
- API.auto_namespace = 'Windows::Window::Dialog'
7
- API.auto_constant = true
8
- API.auto_method = true
9
- API.auto_unicode = true
10
-
11
- MB_OK = 0x00000000
12
- MB_OKCANCEL = 0x00000001
13
- MB_ABORTRETRYIGNORE = 0x00000002
14
- MB_YESNOCANCEL = 0x00000003
15
- MB_YESNO = 0x00000004
16
- MB_RETRYCANCEL = 0x00000005
17
- MB_CANCELTRYCONTINUE = 0x00000006
18
- MB_ICONHAND = 0x00000010
19
- MB_ICONQUESTION = 0x00000020
20
- MB_ICONEXCLAMATION = 0x00000030
21
- MB_ICONASTERISK = 0x00000040
22
- MB_USERICON = 0x00000080
23
- MB_ICONWARNING = MB_ICONEXCLAMATION
24
- MB_ICONERROR = MB_ICONHAND
25
- MB_ICONINFORMATION = MB_ICONASTERISK
26
- MB_ICONSTOP = MB_ICONHAND
27
- MB_DEFBUTTON1 = 0x00000000
28
- MB_DEFBUTTON2 = 0x00000100
29
- MB_DEFBUTTON3 = 0x00000200
30
- MB_DEFBUTTON4 = 0x00000300
31
- MB_APPLMODAL = 0x00000000
32
- MB_SYSTEMMODAL = 0x00001000
33
- MB_TASKMODAL = 0x00002000
34
- MB_HELP = 0x00004000
35
- MB_NOFOCUS = 0x00008000
36
- MB_SETFOREGROUND = 0x00010000
37
- MB_DEFAULT_DESKTOP_ONLY = 0x00020000
38
- MB_TOPMOST = 0x00040000
39
- MB_RIGHT = 0x00080000
40
- MB_RTLREADING = 0x00100000
41
- MB_SERVICE_NOTIFICATION = 0x00200000 # Assume Win2k or later
42
- MB_SERVICE_NOTIFICATION_NT3X = 0x00040000
43
- MB_TYPEMASK = 0x0000000F
44
- MB_ICONMASK = 0x000000F0
45
- MB_DEFMASK = 0x00000F00
46
- MB_MODEMASK = 0x00003000
47
- MB_MISCMASK = 0x0000C000
48
-
49
- API.new('CreateDialogIndirectParam', 'LPLKL', 'L', 'user32')
50
- API.new('CreateDialogParam', 'LPLKL', 'L', 'user32')
51
- API.new('DialogBoxIndirectParam', 'LPLKL', 'P', 'user32')
52
- API.new('DialogBoxParam', 'LPLKL', 'P', 'user32')
53
- API.new('EndDialog', 'LP', 'B', 'user32')
54
- API.new('GetDialogBaseUnits', 'V', 'L', 'user32')
55
- API.new('GetDlgCtrlID', 'L', 'I', 'user32')
56
- API.new('GetDlgItem', 'LI', 'L', 'user32')
57
- API.new('GetDlgItemInt', 'LIPI', 'I', 'user32')
58
- API.new('GetDlgItemText', 'LIPI', 'I', 'user32')
59
- API.new('GetNextDlgGroupItem', 'LLI', 'L', 'user32')
60
- API.new('GetNextDlgTabItem', 'LLI', 'L', 'user32')
61
- API.new('IsDialogMessage', 'LP', 'B', 'user32')
62
- API.new('MapDialogRect', 'LP', 'B', 'user32')
63
- API.new('MessageBox', 'LPPI', 'I', 'user32')
64
- API.new('MessageBoxEx', 'LPPII', 'I', 'user32')
65
- API.new('MessageBoxIndirect', 'P', 'I', 'user32')
66
- API.new('SendDlgItemMessage', 'LIILL', 'L', 'user32')
67
- API.new('SetDlgItemInt', 'LIII', 'L', 'user32')
68
- API.new('SetDlgItemText', 'LIP', 'B', 'user32')
69
-
70
- # Macros from WinUser.h
71
-
72
- def CreateDialog(hInstance, lpName, hParent, lpDialogFunc)
73
- CreateDialogParam.call(hInstance, lpName, hParent, lpDialogFunc, 0)
74
- end
75
-
76
- def CreateDialogIndirect(hInst, lpTemp, hPar, lpDialFunc)
77
- CreateDialogIndirectParam.call(hInst, lpTemp, hPar, lpDialFunc, 0)
78
- end
79
-
80
- def DialogBox(hInstance, lpTemp, hParent, lpDialogFunc)
81
- DialogBoxParam.call(hInstance, lpTemp, hParent, lpDialogFunc, 0)
82
- end
83
-
84
- def DialogBoxIndirect(hInst, lpTemp, hParent, lpDialogFunc)
85
- DialogBoxParamIndirect.call(hInst, lpTemp, hParent, lpDialogFunc, 0)
86
- end
87
- end
88
- end
89
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Window
5
+ module Dialog
6
+ API.auto_namespace = 'Windows::Window::Dialog'
7
+ API.auto_constant = true
8
+ API.auto_method = true
9
+ API.auto_unicode = true
10
+
11
+ private
12
+
13
+ MB_OK = 0x00000000
14
+ MB_OKCANCEL = 0x00000001
15
+ MB_ABORTRETRYIGNORE = 0x00000002
16
+ MB_YESNOCANCEL = 0x00000003
17
+ MB_YESNO = 0x00000004
18
+ MB_RETRYCANCEL = 0x00000005
19
+ MB_CANCELTRYCONTINUE = 0x00000006
20
+ MB_ICONHAND = 0x00000010
21
+ MB_ICONQUESTION = 0x00000020
22
+ MB_ICONEXCLAMATION = 0x00000030
23
+ MB_ICONASTERISK = 0x00000040
24
+ MB_USERICON = 0x00000080
25
+ MB_ICONWARNING = MB_ICONEXCLAMATION
26
+ MB_ICONERROR = MB_ICONHAND
27
+ MB_ICONINFORMATION = MB_ICONASTERISK
28
+ MB_ICONSTOP = MB_ICONHAND
29
+ MB_DEFBUTTON1 = 0x00000000
30
+ MB_DEFBUTTON2 = 0x00000100
31
+ MB_DEFBUTTON3 = 0x00000200
32
+ MB_DEFBUTTON4 = 0x00000300
33
+ MB_APPLMODAL = 0x00000000
34
+ MB_SYSTEMMODAL = 0x00001000
35
+ MB_TASKMODAL = 0x00002000
36
+ MB_HELP = 0x00004000
37
+ MB_NOFOCUS = 0x00008000
38
+ MB_SETFOREGROUND = 0x00010000
39
+ MB_DEFAULT_DESKTOP_ONLY = 0x00020000
40
+ MB_TOPMOST = 0x00040000
41
+ MB_RIGHT = 0x00080000
42
+ MB_RTLREADING = 0x00100000
43
+ MB_SERVICE_NOTIFICATION = 0x00200000 # Assume Win2k or later
44
+ MB_SERVICE_NOTIFICATION_NT3X = 0x00040000
45
+ MB_TYPEMASK = 0x0000000F
46
+ MB_ICONMASK = 0x000000F0
47
+ MB_DEFMASK = 0x00000F00
48
+ MB_MODEMASK = 0x00003000
49
+ MB_MISCMASK = 0x0000C000
50
+
51
+ API.new('CreateDialogIndirectParam', 'LPLKL', 'L', 'user32')
52
+ API.new('CreateDialogParam', 'LPLKL', 'L', 'user32')
53
+ API.new('DialogBoxIndirectParam', 'LPLKL', 'P', 'user32')
54
+ API.new('DialogBoxParam', 'LPLKL', 'P', 'user32')
55
+ API.new('EndDialog', 'LP', 'B', 'user32')
56
+ API.new('GetDialogBaseUnits', 'V', 'L', 'user32')
57
+ API.new('GetDlgCtrlID', 'L', 'I', 'user32')
58
+ API.new('GetDlgItem', 'LI', 'L', 'user32')
59
+ API.new('GetDlgItemInt', 'LIPI', 'I', 'user32')
60
+ API.new('GetDlgItemText', 'LIPI', 'I', 'user32')
61
+ API.new('GetNextDlgGroupItem', 'LLI', 'L', 'user32')
62
+ API.new('GetNextDlgTabItem', 'LLI', 'L', 'user32')
63
+ API.new('IsDialogMessage', 'LP', 'B', 'user32')
64
+ API.new('MapDialogRect', 'LP', 'B', 'user32')
65
+ API.new('MessageBox', 'LPPI', 'I', 'user32')
66
+ API.new('MessageBoxEx', 'LPPII', 'I', 'user32')
67
+ API.new('MessageBoxIndirect', 'P', 'I', 'user32')
68
+ API.new('SendDlgItemMessage', 'LIILL', 'L', 'user32')
69
+ API.new('SetDlgItemInt', 'LIII', 'L', 'user32')
70
+ API.new('SetDlgItemText', 'LIP', 'B', 'user32')
71
+
72
+ # Macros from WinUser.h
73
+
74
+ def CreateDialog(hInstance, lpName, hParent, lpDialogFunc)
75
+ CreateDialogParam.call(hInstance, lpName, hParent, lpDialogFunc, 0)
76
+ end
77
+
78
+ def CreateDialogIndirect(hInst, lpTemp, hPar, lpDialFunc)
79
+ CreateDialogIndirectParam.call(hInst, lpTemp, hPar, lpDialFunc, 0)
80
+ end
81
+
82
+ def DialogBox(hInstance, lpTemp, hParent, lpDialogFunc)
83
+ DialogBoxParam.call(hInstance, lpTemp, hParent, lpDialogFunc, 0)
84
+ end
85
+
86
+ def DialogBoxIndirect(hInst, lpTemp, hParent, lpDialogFunc)
87
+ DialogBoxParamIndirect.call(hInst, lpTemp, hParent, lpDialogFunc, 0)
88
+ end
89
+ end
90
+ end
91
+ end
@@ -1,100 +1,102 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Window
5
- module Menu
6
- API.auto_namespace = 'Windows::Window::Menu'
7
- API.auto_constant = true
8
- API.auto_method = true
9
- API.auto_unicode = true
10
-
11
- # Menu Flags
12
-
13
- MF_INSERT = 0x00000000
14
- MF_CHANGE = 0x00000080
15
- MF_APPEND = 0x00000100
16
- MF_DELETE = 0x00000200
17
- MF_REMOVE = 0x00001000
18
- MF_BYCOMMAND = 0x00000000
19
- MF_BYPOSITION = 0x00000400
20
- MF_SEPARATOR = 0x00000800
21
- MF_ENABLED = 0x00000000
22
- MF_GRAYED = 0x00000001
23
- MF_DISABLED = 0x00000002
24
- MF_UNCHECKED = 0x00000000
25
- MF_CHECKED = 0x00000008
26
- MF_USECHECKBITMAPS = 0x00000200
27
- MF_STRING = 0x00000000
28
- MF_BITMAP = 0x00000004
29
- MF_OWNERDRAW = 0x00000100
30
- MF_POPUP = 0x00000010
31
- MF_MENUBARBREAK = 0x00000020
32
- MF_MENUBREAK = 0x00000040
33
- MF_UNHILITE = 0x00000000
34
- MF_HILITE = 0x00000080
35
- MF_DEFAULT = 0x00001000
36
- MF_SYSMENU = 0x00002000
37
- MF_HELP = 0x00004000
38
- MF_RIGHTJUSTIFY = 0x00004000
39
- MF_MOUSESELECT = 0x00008000
40
- MF_END = 0x00000080
41
-
42
- # System Objects
43
-
44
- OBJID_WINDOW = 0x00000000
45
- OBJID_SYSMENU = 0xFFFFFFFF
46
- OBJID_TITLEBAR = 0xFFFFFFFE
47
- OBJID_MENU = 0xFFFFFFFD
48
- OBJID_CLIENT = 0xFFFFFFFC
49
- OBJID_VSCROLL = 0xFFFFFFFB
50
- OBJID_HSCROLL = 0xFFFFFFFA
51
- OBJID_SIZEGRIP = 0xFFFFFFF9
52
- OBJID_CARET = 0xFFFFFFF8
53
- OBJID_CURSOR = 0xFFFFFFF7
54
- OBJID_ALERT = 0xFFFFFFF6
55
- OBJID_SOUND = 0xFFFFFFF5
56
- OBJID_QUERYCLASSNAMEIDX = 0xFFFFFFF4
57
- OBJID_NATIVEOM = 0xFFFFFFF0
58
-
59
- API.new('AppendMenu', 'LIPP', 'B', 'user32')
60
- API.new('CheckMenuItem', 'LII', 'L', 'user32')
61
- API.new('CheckMenuRadioItem', 'LIIII', 'B', 'user32')
62
- API.new('CreateMenu', 'V', 'L', 'user32')
63
- API.new('CreatePopupMenu', 'V', 'L', 'user32')
64
- API.new('DeleteMenu', 'LII', 'B', 'user32')
65
- API.new('DestroyMenu', 'L', 'B', 'user32')
66
- API.new('DrawMenuBar', 'L', 'B', 'user32')
67
- API.new('EnableMenuItem', 'LII', 'B', 'user32')
68
- API.new('EndMenu', 'V', 'B', 'user32')
69
- API.new('GetMenu', 'L', 'L', 'user32')
70
- API.new('GetMenuBarInfo', 'LLLP', 'B', 'user32')
71
- API.new('GetMenuCheckMarkDimensions', 'V', 'L', 'user32')
72
- API.new('GetMenuDefaultItem', 'LII', 'I', 'user32')
73
- API.new('GetMenuInfo', 'LP', 'B', 'user32')
74
- API.new('GetMenuItemCount', 'L', 'I', 'user32')
75
- API.new('GetMenuItemID', 'LI', 'I', 'user32')
76
- API.new('GetMenuItemInfo', 'LIIP', 'B', 'user32')
77
- API.new('GetMenuItemRect', 'LLIP', 'B', 'user32')
78
- API.new('GetMenuState', 'LLI', 'I', 'user32')
79
- API.new('GetMenuString', 'LIPII', 'I', 'user32')
80
- API.new('GetSubMenu', 'LI', 'L', 'user32')
81
- API.new('GetSystemMenu', 'LI', 'L', 'user32')
82
- API.new('HiliteMenuItem', 'LLII', 'B', 'user32')
83
- API.new('InsertMenu', 'LIIPP', 'B', 'user32')
84
- API.new('InsertMenuItem', 'LIIP', 'B', 'user32')
85
- API.new('IsMenu', 'L', 'B', 'user32')
86
- API.new('LoadMenu', 'LP', 'L', 'user32')
87
- API.new('LoadMenuIndirect', 'P', 'L', 'user32')
88
- API.new('MenuItemFromPoint', 'LLP', 'I', 'user32')
89
- API.new('ModifyMenu', 'LIIPP', 'B', 'user32')
90
- API.new('RemoveMenu', 'LII', 'B', 'user32')
91
- API.new('SetMenu', 'LL', 'B', 'user32')
92
- API.new('SetMenuDefaultItem', 'LLL', 'B', 'user32')
93
- API.new('SetMenuInfo', 'LP', 'B', 'user32')
94
- API.new('SetMenuItemBitmaps', 'LIILL', 'B', 'user32')
95
- API.new('SetMenuItemInfo', 'LIIP', 'B', 'user32')
96
- API.new('TrackPopupMenu', 'LIIIILP', 'B', 'user32')
97
- API.new('TrackPopupMenuEx', 'LIIILP', 'B', 'user32')
98
- end
99
- end
100
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Window
5
+ module Menu
6
+ API.auto_namespace = 'Windows::Window::Menu'
7
+ API.auto_constant = true
8
+ API.auto_method = true
9
+ API.auto_unicode = true
10
+
11
+ private
12
+
13
+ # Menu Flags
14
+
15
+ MF_INSERT = 0x00000000
16
+ MF_CHANGE = 0x00000080
17
+ MF_APPEND = 0x00000100
18
+ MF_DELETE = 0x00000200
19
+ MF_REMOVE = 0x00001000
20
+ MF_BYCOMMAND = 0x00000000
21
+ MF_BYPOSITION = 0x00000400
22
+ MF_SEPARATOR = 0x00000800
23
+ MF_ENABLED = 0x00000000
24
+ MF_GRAYED = 0x00000001
25
+ MF_DISABLED = 0x00000002
26
+ MF_UNCHECKED = 0x00000000
27
+ MF_CHECKED = 0x00000008
28
+ MF_USECHECKBITMAPS = 0x00000200
29
+ MF_STRING = 0x00000000
30
+ MF_BITMAP = 0x00000004
31
+ MF_OWNERDRAW = 0x00000100
32
+ MF_POPUP = 0x00000010
33
+ MF_MENUBARBREAK = 0x00000020
34
+ MF_MENUBREAK = 0x00000040
35
+ MF_UNHILITE = 0x00000000
36
+ MF_HILITE = 0x00000080
37
+ MF_DEFAULT = 0x00001000
38
+ MF_SYSMENU = 0x00002000
39
+ MF_HELP = 0x00004000
40
+ MF_RIGHTJUSTIFY = 0x00004000
41
+ MF_MOUSESELECT = 0x00008000
42
+ MF_END = 0x00000080
43
+
44
+ # System Objects
45
+
46
+ OBJID_WINDOW = 0x00000000
47
+ OBJID_SYSMENU = 0xFFFFFFFF
48
+ OBJID_TITLEBAR = 0xFFFFFFFE
49
+ OBJID_MENU = 0xFFFFFFFD
50
+ OBJID_CLIENT = 0xFFFFFFFC
51
+ OBJID_VSCROLL = 0xFFFFFFFB
52
+ OBJID_HSCROLL = 0xFFFFFFFA
53
+ OBJID_SIZEGRIP = 0xFFFFFFF9
54
+ OBJID_CARET = 0xFFFFFFF8
55
+ OBJID_CURSOR = 0xFFFFFFF7
56
+ OBJID_ALERT = 0xFFFFFFF6
57
+ OBJID_SOUND = 0xFFFFFFF5
58
+ OBJID_QUERYCLASSNAMEIDX = 0xFFFFFFF4
59
+ OBJID_NATIVEOM = 0xFFFFFFF0
60
+
61
+ API.new('AppendMenu', 'LIPP', 'B', 'user32')
62
+ API.new('CheckMenuItem', 'LII', 'L', 'user32')
63
+ API.new('CheckMenuRadioItem', 'LIIII', 'B', 'user32')
64
+ API.new('CreateMenu', 'V', 'L', 'user32')
65
+ API.new('CreatePopupMenu', 'V', 'L', 'user32')
66
+ API.new('DeleteMenu', 'LII', 'B', 'user32')
67
+ API.new('DestroyMenu', 'L', 'B', 'user32')
68
+ API.new('DrawMenuBar', 'L', 'B', 'user32')
69
+ API.new('EnableMenuItem', 'LII', 'B', 'user32')
70
+ API.new('EndMenu', 'V', 'B', 'user32')
71
+ API.new('GetMenu', 'L', 'L', 'user32')
72
+ API.new('GetMenuBarInfo', 'LLLP', 'B', 'user32')
73
+ API.new('GetMenuCheckMarkDimensions', 'V', 'L', 'user32')
74
+ API.new('GetMenuDefaultItem', 'LII', 'I', 'user32')
75
+ API.new('GetMenuInfo', 'LP', 'B', 'user32')
76
+ API.new('GetMenuItemCount', 'L', 'I', 'user32')
77
+ API.new('GetMenuItemID', 'LI', 'I', 'user32')
78
+ API.new('GetMenuItemInfo', 'LIIP', 'B', 'user32')
79
+ API.new('GetMenuItemRect', 'LLIP', 'B', 'user32')
80
+ API.new('GetMenuState', 'LLI', 'I', 'user32')
81
+ API.new('GetMenuString', 'LIPII', 'I', 'user32')
82
+ API.new('GetSubMenu', 'LI', 'L', 'user32')
83
+ API.new('GetSystemMenu', 'LI', 'L', 'user32')
84
+ API.new('HiliteMenuItem', 'LLII', 'B', 'user32')
85
+ API.new('InsertMenu', 'LIIPP', 'B', 'user32')
86
+ API.new('InsertMenuItem', 'LIIP', 'B', 'user32')
87
+ API.new('IsMenu', 'L', 'B', 'user32')
88
+ API.new('LoadMenu', 'LP', 'L', 'user32')
89
+ API.new('LoadMenuIndirect', 'P', 'L', 'user32')
90
+ API.new('MenuItemFromPoint', 'LLP', 'I', 'user32')
91
+ API.new('ModifyMenu', 'LIIPP', 'B', 'user32')
92
+ API.new('RemoveMenu', 'LII', 'B', 'user32')
93
+ API.new('SetMenu', 'LL', 'B', 'user32')
94
+ API.new('SetMenuDefaultItem', 'LLL', 'B', 'user32')
95
+ API.new('SetMenuInfo', 'LP', 'B', 'user32')
96
+ API.new('SetMenuItemBitmaps', 'LIILL', 'B', 'user32')
97
+ API.new('SetMenuItemInfo', 'LIIP', 'B', 'user32')
98
+ API.new('TrackPopupMenu', 'LIIIILP', 'B', 'user32')
99
+ API.new('TrackPopupMenuEx', 'LIIILP', 'B', 'user32')
100
+ end
101
+ end
102
+ end