- Moved to new menu structures, synced in wine code and started first phase to server side. Resulting that more tests are running and failing less. Unplugged ntuser bad functions.
- See CORE-5605, CORE-7447, CORE-7967, CORE-8098 and CORE-8107

svn path=/trunk/; revision=63027
This commit is contained in:
James Tabor 2014-04-28 03:55:23 +00:00
parent 2a6fbc8f80
commit 9e6fb311ed
9 changed files with 2440 additions and 1617 deletions

View file

@ -5,6 +5,7 @@ typedef struct _PROCESSINFO *PPROCESSINFO;
typedef struct _THREADINFO *PTHREADINFO;
struct _DESKTOP;
struct _WND;
struct tagPOPUPMENU;
#define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */
#define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */
@ -313,7 +314,7 @@ typedef struct tagITEM
struct tagMENU* spSubMenu; /* Pop-up menu. */
HANDLE hbmpChecked;
HANDLE hbmpUnchecked;
USHORT* lpstr; /* Item text pointer. */
USHORT* Xlpstr; /* Item text pointer. */
ULONG cch;
DWORD_PTR dwItemData;
ULONG xItem; /* Item position. left */
@ -326,6 +327,9 @@ typedef struct tagITEM
HBITMAP hbmp; /* bitmap */
INT cxBmp; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
INT cyBmp; /* Height " */
//// ReactOS
UNICODE_STRING lpstr;
struct tagITEM *Next;
} ITEM, *PITEM;
typedef struct tagMENULIST
@ -347,7 +351,7 @@ typedef struct tagMENU
{
PROCDESKHEAD head;
ULONG fFlags; /* [Style flags | Menu flags] */
INT iItem; /* nPos of selected item, if -1 not selected. */
INT iItem; /* nPos of selected item, if -1 not selected. AKA focused item */
UINT cAlloced; /* Number of allocated items. Inc's of 8 */
UINT cItems; /* Number of items in the menu */
ULONG cxMenu; /* Width of the whole menu */
@ -363,8 +367,54 @@ typedef struct tagMENU
INT iTop; /* Current scroll position Top */
INT iMaxTop; /* Current scroll position Max Top */
DWORD dwArrowsOn:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
//// ReactOS
LIST_ENTRY ListEntry;
HWND hWnd; /* Window containing the menu */
BOOL TimeToHide;
} MENU, *PMENU;
typedef struct tagPOPUPMENU
{
ULONG fIsMenuBar:1;
ULONG fHasMenuBar:1;
ULONG fIsSysMenu:1;
ULONG fIsTrackPopup:1;
ULONG fDroppedLeft:1;
ULONG fHierarchyDropped:1;
ULONG fRightButton:1;
ULONG fToggle:1;
ULONG fSynchronous:1;
ULONG fFirstClick:1;
ULONG fDropNextPopup:1;
ULONG fNoNotify:1;
ULONG fAboutToHide:1;
ULONG fShowTimer:1;
ULONG fHideTimer:1;
ULONG fDestroyed:1;
ULONG fDelayedFree:1;
ULONG fFlushDelayedFree:1;
ULONG fFreed:1;
ULONG fInCancel:1;
ULONG fTrackMouseEvent:1;
ULONG fSendUninit:1;
ULONG fRtoL:1;
// ULONG fDesktopMenu:1;
ULONG iDropDir:5;
ULONG fUseMonitorRect:1;
struct _WND *spwndNotify;
struct _WND *spwndPopupMenu;
struct _WND *spwndNextPopup;
struct _WND *spwndPrevPopup;
PMENU spmenu;
PMENU spmenuAlternate;
struct _WND *spwndActivePopup;
struct tagPOPUPMENU *ppopupmenuRoot;
struct tagPOPUPMENU *ppmDelayedFree;
UINT posSelectedItem;
UINT posDropped;
} POPUPMENU, *PPOPUPMENU;
typedef struct _REGISTER_SYSCLASS
{
/* This is a reactos specific class used to initialize the
@ -657,6 +707,12 @@ typedef struct _SBWND
SBCALC SBCalc;
} SBWND, *PSBWND;
typedef struct _MENUWND
{
WND wnd;
PPOPUPMENU ppopupmenu;
} MENUWND, *PMENUWND;
typedef struct _PFNCLIENT
{
WNDPROC pfnScrollBarWndProc;
@ -3371,16 +3427,20 @@ typedef struct tagROSMENUINFO
DWORD dwContextHelpID;
ULONG_PTR dwMenuData;
/* ----------- Extra ----------- */
ULONG fFlags; /* Menu flags (MF_POPUP, MF_SYSMENU) */
UINT iItem; /* Currently focused item */
UINT cItems; /* Number of items in the menu */
WORD cxMenu; /* Width of the whole menu */
WORD cyMenu; /* Height of the whole menu */
ULONG cxTextAlign;
PWND spwndNotify; /* window receiving the messages for ownerdraw */
INT iTop;
INT iMaxTop;
DWORD dwArrowsOn:2;
HMENU Self; /* Handle of this menu */
WORD Flags; /* Menu flags (MF_POPUP, MF_SYSMENU) */
UINT FocusedItem; /* Currently focused item */
UINT MenuItemCount; /* Number of items in the menu */
HWND Wnd; /* Window containing the menu */
WORD Width; /* Width of the whole menu */
WORD Height; /* Height of the whole menu */
HWND WndOwner; /* window receiving the messages for ownerdraw */
BOOL TimeToHide; /* Request hiding when receiving a second click in the top-level menu item */
SIZE maxBmpSize; /* Maximum size of the bitmap items in MIIM_BITMAP state */
BOOL TimeToHide; /* Request hiding when receiving a second click in the top-level menu item */
} ROSMENUINFO, *PROSMENUINFO;
BOOL
@ -3410,6 +3470,7 @@ typedef struct tagROSMENUITEMINFO
RECT Rect; /* Item area (relative to menu window) */
UINT dxTab; /* X position of text after Tab */
LPWSTR lpstr; /* Copy of the text pointer in MenuItem->Text */
SIZE maxBmpSize; /* Maximum size of the bitmap items in MIIM_BITMAP state */
} ROSMENUITEMINFO, *PROSMENUITEMINFO;
BOOL

