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