[Win32k]
[reactos.git] / reactos / win32ss / user / ntuser / window.c
index 6e95a3e..b5386d7 100644 (file)
@@ -901,7 +901,9 @@ IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu)
    PMENU Menu, NewMenu = NULL, SysMenu = NULL, ret = NULL;
    PTHREADINFO W32Thread;
    HMENU hNewMenu, hSysMenu;
+   ROSMENUITEMINFO ItemInfoSet = {0};
    ROSMENUITEMINFO ItemInfo = {0};
+   UNICODE_STRING MenuName;
 
    if(bRevert)
    {
@@ -952,9 +954,21 @@ IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu)
          }
          SysMenu->fFlags |= MNF_SYSDESKMN;
          SysMenu->hWnd = Window->head.h;
-         hNewMenu = co_IntLoadSysMenuTemplate();
+         //hNewMenu = co_IntLoadSysMenuTemplate();
+         //if ( Window->ExStyle & WS_EX_MDICHILD )
+         //{
+         //   RtlInitUnicodeString( &MenuName, L"SYSMENUMDI");
+         //   hNewMenu = co_IntCallLoadMenu( hModClient, &MenuName);
+         //}
+         //else
+         {
+            RtlInitUnicodeString( &MenuName, L"SYSMENU");
+            hNewMenu = co_IntCallLoadMenu( hModClient, &MenuName);
+            //ERR("%wZ\n",&MenuName);
+         }
          if(!hNewMenu)
          {
+            ERR("No Menu!!\n");
             IntReleaseMenuObject(SysMenu);
             UserDestroyMenu(hSysMenu);
             return NULL;
@@ -967,6 +981,21 @@ IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu)
             return NULL;
          }
 
+         // Do the rest in here.
+
+         Menu->fFlags |= MNS_CHECKORBMP | MNF_SYSDESKMN | MNF_POPUP;
+
+         ItemInfoSet.cbSize = sizeof( MENUITEMINFOW);
+         ItemInfoSet.fMask = MIIM_BITMAP;
+         ItemInfoSet.hbmpItem = HBMMENU_POPUP_CLOSE;
+         IntMenuItemInfo(Menu, SC_CLOSE, FALSE, &ItemInfoSet, TRUE, NULL);
+         ItemInfoSet.hbmpItem = HBMMENU_POPUP_RESTORE;
+         IntMenuItemInfo(Menu, SC_RESTORE, FALSE, &ItemInfoSet, TRUE, NULL);
+         ItemInfoSet.hbmpItem = HBMMENU_POPUP_MAXIMIZE;
+         IntMenuItemInfo(Menu, SC_MAXIMIZE, FALSE, &ItemInfoSet, TRUE, NULL);
+         ItemInfoSet.hbmpItem = HBMMENU_POPUP_MINIMIZE;
+         IntMenuItemInfo(Menu, SC_MINIMIZE, FALSE, &ItemInfoSet, TRUE, NULL);
+
          NewMenu = IntCloneMenu(Menu);
          if(NewMenu)
          {
@@ -985,7 +1014,7 @@ IntGetSystemMenu(PWND Window, BOOL bRevert, BOOL RetMenu)
             ItemInfo.dwTypeData = NULL;
             ItemInfo.cch = 0;
             ItemInfo.hSubMenu = NewMenu->head.h;
-            IntInsertMenuItem(SysMenu, (UINT) -1, TRUE, &ItemInfo);
+            IntInsertMenuItem(SysMenu, (UINT) -1, TRUE, &ItemInfo, NULL);
 
             Window->SystemMenu = SysMenu->head.h;