update for HEAD-2003091401
[reactos.git] / subsys / win32k / include / menu.h
1 #ifndef __WIN32K_MENU_H
2 #define __WIN32K_MENU_H
3
4 #include <ddk/ntddk.h>
5 #include <napi/win32.h>
6
7 #define IS_ATOM(x) \
8   (((ULONG_PTR)(x) > 0x0) && ((ULONG_PTR)(x) < 0x10000))
9   
10 #define MENU_ITEM_TYPE(flags) \
11   ((flags) & (MF_STRING | MF_BITMAP | MF_OWNERDRAW | MF_SEPARATOR))
12   
13 #ifndef MF_END
14 #define MF_END             (0x0080)
15 #endif
16
17 typedef struct _MENU_ITEM
18 {
19   struct _MENU_ITEM *Next;
20   UINT fType;
21   UINT fState;
22   UINT wID;
23   HMENU hSubMenu;
24   HBITMAP hbmpChecked;
25   HBITMAP hbmpUnchecked;
26   ULONG_PTR dwItemData;
27   UNICODE_STRING Text;
28   HBITMAP hbmpItem;
29   RECT Rect;
30 } MENU_ITEM, *PMENU_ITEM;
31
32 typedef struct _MENU_OBJECT
33 {
34   HANDLE Self;
35   LIST_ENTRY ListEntry;
36   int MenuItemCount;
37   FAST_MUTEX MenuItemsLock;
38   PMENU_ITEM MenuItemList;
39   MENUINFO MenuInfo;
40   BOOL RtoL;
41   BOOL IsSystemMenu;
42 } MENU_OBJECT, *PMENU_OBJECT;
43
44 PMENU_OBJECT FASTCALL
45 IntGetMenuObject(HMENU hMenu);
46
47 VOID FASTCALL
48 IntReleaseMenuObject(PMENU_OBJECT MenuObject);
49
50 BOOL FASTCALL
51 IntFreeMenuItem(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem,
52     BOOL RemoveFromList, BOOL bRecurse);
53     
54 BOOL FASTCALL
55 IntRemoveMenuItem(PMENU_OBJECT MenuObject, UINT uPosition, UINT uFlags, 
56                    BOOL bRecurse);
57     
58 UINT FASTCALL
59 IntDeleteMenuItems(PMENU_OBJECT MenuObject, BOOL bRecurse);
60
61 BOOL FASTCALL
62 IntDestroyMenuObject(PMENU_OBJECT MenuObject, BOOL bRecurse, BOOL RemoveFromProcess);
63
64 PMENU_OBJECT FASTCALL
65 IntCreateMenu(PHANDLE Handle);
66
67 PMENU_OBJECT FASTCALL
68 IntCloneMenu(PMENU_OBJECT Source);
69
70 BOOL FASTCALL
71 IntSetMenuFlagRtoL(PMENU_OBJECT MenuObject);
72
73 BOOL FASTCALL
74 IntSetMenuContextHelpId(PMENU_OBJECT MenuObject, DWORD dwContextHelpId);
75
76 BOOL FASTCALL
77 IntGetMenuInfo(PMENU_OBJECT MenuObject, LPMENUINFO lpmi);
78
79 BOOL FASTCALL
80 IntSetMenuInfo(PMENU_OBJECT MenuObject, LPMENUINFO lpmi);
81
82 int FASTCALL
83 IntGetMenuItemByFlag(PMENU_OBJECT MenuObject, UINT uSearchBy, UINT fFlag, 
84                       PMENU_ITEM *MenuItem, PMENU_ITEM *PrevMenuItem);
85
86 BOOL FASTCALL
87 IntGetMenuItemInfo(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, LPMENUITEMINFOW lpmii);
88
89 BOOL FASTCALL
90 IntSetMenuItemInfo(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, LPCMENUITEMINFOW lpmii);
91
92 BOOL FASTCALL
93 IntInsertMenuItem(PMENU_OBJECT MenuObject, UINT uItem, WINBOOL fByPosition,
94                    LPCMENUITEMINFOW lpmii);
95                    
96 UINT FASTCALL
97 IntEnableMenuItem(PMENU_OBJECT MenuObject, UINT uIDEnableItem, UINT uEnable);
98
99 DWORD FASTCALL
100 IntCheckMenuItem(PMENU_OBJECT MenuObject, UINT uIDCheckItem, UINT uCheck);
101
102 BOOL FASTCALL
103 IntSetMenuDefaultItem(PMENU_OBJECT MenuObject, UINT uItem, UINT fByPos);
104
105 BOOL FASTCALL
106 IntCleanupMenus(struct _EPROCESS *Process, PW32PROCESS Win32Process);
107
108
109
110 NTSTATUS FASTCALL
111 InitMenuImpl(VOID);
112
113 NTSTATUS FASTCALL
114 CleanupMenuImpl(VOID);
115
116 DWORD
117 STDCALL
118 NtUserBuildMenuItemList(
119  HMENU hMenu,
120  PVOID Buffer,
121  ULONG nBufSize,
122  DWORD Reserved);
123
124 DWORD
125 STDCALL
126 NtUserCheckMenuItem(
127   HMENU hmenu,
128   UINT uIDCheckItem,
129   UINT uCheck);
130   
131 HMENU
132 STDCALL
133 NtUserCreateMenu(VOID);
134
135 BOOL
136 STDCALL
137 NtUserDeleteMenu(
138 HMENU hMenu,
139   UINT uPosition,
140   UINT uFlags);
141   
142 BOOL
143 STDCALL
144 NtUserDestroyMenu(
145   HMENU hMenu);
146   
147 DWORD
148 STDCALL
149 NtUserDrawMenuBarTemp(
150   HWND hWnd,
151   HDC hDC,
152   PRECT hRect,
153   HMENU hMenu,
154   HFONT hFont);
155   
156 UINT
157 STDCALL
158 NtUserEnableMenuItem(
159   HMENU hMenu,
160   UINT uIDEnableItem,
161   UINT uEnable);
162   
163 DWORD
164 STDCALL
165 NtUserInsertMenuItem(
166   HMENU hMenu,
167   UINT uItem,
168   WINBOOL fByPosition,
169   LPCMENUITEMINFOW lpmii);
170
171   
172 BOOL
173 STDCALL
174 NtUserEndMenu(VOID);
175
176 UINT
177 STDCALL
178 NtUserGetMenuDefaultItem(
179   HMENU hMenu,
180   UINT fByPos,
181   UINT gmdiFlags);
182
183 BOOL
184 STDCALL
185 NtUserGetMenuBarInfo(
186   HWND hwnd,
187   LONG idObject,
188   LONG idItem,
189   PMENUBARINFO pmbi);
190   
191 UINT
192 STDCALL
193 NtUserGetMenuIndex(
194   HMENU hMenu,
195   UINT wID);
196   
197 BOOL
198 STDCALL
199 NtUserGetMenuItemRect(
200   HWND hWnd,
201   HMENU hMenu,
202   UINT uItem,
203   LPRECT lprcItem);
204   
205 BOOL
206 STDCALL
207 NtUserHiliteMenuItem(
208   HWND hwnd,
209   HMENU hmenu,
210   UINT uItemHilite,
211   UINT uHilite);
212
213 BOOL
214 STDCALL
215 NtUserMenuInfo(
216  HMENU hmenu,
217  LPMENUINFO lpmi,
218  BOOL fsog);
219   
220 int
221 STDCALL
222 NtUserMenuItemFromPoint(
223   HWND hWnd,
224   HMENU hMenu,
225   DWORD X,
226   DWORD Y);
227
228 BOOL
229 STDCALL
230 NtUserMenuItemInfo(
231  HMENU hMenu,
232  UINT uItem,
233  BOOL fByPosition,
234  LPMENUITEMINFOW lpmii,
235  BOOL fsog);
236   
237 BOOL
238 STDCALL
239 NtUserRemoveMenu(
240   HMENU hMenu,
241   UINT uPosition,
242   UINT uFlags);
243   
244 BOOL
245 STDCALL
246 NtUserSetMenuContextHelpId(
247   HMENU hmenu,
248   DWORD dwContextHelpId);
249   
250 BOOL
251 STDCALL
252 NtUserSetMenuDefaultItem(
253   HMENU hMenu,
254   UINT uItem,
255   UINT fByPos);
256   
257 BOOL
258 STDCALL
259 NtUserSetMenuFlagRtoL(
260   HMENU hMenu);
261   
262 DWORD
263 STDCALL
264 NtUserThunkedMenuInfo(
265   HMENU hMenu,
266   LPCMENUINFO lpcmi);
267   
268 DWORD
269 STDCALL
270 NtUserThunkedMenuItemInfo(
271   HMENU hMenu,
272   UINT uItem,
273   BOOL fByPosition,
274   BOOL bInsert,
275   LPMENUITEMINFOW lpmii,
276   PUNICODE_STRING lpszCaption);
277   
278 BOOL
279 STDCALL
280 NtUserTrackPopupMenuEx(
281   HMENU hmenu,
282   UINT fuFlags,
283   int x,
284   int y,
285   HWND hwnd,
286   LPTPMPARAMS lptpm);
287
288 #endif /* __WIN32K_MENU_H */
289
290 /* EOF */