2010-02-26 11:43:19 +00:00
|
|
|
#pragma once
|
2003-07-31 23:14:37 +00:00
|
|
|
|
|
|
|
#define IS_ATOM(x) \
|
|
|
|
(((ULONG_PTR)(x) > 0x0) && ((ULONG_PTR)(x) < 0x10000))
|
2005-05-08 02:11:54 +00:00
|
|
|
|
2003-08-04 10:13:51 +00:00
|
|
|
#define MENU_ITEM_TYPE(flags) \
|
|
|
|
((flags) & (MF_STRING | MF_BITMAP | MF_OWNERDRAW | MF_SEPARATOR))
|
2005-05-08 02:11:54 +00:00
|
|
|
|
2003-08-04 10:13:51 +00:00
|
|
|
#ifndef MF_END
|
|
|
|
#define MF_END (0x0080)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
typedef struct _MENU_ITEM
|
|
|
|
{
|
|
|
|
struct _MENU_ITEM *Next;
|
2003-08-18 11:58:17 +00:00
|
|
|
UINT fType;
|
|
|
|
UINT fState;
|
|
|
|
UINT wID;
|
|
|
|
HMENU hSubMenu;
|
|
|
|
HBITMAP hbmpChecked;
|
|
|
|
HBITMAP hbmpUnchecked;
|
|
|
|
ULONG_PTR dwItemData;
|
2003-08-27 22:58:12 +00:00
|
|
|
UNICODE_STRING Text;
|
2003-08-18 11:58:17 +00:00
|
|
|
HBITMAP hbmpItem;
|
2009-03-19 01:42:34 +00:00
|
|
|
RECTL Rect;
|
2010-03-23 02:42:11 +00:00
|
|
|
UINT dxTab;
|
2003-08-04 10:13:51 +00:00
|
|
|
} MENU_ITEM, *PMENU_ITEM;
|
2003-07-31 23:14:37 +00:00
|
|
|
|
|
|
|
typedef struct _MENU_OBJECT
|
|
|
|
{
|
2010-01-14 13:33:04 +00:00
|
|
|
PROCDESKHEAD head;
|
2004-11-20 16:46:06 +00:00
|
|
|
PEPROCESS Process;
|
2003-08-18 13:37:54 +00:00
|
|
|
LIST_ENTRY ListEntry;
|
2003-08-04 10:13:51 +00:00
|
|
|
PMENU_ITEM MenuItemList;
|
2004-02-15 07:39:12 +00:00
|
|
|
ROSMENUINFO MenuInfo;
|
2003-07-31 23:14:37 +00:00
|
|
|
BOOL RtoL;
|
|
|
|
} MENU_OBJECT, *PMENU_OBJECT;
|
|
|
|
|
2005-12-28 20:31:44 +00:00
|
|
|
typedef struct _SETMENUITEMRECT
|
|
|
|
{
|
|
|
|
UINT uItem;
|
|
|
|
BOOL fByPosition;
|
2009-03-19 01:42:34 +00:00
|
|
|
RECTL rcRect;
|
2005-12-28 20:31:44 +00:00
|
|
|
} SETMENUITEMRECT, *PSETMENUITEMRECT;
|
|
|
|
|
2003-08-06 13:17:44 +00:00
|
|
|
PMENU_OBJECT FASTCALL
|
2003-08-19 11:48:50 +00:00
|
|
|
IntGetMenuObject(HMENU hMenu);
|
2003-08-06 13:17:44 +00:00
|
|
|
|
2004-02-24 13:27:03 +00:00
|
|
|
#define IntReleaseMenuObject(MenuObj) \
|
2008-02-13 00:46:23 +00:00
|
|
|
UserDereferenceObject(MenuObj)
|
2003-08-06 13:17:44 +00:00
|
|
|
|
|
|
|
BOOL FASTCALL
|
2003-08-21 15:26:19 +00:00
|
|
|
IntDestroyMenuObject(PMENU_OBJECT MenuObject, BOOL bRecurse, BOOL RemoveFromProcess);
|
2003-08-06 13:17:44 +00:00
|
|
|
|
2003-08-21 15:26:19 +00:00
|
|
|
PMENU_OBJECT FASTCALL
|
|
|
|
IntCloneMenu(PMENU_OBJECT Source);
|
2003-08-06 13:17:44 +00:00
|
|
|
|
|
|
|
int FASTCALL
|
2005-05-08 02:11:54 +00:00
|
|
|
IntGetMenuItemByFlag(PMENU_OBJECT MenuObject, UINT uSearchBy, UINT fFlag,
|
2007-10-21 09:08:04 +00:00
|
|
|
PMENU_OBJECT *SubMenu, PMENU_ITEM *MenuItem,
|
|
|
|
PMENU_ITEM *PrevMenuItem);
|
2005-05-08 02:11:54 +00:00
|
|
|
|
2003-08-18 13:37:54 +00:00
|
|
|
BOOL FASTCALL
|
2009-07-26 16:17:50 +00:00
|
|
|
IntCleanupMenus(struct _EPROCESS *Process, PPROCESSINFO Win32Process);
|
2003-08-18 13:37:54 +00:00
|
|
|
|
2004-02-22 23:40:58 +00:00
|
|
|
BOOL FASTCALL
|
2012-12-18 21:44:58 +00:00
|
|
|
IntInsertMenuItem(_In_ PMENU_OBJECT MenuObject, UINT uItem, BOOL fByPosition,
|
2004-02-22 23:40:58 +00:00
|
|
|
PROSMENUITEMINFO ItemInfo);
|
2003-08-06 13:17:44 +00:00
|
|
|
|
2011-08-27 12:38:23 +00:00
|
|
|
PMENU_OBJECT FASTCALL
|
|
|
|
IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu);
|
2011-09-20 18:04:14 +00:00
|
|
|
|
|
|
|
UINT FASTCALL IntFindSubMenu(HMENU *hMenu, HMENU hSubTarget );
|
|
|
|
UINT FASTCALL IntGetMenuState( HMENU hMenu, UINT uId, UINT uFlags);
|
|
|
|
|