4 #include <win32k/menu.h>
7 (((ULONG_PTR)(x) > 0x0) && ((ULONG_PTR)(x) < 0x10000))
9 #define MENU_ITEM_TYPE(flags) \
10 ((flags) & (MF_STRING | MF_BITMAP | MF_OWNERDRAW | MF_SEPARATOR))
13 #define MF_END (0x0080)
16 typedef struct _MENU_ITEM
18 struct _MENU_ITEM
*Next
;
24 HBITMAP hbmpUnchecked
;
30 } MENU_ITEM
, *PMENU_ITEM
;
32 typedef struct _MENU_OBJECT
36 PMENU_ITEM MenuItemList
;
39 } MENU_OBJECT
, *PMENU_OBJECT
;
42 IntGetMenuObject(HMENU hMenu
);
44 #define IntReleaseMenuObject(MenuObj) \
45 ObmDereferenceObject(MenuObj)
48 IntFreeMenuItem(PMENU_OBJECT MenuObject
, PMENU_ITEM MenuItem
,
49 BOOL RemoveFromList
, BOOL bRecurse
);
52 IntRemoveMenuItem(PMENU_OBJECT MenuObject
, UINT uPosition
, UINT uFlags
,
56 IntDeleteMenuItems(PMENU_OBJECT MenuObject
, BOOL bRecurse
);
59 IntDestroyMenuObject(PMENU_OBJECT MenuObject
, BOOL bRecurse
, BOOL RemoveFromProcess
);
62 IntCreateMenu(PHANDLE Handle
, BOOL IsMenuBar
);
65 IntCloneMenu(PMENU_OBJECT Source
);
68 IntSetMenuFlagRtoL(PMENU_OBJECT MenuObject
);
71 IntSetMenuContextHelpId(PMENU_OBJECT MenuObject
, DWORD dwContextHelpId
);
74 IntGetMenuInfo(PMENU_OBJECT MenuObject
, PROSMENUINFO lpmi
);
77 IntIsMenu(HMENU hMenu
);
80 IntSetMenuInfo(PMENU_OBJECT MenuObject
, PROSMENUINFO lpmi
);
83 IntGetMenuItemByFlag(PMENU_OBJECT MenuObject
, UINT uSearchBy
, UINT fFlag
,
84 PMENU_ITEM
*MenuItem
, PMENU_ITEM
*PrevMenuItem
);
87 IntEnableMenuItem(PMENU_OBJECT MenuObject
, UINT uIDEnableItem
, UINT uEnable
);
90 IntCheckMenuItem(PMENU_OBJECT MenuObject
, UINT uIDCheckItem
, UINT uCheck
);
93 IntSetMenuItemRect(PMENU_OBJECT MenuObject
, UINT Item
, BOOL fByPos
, RECT
*rcRect
);
96 IntCleanupMenus(struct _EPROCESS
*Process
, PW32PROCESS Win32Process
);
99 IntInsertMenuItem(PMENU_OBJECT MenuObject
, UINT uItem
, BOOL fByPosition
,
100 PROSMENUITEMINFO ItemInfo
);
107 CleanupMenuImpl(VOID
);
109 #endif /* _WIN32K_MENU_H */