#ifndef __WIN32K_MENU_H #define __WIN32K_MENU_H #include #include #define IS_ATOM(x) \ (((ULONG_PTR)(x) > 0x0) && ((ULONG_PTR)(x) < 0x10000)) #define MENU_ITEM_TYPE(flags) \ ((flags) & (MF_STRING | MF_BITMAP | MF_OWNERDRAW | MF_SEPARATOR)) #ifndef MF_END #define MF_END (0x0080) #endif typedef struct _MENU_ITEM { struct _MENU_ITEM *Next; UINT fType; UINT fState; UINT wID; HMENU hSubMenu; HBITMAP hbmpChecked; HBITMAP hbmpUnchecked; ULONG_PTR dwItemData; UNICODE_STRING Text; HBITMAP hbmpItem; RECT Rect; } MENU_ITEM, *PMENU_ITEM; typedef struct _MENU_OBJECT { HANDLE Self; LIST_ENTRY ListEntry; int MenuItemCount; FAST_MUTEX MenuItemsLock; PMENU_ITEM MenuItemList; MENUINFO MenuInfo; BOOL RtoL; BOOL IsSystemMenu; } MENU_OBJECT, *PMENU_OBJECT; PMENU_OBJECT FASTCALL IntGetMenuObject(HMENU hMenu); VOID FASTCALL IntReleaseMenuObject(PMENU_OBJECT MenuObject); BOOL FASTCALL IntFreeMenuItem(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, BOOL RemoveFromList, BOOL bRecurse); BOOL FASTCALL IntRemoveMenuItem(PMENU_OBJECT MenuObject, UINT uPosition, UINT uFlags, BOOL bRecurse); UINT FASTCALL IntDeleteMenuItems(PMENU_OBJECT MenuObject, BOOL bRecurse); BOOL FASTCALL IntDestroyMenuObject(PMENU_OBJECT MenuObject, BOOL bRecurse, BOOL RemoveFromProcess); PMENU_OBJECT FASTCALL IntCreateMenu(PHANDLE Handle); PMENU_OBJECT FASTCALL IntCloneMenu(PMENU_OBJECT Source); BOOL FASTCALL IntSetMenuFlagRtoL(PMENU_OBJECT MenuObject); BOOL FASTCALL IntSetMenuContextHelpId(PMENU_OBJECT MenuObject, DWORD dwContextHelpId); BOOL FASTCALL IntGetMenuInfo(PMENU_OBJECT MenuObject, LPMENUINFO lpmi); BOOL FASTCALL IntSetMenuInfo(PMENU_OBJECT MenuObject, LPMENUINFO lpmi); int FASTCALL IntGetMenuItemByFlag(PMENU_OBJECT MenuObject, UINT uSearchBy, UINT fFlag, PMENU_ITEM *MenuItem, PMENU_ITEM *PrevMenuItem); BOOL FASTCALL IntGetMenuItemInfo(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, LPMENUITEMINFOW lpmii); BOOL FASTCALL IntSetMenuItemInfo(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, LPCMENUITEMINFOW lpmii); BOOL FASTCALL IntInsertMenuItem(PMENU_OBJECT MenuObject, UINT uItem, WINBOOL fByPosition, LPCMENUITEMINFOW lpmii); UINT FASTCALL IntEnableMenuItem(PMENU_OBJECT MenuObject, UINT uIDEnableItem, UINT uEnable); DWORD FASTCALL IntCheckMenuItem(PMENU_OBJECT MenuObject, UINT uIDCheckItem, UINT uCheck); BOOL FASTCALL IntSetMenuDefaultItem(PMENU_OBJECT MenuObject, UINT uItem, UINT fByPos); BOOL FASTCALL IntCleanupMenus(struct _EPROCESS *Process, PW32PROCESS Win32Process); NTSTATUS FASTCALL InitMenuImpl(VOID); NTSTATUS FASTCALL CleanupMenuImpl(VOID); DWORD STDCALL NtUserBuildMenuItemList( HMENU hMenu, PVOID Buffer, ULONG nBufSize, DWORD Reserved); DWORD STDCALL NtUserCheckMenuItem( HMENU hmenu, UINT uIDCheckItem, UINT uCheck); HMENU STDCALL NtUserCreateMenu(VOID); BOOL STDCALL NtUserDeleteMenu( HMENU hMenu, UINT uPosition, UINT uFlags); BOOL STDCALL NtUserDestroyMenu( HMENU hMenu); DWORD STDCALL NtUserDrawMenuBarTemp( HWND hWnd, HDC hDC, PRECT hRect, HMENU hMenu, HFONT hFont); UINT STDCALL NtUserEnableMenuItem( HMENU hMenu, UINT uIDEnableItem, UINT uEnable); DWORD STDCALL NtUserInsertMenuItem( HMENU hMenu, UINT uItem, WINBOOL fByPosition, LPCMENUITEMINFOW lpmii); BOOL STDCALL NtUserEndMenu(VOID); UINT STDCALL NtUserGetMenuDefaultItem( HMENU hMenu, UINT fByPos, UINT gmdiFlags); BOOL STDCALL NtUserGetMenuBarInfo( HWND hwnd, LONG idObject, LONG idItem, PMENUBARINFO pmbi); UINT STDCALL NtUserGetMenuIndex( HMENU hMenu, UINT wID); BOOL STDCALL NtUserGetMenuItemRect( HWND hWnd, HMENU hMenu, UINT uItem, LPRECT lprcItem); BOOL STDCALL NtUserHiliteMenuItem( HWND hwnd, HMENU hmenu, UINT uItemHilite, UINT uHilite); BOOL STDCALL NtUserMenuInfo( HMENU hmenu, LPMENUINFO lpmi, BOOL fsog); int STDCALL NtUserMenuItemFromPoint( HWND hWnd, HMENU hMenu, DWORD X, DWORD Y); BOOL STDCALL NtUserMenuItemInfo( HMENU hMenu, UINT uItem, BOOL fByPosition, LPMENUITEMINFOW lpmii, BOOL fsog); BOOL STDCALL NtUserRemoveMenu( HMENU hMenu, UINT uPosition, UINT uFlags); BOOL STDCALL NtUserSetMenuContextHelpId( HMENU hmenu, DWORD dwContextHelpId); BOOL STDCALL NtUserSetMenuDefaultItem( HMENU hMenu, UINT uItem, UINT fByPos); BOOL STDCALL NtUserSetMenuFlagRtoL( HMENU hMenu); DWORD STDCALL NtUserThunkedMenuInfo( HMENU hMenu, LPCMENUINFO lpcmi); DWORD STDCALL NtUserThunkedMenuItemInfo( HMENU hMenu, UINT uItem, BOOL fByPosition, BOOL bInsert, LPMENUITEMINFOW lpmii, PUNICODE_STRING lpszCaption); BOOL STDCALL NtUserTrackPopupMenuEx( HMENU hmenu, UINT fuFlags, int x, int y, HWND hwnd, LPTPMPARAMS lptpm); #endif /* __WIN32K_MENU_H */ /* EOF */