View file

@ -50,8 +50,7 @@ co_IntTranslateAccelerator(
UINT Mask = 0, nPos;
HWND hWnd;
HMENU hMenu, hSubMenu;
PMENU_OBJECT MenuObject, SubMenu;
PMENU_ITEM MenuItem;
PMENU MenuObject;
ASSERT_REFS_CO(Window);
@ -101,16 +100,11 @@ co_IntTranslateAccelerator(
hMenu = (Window->style & WS_CHILD) ? 0 : (HMENU)Window->IDMenu;
hSubMenu = NULL;
MenuObject = IntGetMenuObject(hMenu);
nPos = pAccel->cmd;
if (MenuObject)
{
nPos = IntGetMenuItemByFlag(MenuObject,
pAccel->cmd,
MF_BYCOMMAND,
&SubMenu,
&MenuItem,
NULL);
if (nPos != (UINT) - 1)
hSubMenu = SubMenu->head.h;
if ((MENU_FindItem (&MenuObject, &nPos, MF_BYPOSITION)))
hSubMenu = MenuObject->head.h;
else
hMenu = NULL;
}
@ -120,16 +114,11 @@ co_IntTranslateAccelerator(
hMenu = Window->SystemMenu;
hSubMenu = hMenu; /* system menu is a popup menu */
MenuObject = IntGetMenuObject(hMenu);
nPos = pAccel->cmd;
if (MenuObject)
{
nPos = IntGetMenuItemByFlag(MenuObject,
pAccel->cmd,
MF_BYCOMMAND,
&SubMenu,
&MenuItem,
NULL);
if (nPos != (UINT) - 1)
hSubMenu = SubMenu->head.h;
if ((MENU_FindItem (&MenuObject, &nPos, MF_BYPOSITION)))
hSubMenu = MenuObject->head.h;
else
hMenu = NULL;
}

File diff suppressed because it is too large Load diff

View file

@ -10,32 +10,6 @@
#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;
RECTL Rect;
UINT dxTab;
} MENU_ITEM, *PMENU_ITEM;
typedef struct _MENU_OBJECT
{
PROCDESKHEAD head;
PEPROCESS Process;
LIST_ENTRY ListEntry;
PMENU_ITEM MenuItemList;
ROSMENUINFO MenuInfo;
BOOL RtoL;
} MENU_OBJECT, *PMENU_OBJECT;
typedef struct _SETMENUITEMRECT
{
UINT uItem;
@ -43,33 +17,34 @@ typedef struct _SETMENUITEMRECT
RECTL rcRect;
} SETMENUITEMRECT, *PSETMENUITEMRECT;
PMENU_OBJECT FASTCALL
PMENU FASTCALL
IntGetMenuObject(HMENU hMenu);
#define IntReleaseMenuObject(MenuObj) \
UserDereferenceObject(MenuObj)
BOOL FASTCALL
IntDestroyMenuObject(PMENU_OBJECT MenuObject, BOOL bRecurse, BOOL RemoveFromProcess);
IntDestroyMenuObject(PMENU MenuObject, BOOL bRecurse, BOOL RemoveFromProcess);
PMENU_OBJECT FASTCALL
IntCloneMenu(PMENU_OBJECT Source);
PMENU FASTCALL
IntCloneMenu(PMENU Source);
int FASTCALL
IntGetMenuItemByFlag(PMENU_OBJECT MenuObject, UINT uSearchBy, UINT fFlag,
PMENU_OBJECT *SubMenu, PMENU_ITEM *MenuItem,
PMENU_ITEM *PrevMenuItem);
IntGetMenuItemByFlag(PMENU MenuObject, UINT uSearchBy, UINT fFlag,
PMENU *SubMenu, PITEM *MenuItem,
PITEM *PrevMenuItem);
BOOL FASTCALL
IntCleanupMenus(struct _EPROCESS *Process, PPROCESSINFO Win32Process);
BOOL FASTCALL
IntInsertMenuItem(_In_ PMENU_OBJECT MenuObject, UINT uItem, BOOL fByPosition,
IntInsertMenuItem(_In_ PMENU MenuObject, UINT uItem, BOOL fByPosition,
PROSMENUITEMINFO ItemInfo);
PMENU_OBJECT FASTCALL
PMENU FASTCALL
IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu);
UINT FASTCALL IntFindSubMenu(HMENU *hMenu, HMENU hSubTarget );
UINT FASTCALL IntGetMenuState( HMENU hMenu, UINT uId, UINT uFlags);
BOOL FASTCALL IntRemoveMenuItem(PMENU Menu, UINT uPosition, UINT uFlags, BOOL bRecurse);
PITEM MENU_FindItem( PMENU *pmenu, UINT *nPos, UINT wFlags );

View file

@ -597,7 +597,7 @@ PVOID FASTCALL ValidateHandle(HANDLE handle, HANDLE_TYPE type)
}
/*
* NtUserValidateHandleSecure
* NtUserValidateHandleSecure W2k3 has one argument.
*
* Status
* @implemented
@ -609,62 +609,46 @@ NtUserValidateHandleSecure(
HANDLE handle,
BOOL Restricted)
{
if(!Restricted)
UINT uType;
PPROCESSINFO ppi;
PUSER_HANDLE_ENTRY entry;
DECLARE_RETURN(BOOL);
UserEnterExclusive();
if (!(entry = handle_to_entry(gHandleTable, handle )))
{
EngSetLastError(ERROR_INVALID_HANDLE);
RETURN( FALSE);
}
uType = entry->type;
switch (uType)
{
UINT uType;
{
PUSER_HANDLE_ENTRY entry;
if (!(entry = handle_to_entry(gHandleTable, handle )))
{
EngSetLastError(ERROR_INVALID_HANDLE);
return FALSE;
}
uType = entry->type;
}
switch (uType)
{
case TYPE_WINDOW:
{
if (UserGetWindowObject((HWND) handle)) return TRUE;
return FALSE;
}
case TYPE_INPUTCONTEXT:
ppi = ((PTHREADINFO)entry->pi)->ppi;
break;
case TYPE_MENU:
{
if (UserGetMenuObject((HMENU) handle)) return TRUE;
return FALSE;
}
case TYPE_ACCELTABLE:
{
if (UserGetAccelObject((HACCEL) handle)) return TRUE;
return FALSE;
}
case TYPE_CURSOR:
{
if (UserGetCurIconObject((HCURSOR) handle)) return TRUE;
return FALSE;
}
case TYPE_HOOK:
{
if (IntGetHookObject((HHOOK) handle)) return TRUE;
return FALSE;
}
case TYPE_MONITOR:
{
if (UserGetMonitorObject((HMONITOR) handle)) return TRUE;
return FALSE;
}
case TYPE_CALLPROC:
{
WNDPROC_INFO Proc;
return UserGetCallProcInfo( handle, &Proc );
}
case TYPE_SETWINDOWPOS:
ppi = entry->pi;
break;
default:
EngSetLastError(ERROR_INVALID_HANDLE);
}
ppi = NULL;
break;
}
else
{ /* Is handle entry restricted? */
STUB
}
return FALSE;
if (!ppi) RETURN( FALSE);
// Same process job returns TRUE.
if (gptiCurrent->ppi->pW32Job == ppi->pW32Job) RETURN( TRUE);
RETURN( FALSE);
CLEANUP:
UserLeave();
END_CLEANUP;
}

