remove relatives lock, window props lock, classes locks, thread window lock, menu...
[reactos.git] / reactos / subsys / win32k / include / menu.h
1 #ifndef _WIN32K_MENU_H
2 #define _WIN32K_MENU_H
3
4 #include <win32k/menu.h>
5
6 #define IS_ATOM(x) \
7 (((ULONG_PTR)(x) > 0x0) && ((ULONG_PTR)(x) < 0x10000))
8
9 #define MENU_ITEM_TYPE(flags) \
10 ((flags) & (MF_STRING | MF_BITMAP | MF_OWNERDRAW | MF_SEPARATOR))
11
12 #ifndef MF_END
13 #define MF_END (0x0080)
14 #endif
15
16 typedef struct _MENU_ITEM
17 {
18 struct _MENU_ITEM *Next;
19 UINT fType;
20 UINT fState;
21 UINT wID;
22 HMENU hSubMenu;
23 HBITMAP hbmpChecked;
24 HBITMAP hbmpUnchecked;
25 ULONG_PTR dwItemData;
26 UNICODE_STRING Text;
27 HBITMAP hbmpItem;
28 RECT Rect;
29 UINT XTab;
30 } MENU_ITEM, *PMENU_ITEM;
31
32 typedef struct _MENU_OBJECT
33 {
34 PEPROCESS Process;
35 LIST_ENTRY ListEntry;
36 PMENU_ITEM MenuItemList;
37 ROSMENUINFO MenuInfo;
38 BOOL RtoL;
39 } MENU_OBJECT, *PMENU_OBJECT;
40
41 PMENU_OBJECT FASTCALL
42 IntGetMenuObject(HMENU hMenu);
43
44 #define IntReleaseMenuObject(MenuObj) \
45 ObmDereferenceObject(MenuObj)
46
47 BOOL FASTCALL
48 IntFreeMenuItem(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem,
49 BOOL RemoveFromList, BOOL bRecurse);
50
51 BOOL FASTCALL
52 IntRemoveMenuItem(PMENU_OBJECT MenuObject, UINT uPosition, UINT uFlags,
53 BOOL bRecurse);
54
55 UINT FASTCALL
56 IntDeleteMenuItems(PMENU_OBJECT MenuObject, BOOL bRecurse);
57
58 BOOL FASTCALL
59 IntDestroyMenuObject(PMENU_OBJECT MenuObject, BOOL bRecurse, BOOL RemoveFromProcess);
60
61 PMENU_OBJECT FASTCALL
62 IntCreateMenu(PHANDLE Handle, BOOL IsMenuBar);
63
64 PMENU_OBJECT FASTCALL
65 IntCloneMenu(PMENU_OBJECT Source);
66
67 BOOL FASTCALL
68 IntSetMenuFlagRtoL(PMENU_OBJECT MenuObject);
69
70 BOOL FASTCALL
71 IntSetMenuContextHelpId(PMENU_OBJECT MenuObject, DWORD dwContextHelpId);
72
73 BOOL FASTCALL
74 IntGetMenuInfo(PMENU_OBJECT MenuObject, PROSMENUINFO lpmi);
75
76 BOOL FASTCALL
77 IntIsMenu(HMENU hMenu);
78
79 BOOL FASTCALL
80 IntSetMenuInfo(PMENU_OBJECT MenuObject, PROSMENUINFO lpmi);
81
82 int FASTCALL
83 IntGetMenuItemByFlag(PMENU_OBJECT MenuObject, UINT uSearchBy, UINT fFlag,
84 PMENU_ITEM *MenuItem, PMENU_ITEM *PrevMenuItem);
85
86 UINT FASTCALL
87 IntEnableMenuItem(PMENU_OBJECT MenuObject, UINT uIDEnableItem, UINT uEnable);
88
89 DWORD FASTCALL
90 IntCheckMenuItem(PMENU_OBJECT MenuObject, UINT uIDCheckItem, UINT uCheck);
91
92 BOOL FASTCALL
93 IntSetMenuDefaultItem(PMENU_OBJECT MenuObject, UINT uItem, UINT fByPos);
94
95 BOOL FASTCALL
96 IntSetMenuItemRect(PMENU_OBJECT MenuObject, UINT Item, BOOL fByPos, RECT *rcRect);
97
98 BOOL FASTCALL
99 IntCleanupMenus(struct _EPROCESS *Process, PW32PROCESS Win32Process);
100
101 BOOL FASTCALL
102 IntInsertMenuItem(PMENU_OBJECT MenuObject, UINT uItem, BOOL fByPosition,
103 PROSMENUITEMINFO ItemInfo);
104
105
106 NTSTATUS FASTCALL
107 InitMenuImpl(VOID);
108
109 NTSTATUS FASTCALL
110 CleanupMenuImpl(VOID);
111
112 #endif /* _WIN32K_MENU_H */