Difference between revisions of "Techwiki:Win32k/MENU"

From ReactOS Wiki
Jump to: navigation, search
Line 23: Line 23:
 
  /* 048 */ DWORD  cyBmp;
 
  /* 048 */ DWORD  cyBmp;
 
  } ITEM, *PITEM;
 
  } ITEM, *PITEM;
 +
 +
/* Menu Item fType. */
 +
#define MFT_RTOL 0x6000
 
   
 
   
 
  typedef struct tagMENULIST
 
  typedef struct tagMENULIST

Revision as of 14:04, 12 March 2010

Windows XP version of ITEM and MENU

typedef struct _ITEM
{
/* 000 */ UINT    fType;
/* 004 */ UINT    fState;
/* 008 */ UINT    wID;
/* 00c */ struct _MENU *spSubMenu;
/* 010 */ HBITMAP hbmpChecked;
/* 014 */ HBITMAP hbmpUnchecked;
/* 018 */ LPWSTR  lpstr;
/* 01c */ UINT    cch;
/* 020 */ ULONG_PTR dwItemData;
/* 024 */ DWORD   xItem;
/* 028 */ DWORD   yItem;
/* 02c */ DWORD   cxItem;
/* 030 */ DWORD   cyItem;
/* 034 */ DWORD   dxTab;
/* 038 */ DWORD   ulX;
/* 03c */ DWORD   ulWidth;
/* 040 */ HBITMAP hbmp;
/* 044 */ DWORD   cxBmp;
/* 048 */ DWORD   cyBmp;
} ITEM, *PITEM;

/* Menu Item fType. */
#define MFT_RTOL 0x6000

typedef struct tagMENULIST
{
   struct tagMENULIST* pNext;
   struct tagMENU*     pMenu;
} MENULIST, *PMENULIST;

// Menu fFlags, upper byte is MNS_X style flags.
#define MNF_POPUP       0x0001 // CreatePopupMenu->InternalCreateMenu(true);
#define MNF_UNDERLINE   0x0004 // if not underlined is ODS_NOACCEL, menustate.fUnderline
#define MNF_INACTIVE    0x0010 // Associated with ODS_INACTIVE
#define MNF_RTOL        0x0020
#define MNF_DESKTOPMN   0x0040 // LockDesktopMenu
#define MNF_SYSDESKMN   0x0080 // xxxLoadSysDesktopMenu
#define MNF_SYSSUBMENU  0x0100 // xxxGetSystemMenu for GetSubMenu

typedef struc _MENU
{
/* 000 */ PROCDESKHEAD  head;
/* 014 */ ULONG     fFlags;  // See menuinfo dwStyle.
/* 018 */ INT       iItem;
/* 01c */ DWORD     cAlloced;
/* 020 */ DWORD     cItems;
/* 024 */ DWORD     cxMenu;
/* 028 */ DWORD     cyMenu;
/* 02c */ DWORD     cxTextAlign;
/* 030 */ PWND      spwndNotify;
/* 034 */ PITEM     rgItems;
/* 038 */ PMENULIST pParentMenus; // See Note 1.
/* 03c */ DWORD     dwContextHelpId;
/* 040 */ UINT      cyMax;
/* 044 */ ULONG_PTR dwMenuData;
/* 048 */ HBRUSH    hbrBack;
/* 04c */ INT       iTop;
/* 050 */ INT       iMaxTop;
/* 054 */ DWORD     dwArrowsOn:2; //Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom.
} MENU, *PMENU;

NOTE:

1. Pointer to a linked list of parent menu pointers. Allocated by DesktopAlloc with a size of 8 in xxxSetLPITEMInfo.

References

  • msdn MENUINFO
  • msdn MENUITEMINFO
  • "Undocumented Windows, A Programmer's Guide to Reserved MS Win API Functions", page 473 - 477.
  • Windows Symbol files, userkdx.dll, !dso, w7u