View file

@ -401,17 +401,17 @@ NtUserCallTwoParam(
case TWOPARAM_ROUTINE_SETMENUBARHEIGHT:
{
DWORD_PTR Ret;
PMENU_OBJECT MenuObject = IntGetMenuObject((HMENU)Param1);
PMENU MenuObject = IntGetMenuObject((HMENU)Param1);
if(!MenuObject)
RETURN( 0);
if(Param2 > 0)
{
Ret = (MenuObject->MenuInfo.Height == (int)Param2);
MenuObject->MenuInfo.Height = (int)Param2;
Ret = (MenuObject->cyMenu == (int)Param2);
MenuObject->cyMenu = (int)Param2;
}
else
Ret = (DWORD_PTR)MenuObject->MenuInfo.Height;
Ret = (DWORD_PTR)MenuObject->cyMenu;
IntReleaseMenuObject(MenuObject);
RETURN( Ret);
}
@ -564,9 +564,9 @@ NtUserCallHwndLock(
break;
case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE:
TRACE("co_IntSetForegroundWindow 1 0x%p\n",hWnd);
TRACE("co_IntSetForegroundWindow M 1 0x%p\n",hWnd);
Ret = co_IntSetForegroundWindowMouse(Window);
TRACE("co_IntSetForegroundWindow 2 0x%p\n",hWnd);
TRACE("co_IntSetForegroundWindow M 2 0x%p\n",hWnd);
break;
case HWNDLOCK_ROUTINE_UPDATEWINDOW:

View file

@ -1,6 +1,6 @@
#pragma once
PMENU_OBJECT FASTCALL UserGetMenuObject(HMENU hMenu);
PMENU FASTCALL UserGetMenuObject(HMENU hMenu);
#define ASSERT_REFS_CO(_obj_) \
{ \
@ -109,7 +109,7 @@ PWND FASTCALL UserGetAncestor(PWND Wnd, UINT Type);
/*************** MENU.C ***************/
HMENU FASTCALL UserCreateMenu(BOOL PopupMenu);
BOOL FASTCALL UserSetMenuDefaultItem(PMENU_OBJECT Menu, UINT uItem, UINT fByPos);
BOOL FASTCALL UserSetMenuDefaultItem(PMENU Menu, UINT uItem, UINT fByPos);
BOOL FASTCALL UserDestroyMenu(HMENU hMenu);
/*************** SCROLLBAR.C ***************/

View file

@ -459,7 +459,7 @@ UserFreeWindowInfo(PTHREADINFO ti, PWND Wnd)
}
// DesktopHeapFree(Wnd->head.rpdesk, Wnd);
// WindowObject->Wnd = NULL;
// WindowObject->hWnd = NULL;
}
/***********************************************************************
@ -479,7 +479,7 @@ static LRESULT co_UserFreeWindow(PWND Window,
HWND *Children;
HWND *ChildHandle;
PWND Child;
PMENU_OBJECT Menu;
PMENU Menu;
BOOLEAN BelongsToThreadData;
ASSERT(Window);
@ -792,7 +792,7 @@ IntSetMenu(
HMENU Menu,
BOOL *Changed)
{
PMENU_OBJECT OldMenu, NewMenu = NULL;
PMENU OldMenu, NewMenu = NULL;
if ((Wnd->style & (WS_CHILD | WS_POPUP)) == WS_CHILD)
{
@ -810,7 +810,7 @@ IntSetMenu(
if (Wnd->IDMenu)
{
OldMenu = IntGetMenuObject((HMENU) Wnd->IDMenu);
ASSERT(NULL == OldMenu || OldMenu->MenuInfo.Wnd == Wnd->head.h);
ASSERT(NULL == OldMenu || OldMenu->hWnd == Wnd->head.h);
}
else
{
@ -829,7 +829,7 @@ IntSetMenu(
EngSetLastError(ERROR_INVALID_MENU_HANDLE);
return FALSE;
}
if (NULL != NewMenu->MenuInfo.Wnd)
if (NULL != NewMenu->hWnd)
{
/* Can't use the same menu for two windows */
if (NULL != OldMenu)
@ -845,12 +845,12 @@ IntSetMenu(
Wnd->IDMenu = (UINT) Menu;
if (NULL != NewMenu)
{
NewMenu->MenuInfo.Wnd = Wnd->head.h;
NewMenu->hWnd = Wnd->head.h;
IntReleaseMenuObject(NewMenu);
}
if (NULL != OldMenu)
{
OldMenu->MenuInfo.Wnd = NULL;
OldMenu->hWnd = NULL;
IntReleaseMenuObject(OldMenu);
}
@ -895,13 +895,13 @@ co_DestroyThreadWindows(struct _ETHREAD *Thread)
}
}
PMENU_OBJECT FASTCALL
PMENU FASTCALL
IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu)
{
PMENU_OBJECT Menu, NewMenu = NULL, SysMenu = NULL, ret = NULL;
PMENU Menu, NewMenu = NULL, SysMenu = NULL, ret = NULL;
PTHREADINFO W32Thread;
HMENU hNewMenu, hSysMenu;
ROSMENUITEMINFO ItemInfo;
ROSMENUITEMINFO ItemInfo = {0};
if(bRevert)
{
@ -929,10 +929,10 @@ IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu)
NewMenu = IntCloneMenu(Menu);
if(NewMenu)
{
Window->SystemMenu = NewMenu->MenuInfo.Self;
NewMenu->MenuInfo.Flags |= MNF_SYSDESKMN;
NewMenu->MenuInfo.Wnd = Window->head.h;
{ // Use spmenuSys
Window->SystemMenu = NewMenu->head.h;
NewMenu->fFlags |= MNF_SYSDESKMN;
NewMenu->hWnd = Window->head.h;
ret = NewMenu;
//IntReleaseMenuObject(NewMenu);
}
@ -950,8 +950,8 @@ IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu)
UserDestroyMenu(hSysMenu);
return NULL;
}
SysMenu->MenuInfo.Flags |= MNF_SYSDESKMN;
SysMenu->MenuInfo.Wnd = Window->head.h;
SysMenu->fFlags |= MNF_SYSDESKMN;
SysMenu->hWnd = Window->head.h;
hNewMenu = co_IntLoadSysMenuTemplate();
if(!hNewMenu)
{
@ -970,21 +970,24 @@ IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu)
NewMenu = IntCloneMenu(Menu);
if(NewMenu)
{
NewMenu->MenuInfo.Flags |= MNF_SYSDESKMN | MNF_POPUP;
NewMenu->MenuInfo.dwStyle = MNS_CHECKORBMP;
NewMenu->fFlags |= MNF_SYSDESKMN | MNF_POPUP;
// Do not set MNS_CHECKORBMP it breaks menus, also original code destroyed the style anyway.
IntReleaseMenuObject(NewMenu);
UserSetMenuDefaultItem(NewMenu, SC_CLOSE, FALSE);
if (Window->pcls->style & CS_NOCLOSE)
IntRemoveMenuItem(NewMenu, SC_CLOSE, MF_BYCOMMAND, TRUE);
ItemInfo.cbSize = sizeof(MENUITEMINFOW);
ItemInfo.fMask = MIIM_FTYPE | MIIM_STRING | MIIM_STATE | MIIM_SUBMENU;
ItemInfo.fType = 0;
ItemInfo.fState = MFS_ENABLED;
ItemInfo.dwTypeData = NULL;
ItemInfo.cch = 0;
ItemInfo.hSubMenu = NewMenu->MenuInfo.Self;
ItemInfo.hSubMenu = NewMenu->head.h;
IntInsertMenuItem(SysMenu, (UINT) -1, TRUE, &ItemInfo);
Window->SystemMenu = SysMenu->MenuInfo.Self;
Window->SystemMenu = SysMenu->head.h;
ret = SysMenu;
}
@ -1419,15 +1422,15 @@ co_UserSetParent(HWND hWndChild, HWND hWndNewParent)
}
BOOL FASTCALL
IntSetSystemMenu(PWND Window, PMENU_OBJECT Menu)
IntSetSystemMenu(PWND Window, PMENU Menu)
{
PMENU_OBJECT OldMenu;
PMENU OldMenu;
if(Window->SystemMenu)
{
OldMenu = IntGetMenuObject(Window->SystemMenu);
if(OldMenu)
{
OldMenu->MenuInfo.Flags &= ~ MNF_SYSDESKMN;
OldMenu->fFlags &= ~ MNF_SYSDESKMN;
IntReleaseMenuObject(OldMenu);
}
}
@ -1435,10 +1438,10 @@ IntSetSystemMenu(PWND Window, PMENU_OBJECT Menu)
if(Menu)
{
/* FIXME: Check window style, propably return FALSE? */
Window->SystemMenu = Menu->MenuInfo.Self;
Menu->MenuInfo.Flags |= MNF_SYSDESKMN;
Window->SystemMenu = Menu->head.h;
Menu->fFlags |= MNF_SYSDESKMN;
}
else
else // Use spmenuSys too!
Window->SystemMenu = (HMENU)0;
return TRUE;
@ -1752,7 +1755,7 @@ PWND FASTCALL IntCreateWindow(CREATESTRUCTW* Cs,
PWND pWnd = NULL;
HWND hWnd;
PTHREADINFO pti = NULL;
PMENU_OBJECT SystemMenu;
PMENU SystemMenu;
BOOL MenuChanged;
BOOL bUnicodeWindow;
@ -1985,8 +1988,8 @@ PWND FASTCALL IntCreateWindow(CREATESTRUCTW* Cs,
{
SystemMenu = IntGetSystemMenu(pWnd, TRUE, TRUE);
if(SystemMenu)
{
pWnd->SystemMenu = SystemMenu->MenuInfo.Self;
{ // spmenuSys
pWnd->SystemMenu = SystemMenu->head.h;
IntReleaseMenuObject(SystemMenu);
}
}
@ -3678,7 +3681,7 @@ HMENU APIENTRY
NtUserGetSystemMenu(HWND hWnd, BOOL bRevert)
{
PWND Window;
PMENU_OBJECT Menu;
PMENU Menu;
DECLARE_RETURN(HMENU);
TRACE("Enter NtUserGetSystemMenu\n");
@ -3694,7 +3697,7 @@ NtUserGetSystemMenu(HWND hWnd, BOOL bRevert)
RETURN(NULL);
}
RETURN(Menu->MenuInfo.Self);
RETURN(Menu->head.h);
CLEANUP:
TRACE("Leave NtUserGetSystemMenu, ret=%p\n", _ret_);
@ -3714,7 +3717,7 @@ NtUserSetSystemMenu(HWND hWnd, HMENU hMenu)
{
BOOL Result = FALSE;
PWND Window;
PMENU_OBJECT Menu;
PMENU Menu;
DECLARE_RETURN(BOOL);
TRACE("Enter NtUserSetSystemMenu\n");

File diff suppressed because it is too large Load diff