mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 01:39:30 +00:00
Some changes for menus and unstubbed NtUserGetSystemMenu(), NtUserSetSystemMenu() and NtUserCallHwndLock()
svn path=/trunk/; revision=5431
This commit is contained in:
parent
e5793b92ec
commit
461b5018b2
8 changed files with 207 additions and 108 deletions
|
@ -115,10 +115,10 @@ NtUserCallHwnd(
|
||||||
DWORD Unknown0,
|
DWORD Unknown0,
|
||||||
DWORD Unknown1);
|
DWORD Unknown1);
|
||||||
|
|
||||||
DWORD
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserCallHwndLock(
|
NtUserCallHwndLock(
|
||||||
DWORD Unknown0,
|
HWND hWnd,
|
||||||
DWORD Unknown1);
|
DWORD Unknown1);
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
|
@ -814,11 +814,11 @@ DWORD
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserGetScrollBarInfo(HWND hWnd, LONG idObject, PSCROLLBARINFO psbi);
|
NtUserGetScrollBarInfo(HWND hWnd, LONG idObject, PSCROLLBARINFO psbi);
|
||||||
|
|
||||||
DWORD
|
HMENU
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserGetSystemMenu(
|
NtUserGetSystemMenu(
|
||||||
DWORD Unknown0,
|
HWND hWnd,
|
||||||
DWORD Unknown1);
|
BOOL bRevert);
|
||||||
|
|
||||||
HDESK
|
HDESK
|
||||||
STDCALL
|
STDCALL
|
||||||
|
@ -1372,12 +1372,12 @@ STDCALL
|
||||||
NtUserSetLogonNotifyWindow(
|
NtUserSetLogonNotifyWindow(
|
||||||
DWORD Unknown0);
|
DWORD Unknown0);
|
||||||
|
|
||||||
DWORD
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserSetMenu(
|
NtUserSetMenu(
|
||||||
DWORD Unknown0,
|
HWND hWnd,
|
||||||
DWORD Unknown1,
|
HMENU hMenu,
|
||||||
DWORD Unknown2);
|
BOOL bRepaint);
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
|
@ -1453,11 +1453,11 @@ NtUserSetSystemCursor(
|
||||||
DWORD Unknown0,
|
DWORD Unknown0,
|
||||||
DWORD Unknown1);
|
DWORD Unknown1);
|
||||||
|
|
||||||
DWORD
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserSetSystemMenu(
|
NtUserSetSystemMenu(
|
||||||
DWORD Unknown0,
|
HWND hWnd,
|
||||||
DWORD Unknown1);
|
HMENU hMenu);
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
STDCALL
|
STDCALL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: defwnd.c,v 1.60 2003/08/06 11:32:17 weiden Exp $
|
/* $Id: defwnd.c,v 1.61 2003/08/06 13:17:43 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS user32.dll
|
* PROJECT: ReactOS user32.dll
|
||||||
|
@ -490,7 +490,6 @@ DefWndDoPaintNC(HWND hWnd, HRGN clip)
|
||||||
{
|
{
|
||||||
RECT r = rect;
|
RECT r = rect;
|
||||||
r.bottom = rect.top + GetSystemMetrics(SM_CYMENU);
|
r.bottom = rect.top + GetSystemMetrics(SM_CYMENU);
|
||||||
DbgPrint("Calling MenuDrawMenuBar()\n");
|
|
||||||
rect.top += MenuDrawMenuBar(hDC, &r, hWnd, FALSE);
|
rect.top += MenuDrawMenuBar(hDC, &r, hWnd, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1389,7 +1388,6 @@ DefWndNCCalcSize(HWND hWnd, RECT* Rect)
|
||||||
Rect->bottom -= TmpRect.bottom;
|
Rect->bottom -= TmpRect.bottom;
|
||||||
if (UserHasMenu(hWnd, GetWindowLong(hWnd, GWL_EXSTYLE)))
|
if (UserHasMenu(hWnd, GetWindowLong(hWnd, GWL_EXSTYLE)))
|
||||||
{
|
{
|
||||||
DbgPrint("Calling MenuGetMenuBarHeight()\n");
|
|
||||||
Rect->top += MenuGetMenuBarHeight(hWnd,
|
Rect->top += MenuGetMenuBarHeight(hWnd,
|
||||||
Rect->right - Rect->left,
|
Rect->right - Rect->left,
|
||||||
-TmpRect.left,
|
-TmpRect.left,
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: menu.c,v 1.18 2003/08/06 11:32:17 weiden Exp $
|
/* $Id: menu.c,v 1.19 2003/08/06 13:17:43 weiden Exp $
|
||||||
*
|
*
|
||||||
* PROJECT: ReactOS user32.dll
|
* PROJECT: ReactOS user32.dll
|
||||||
* FILE: lib/user32/windows/menu.c
|
* FILE: lib/user32/windows/menu.c
|
||||||
|
@ -119,6 +119,9 @@ STATIC HEAP_strdupA2W ( HANDLE hHeap, LPWSTR* ppszW, LPCSTR lpszA, UINT* NewLen
|
||||||
#define GET_DWORD(ptr) (*(DWORD *)(ptr))
|
#define GET_DWORD(ptr) (*(DWORD *)(ptr))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
HFONT hMenuFont = NULL;
|
||||||
|
HFONT hMenuFontBold = NULL;
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* MENUEX_ParseResource
|
* MENUEX_ParseResource
|
||||||
*
|
*
|
||||||
|
@ -241,39 +244,34 @@ static LPCSTR MENU_ParseResource( LPCSTR res, HMENU hMenu, BOOL unicode )
|
||||||
BOOL
|
BOOL
|
||||||
MenuInit(VOID)
|
MenuInit(VOID)
|
||||||
{
|
{
|
||||||
return TRUE;
|
NONCLIENTMETRICSW ncm;
|
||||||
/* NONCLIENTMETRICSW ncm;
|
|
||||||
BITMAP bm;
|
|
||||||
|
|
||||||
hStdMnArrow = LoadBitmapA(0, MAKEINTRESOURCEA(OBM_MNARROW));
|
/* get the menu font */
|
||||||
if (hStdMnArrow == NULL)
|
if(!hMenuFont || !hMenuFontBold)
|
||||||
{
|
{
|
||||||
return(FALSE);
|
if(!SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, 0))
|
||||||
}
|
|
||||||
GetObjectA(hStdMnArrow, sizeof(bm), &bm);
|
|
||||||
ArrowBitmapWidth = bm.bmWidth;
|
|
||||||
ArrowBitmapHeight = bm.bmHeight;
|
|
||||||
|
|
||||||
if (!SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, 0))
|
|
||||||
{
|
{
|
||||||
return(FALSE);
|
DbgPrint("MenuInit(): SystemParametersInfoW(SPI_GETNONCLIENTMETRICS) failed!\n");
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
hMenuFont = CreateFontIndirect(&ncm.lfMenuFont);
|
hMenuFont = CreateFontIndirect(&ncm.lfMenuFont);
|
||||||
if (hMenuFont == NULL)
|
if(hMenuFont == NULL)
|
||||||
{
|
{
|
||||||
return(FALSE);
|
DbgPrint("MenuInit(): CreateFontIndirect(hMenuFont) failed!\n");
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ncm.lfMenuFont.lfWeight = max(ncm.lfMenuFont.lfWeight + 300, 1000);
|
ncm.lfMenuFont.lfWeight = max(ncm.lfMenuFont.lfWeight + 300, 1000);
|
||||||
|
|
||||||
hMenuFontBold = CreateFontIndirect(&ncm.lfMenuFont);
|
hMenuFontBold = CreateFontIndirect(&ncm.lfMenuFont);
|
||||||
if (hMenuFontBold == NULL)
|
if(hMenuFontBold == NULL)
|
||||||
{
|
{
|
||||||
return(FALSE);
|
DbgPrint("MenuInit(): CreateFontIndirect(hMenuFontBold) failed!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return(TRUE);*/
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -304,6 +302,9 @@ MenuGetMenuBarHeight(HWND hWnd, ULONG MenuBarWidth, LONG OrgX, LONG OrgY)
|
||||||
UINT
|
UINT
|
||||||
MenuDrawMenuBar(HDC hDC, LPRECT Rect, HWND hWnd, BOOL Draw)
|
MenuDrawMenuBar(HDC hDC, LPRECT Rect, HWND hWnd, BOOL Draw)
|
||||||
{
|
{
|
||||||
|
HFONT hFontOld = SelectObject(hDC, hMenuFont);
|
||||||
|
//DrawTextA(hDC, "This is the menu bar", 19, Rect, DT_SINGLELINE);
|
||||||
|
SelectObject(hDC, hFontOld);
|
||||||
return(GetSystemMetrics(SM_CYMENU));
|
return(GetSystemMetrics(SM_CYMENU));
|
||||||
/*
|
/*
|
||||||
ULONG MenuID;
|
ULONG MenuID;
|
||||||
|
@ -482,6 +483,7 @@ WINBOOL STDCALL
|
||||||
DrawMenuBar(HWND hWnd)
|
DrawMenuBar(HWND hWnd)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED
|
UNIMPLEMENTED
|
||||||
|
/* FIXME - return NtUserCallHwndLock(hWnd, 0x55); */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -504,12 +506,13 @@ WINBOOL STDCALL
|
||||||
EndMenu(VOID)
|
EndMenu(VOID)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
/* FIXME - return NtUserEndMenu(); */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
HMENU STDCALL
|
HMENU STDCALL
|
||||||
GetMenu(HWND hWnd)
|
GetMenu(HWND hWnd)
|
||||||
|
@ -1051,21 +1054,13 @@ RemoveMenu(
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
WINBOOL STDCALL
|
WINBOOL STDCALL
|
||||||
SetMenu(HWND hWnd,
|
SetMenu(HWND hWnd,
|
||||||
HMENU hMenu)
|
HMENU hMenu)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
return NtUserSetMenu(hWnd, hMenu, TRUE);
|
||||||
/* from wine
|
|
||||||
if (IsWindowVisible(hWnd))
|
|
||||||
{
|
|
||||||
SetWindowPos(hWnd, 0, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE |
|
|
||||||
SWP_NOACTIVATE | SWP_NOZORDER | SWP_FRAMECHANGED);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,58 @@ typedef struct _MENU_OBJECT
|
||||||
BOOL RtoL;
|
BOOL RtoL;
|
||||||
} MENU_OBJECT, *PMENU_OBJECT;
|
} MENU_OBJECT, *PMENU_OBJECT;
|
||||||
|
|
||||||
|
PMENU_OBJECT FASTCALL
|
||||||
|
W32kGetMenuObject(HMENU hMenu);
|
||||||
|
|
||||||
|
VOID FASTCALL
|
||||||
|
W32kReleaseMenuObject(PMENU_OBJECT MenuObject);
|
||||||
|
|
||||||
|
BOOL FASTCALL
|
||||||
|
W32kFreeMenuItem(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem,
|
||||||
|
BOOL RemoveFromList, BOOL bRecurse);
|
||||||
|
|
||||||
|
UINT FASTCALL
|
||||||
|
W32kDeleteMenuItems(PMENU_OBJECT MenuObject, BOOL bRecurse);
|
||||||
|
|
||||||
|
BOOL FASTCALL
|
||||||
|
W32kDestroyMenuObject(PMENU_OBJECT MenuObject);
|
||||||
|
|
||||||
|
PMENU_OBJECT FASTCALL
|
||||||
|
W32kCreateMenu(PHANDLE Handle);
|
||||||
|
|
||||||
|
BOOL FASTCALL
|
||||||
|
W32kSetMenuFlagRtoL(PMENU_OBJECT MenuObject);
|
||||||
|
|
||||||
|
BOOL FASTCALL
|
||||||
|
W32kSetMenuContextHelpId(PMENU_OBJECT MenuObject, DWORD dwContextHelpId);
|
||||||
|
|
||||||
|
BOOL FASTCALL
|
||||||
|
W32kGetMenuInfo(PMENU_OBJECT MenuObject, LPMENUINFO lpmi);
|
||||||
|
|
||||||
|
BOOL FASTCALL
|
||||||
|
W32kSetMenuInfo(PMENU_OBJECT MenuObject, LPMENUINFO lpmi);
|
||||||
|
|
||||||
|
int FASTCALL
|
||||||
|
W32kGetMenuItemByFlag(PMENU_OBJECT MenuObject, UINT uSearchBy, UINT fFlag, PMENU_ITEM *MenuItem);
|
||||||
|
|
||||||
|
BOOL FASTCALL
|
||||||
|
W32kSetMenuItemInfo(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, LPCMENUITEMINFOW lpmii);
|
||||||
|
|
||||||
|
BOOL FASTCALL
|
||||||
|
W32kInsertMenuItem(PMENU_OBJECT MenuObject, UINT uItem, WINBOOL fByPosition,
|
||||||
|
LPCMENUITEMINFOW lpmii);
|
||||||
|
|
||||||
|
UINT FASTCALL
|
||||||
|
W32kEnableMenuItem(PMENU_OBJECT MenuObject, UINT uIDEnableItem, UINT uEnable);
|
||||||
|
|
||||||
|
DWORD FASTCALL
|
||||||
|
W32kCheckMenuItem(PMENU_OBJECT MenuObject, UINT uIDCheckItem, UINT uCheck);
|
||||||
|
|
||||||
|
BOOL FASTCALL
|
||||||
|
W32kSetMenuDefaultItem(PMENU_OBJECT MenuObject, UINT uItem, UINT fByPos);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS FASTCALL
|
NTSTATUS FASTCALL
|
||||||
InitMenuImpl(VOID);
|
InitMenuImpl(VOID);
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: menu.c,v 1.10 2003/08/06 11:32:17 weiden Exp $
|
/* $Id: menu.c,v 1.11 2003/08/06 13:17:44 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: misc.c,v 1.2 2003/08/06 11:32:17 weiden Exp $
|
/* $Id: misc.c,v 1.3 2003/08/06 13:17:44 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -55,9 +55,9 @@ NtUserCallOneParam(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
Result = WindowObject->Menu;
|
Result = WindowObject->Menu;
|
||||||
DbgPrint("ONEPARAM_ROUTINE_GETMENU = 0x%x\n", Result);
|
|
||||||
W32kReleaseWindowObject(WindowObject);
|
W32kReleaseWindowObject(WindowObject);
|
||||||
return Result;
|
return Result;
|
||||||
|
|
||||||
case ONEPARAM_ROUTINE_ISWINDOWUNICODE:
|
case ONEPARAM_ROUTINE_ISWINDOWUNICODE:
|
||||||
WindowObject = W32kGetWindowObject((HWND)Param);
|
WindowObject = W32kGetWindowObject((HWND)Param);
|
||||||
if(!WindowObject)
|
if(!WindowObject)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: stubs.c,v 1.23 2003/08/06 11:32:17 weiden Exp $
|
/* $Id: stubs.c,v 1.24 2003/08/06 13:17:44 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -91,17 +91,6 @@ NtUserCallHwnd(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD
|
|
||||||
STDCALL
|
|
||||||
NtUserCallHwndLock(
|
|
||||||
DWORD Unknown0,
|
|
||||||
DWORD Unknown1)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserCallHwndOpt(
|
NtUserCallHwndOpt(
|
||||||
|
@ -710,17 +699,6 @@ NtUserGetPriorityClipboardFormat(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD
|
|
||||||
STDCALL
|
|
||||||
NtUserGetSystemMenu(
|
|
||||||
DWORD Unknown0,
|
|
||||||
DWORD Unknown1)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserGetThreadState(
|
NtUserGetThreadState(
|
||||||
|
@ -1055,19 +1033,6 @@ NtUserSetImeHotKey(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DWORD
|
|
||||||
STDCALL
|
|
||||||
NtUserSetMenu(
|
|
||||||
DWORD Unknown0,
|
|
||||||
DWORD Unknown1,
|
|
||||||
DWORD Unknown2)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserSetParent(
|
NtUserSetParent(
|
||||||
|
@ -1103,17 +1068,6 @@ NtUserSetSysColors(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD
|
|
||||||
STDCALL
|
|
||||||
NtUserSetSystemMenu(
|
|
||||||
DWORD Unknown0,
|
|
||||||
DWORD Unknown1)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserSetThreadState(
|
NtUserSetThreadState(
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: window.c,v 1.77 2003/08/05 15:41:03 weiden Exp $
|
/* $Id: window.c,v 1.78 2003/08/06 13:17:44 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -46,6 +46,7 @@
|
||||||
#include <include/painting.h>
|
#include <include/painting.h>
|
||||||
#include <include/scroll.h>
|
#include <include/scroll.h>
|
||||||
#include <include/vis.h>
|
#include <include/vis.h>
|
||||||
|
#include <include/menu.h>
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <win32k/debug1.h>
|
#include <win32k/debug1.h>
|
||||||
|
@ -2287,4 +2288,103 @@ NtUserGetLastActivePopup(HWND hWnd)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
STDCALL
|
||||||
|
NtUserSetMenu(
|
||||||
|
HWND hWnd,
|
||||||
|
HMENU hMenu,
|
||||||
|
BOOL bRepaint)
|
||||||
|
{
|
||||||
|
PWINDOW_OBJECT WindowObject;
|
||||||
|
PMENU_OBJECT MenuObject;
|
||||||
|
WindowObject = W32kGetWindowObject((HWND)hWnd);
|
||||||
|
if(!WindowObject)
|
||||||
|
{
|
||||||
|
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(hMenu)
|
||||||
|
{
|
||||||
|
/* assign new menu handle */
|
||||||
|
MenuObject = W32kGetMenuObject((HWND)hMenu);
|
||||||
|
if(!MenuObject)
|
||||||
|
{
|
||||||
|
W32kReleaseWindowObject(WindowObject);
|
||||||
|
SetLastWin32Error(ERROR_INVALID_MENU_HANDLE);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
WindowObject->Menu = hMenu;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* remove the menu handle */
|
||||||
|
WindowObject->Menu = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
W32kReleaseMenuObject(MenuObject);
|
||||||
|
W32kReleaseWindowObject(WindowObject);
|
||||||
|
|
||||||
|
/* FIXME (from wine)
|
||||||
|
if(bRepaint)
|
||||||
|
{
|
||||||
|
if (IsWindowVisible(hWnd))
|
||||||
|
SetWindowPos( hWnd, 0, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE |
|
||||||
|
SWP_NOACTIVATE | SWP_NOZORDER | SWP_FRAMECHANGED );
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
HMENU
|
||||||
|
STDCALL
|
||||||
|
NtUserGetSystemMenu(
|
||||||
|
HWND hWnd,
|
||||||
|
BOOL bRevert)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
STDCALL
|
||||||
|
NtUserSetSystemMenu(
|
||||||
|
HWND hWnd,
|
||||||
|
HMENU hMenu)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
STDCALL
|
||||||
|
NtUserCallHwndLock(
|
||||||
|
HWND hWnd,
|
||||||
|
DWORD Unknown1)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED
|
||||||
|
/* DrawMenuBar() calls it with Unknown1==0x55 */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
Loading…
Reference in a new issue