Ignore:
Timestamp:
Dec 22, 1999, 7:09:32 PM (26 years ago)
Author:
cbratschi
Message:

WinGetKeyState fixed, MDI code ported

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/win32wmdiclient.cpp

    r2185 r2189  
    1 /* $Id: win32wmdiclient.cpp,v 1.17 1999-12-21 17:03:45 cbratschi Exp $ */
     1/* $Id: win32wmdiclient.cpp,v 1.18 1999-12-22 18:09:32 cbratschi Exp $ */
    22/*
    33 * Win32 MDI Client Window Class for OS/2
     
    832832BOOL Win32MDIClientWindow::augmentFrameMenu(Win32MDIChildWindow *child)
    833833{
    834 /*
    835     WND*    child = WIN_FindWndPtr(hChild);
    836     HMENU   hSysPopup = 0;
    837     HBITMAP hSysMenuBitmap = 0;
    838 
    839     if( !frame->wIDmenu || !child->hSysMenu )
    840     {
    841         WIN_ReleaseWndPtr(child);
    842         return 0;
    843     }
    844     WIN_ReleaseWndPtr(child);
    845 
    846     // create a copy of sysmenu popup and insert it into frame menu bar
    847 
    848     if (!(hSysPopup = LoadMenuA(GetModuleHandleA("USER32"), "SYSMENU")))
     834  HMENU   hSysPopup = 0,hFrameMenu = ::GetMenu(getParent()->getWindowHandle()),hSysMenu = GetSystemMenu(child->getWindowHandle(),FALSE);
     835  HBITMAP hSysMenuBitmap = 0;
     836
     837  if (!hFrameMenu || !hSysMenu)
    849838    return 0;
    850839
    851     //TRACE("\tgot popup %04x in sysmenu %04x\n",
    852     //    hSysPopup, child->hSysMenu);
    853 
    854     AppendMenuA(frame->wIDmenu,MF_HELP | MF_BITMAP,
    855                    SC_MINIMIZE, (LPSTR)(DWORD)HBMMENU_MBAR_MINIMIZE ) ;
    856     AppendMenuA(frame->wIDmenu,MF_HELP | MF_BITMAP,
    857                    SC_RESTORE, (LPSTR)(DWORD)HBMMENU_MBAR_RESTORE );
     840  // create a copy of sysmenu popup and insert it into frame menu bar
     841
     842  if (!(hSysPopup = LoadMenuA(GetModuleHandleA("USER32"), "SYSMENU")))
     843    return 0;
     844
     845  //TRACE("\tgot popup %04x in sysmenu %04x\n",
     846  //    hSysPopup, child->hSysMenu);
     847
     848  AppendMenuA(hFrameMenu,MF_HELP | MF_BITMAP,
     849                 SC_MINIMIZE, (LPSTR)(DWORD)HBMMENU_MBAR_MINIMIZE ) ;
     850  AppendMenuA(hFrameMenu,MF_HELP | MF_BITMAP,
     851                 SC_RESTORE, (LPSTR)(DWORD)HBMMENU_MBAR_RESTORE );
    858852
    859853  // In Win 95 look, the system menu is replaced by the child icon
    860854
    861   if(TWEAK_WineLook > WIN31_LOOK)
     855  HICON hIcon = GetClassLongA(child->getWindowHandle(), GCL_HICONSM);
     856  if (!hIcon)
     857    hIcon = GetClassLongA(child->getWindowHandle(), GCL_HICON);
     858  if (hIcon)
    862859  {
    863     HICON hIcon = GetClassLongA(hChild, GCL_HICONSM);
    864     if (!hIcon)
    865       hIcon = GetClassLongA(hChild, GCL_HICON);
    866     if (hIcon)
    867     {
    868       HDC hMemDC;
    869       HBITMAP hBitmap, hOldBitmap;
    870       HBRUSH hBrush;
    871       HDC hdc = GetDC(hChild);
    872 
    873       if (hdc)
    874       {
    875         int cx, cy;
    876         cx = GetSystemMetrics(SM_CXSMICON);
    877         cy = GetSystemMetrics(SM_CYSMICON);
    878         hMemDC = CreateCompatibleDC(hdc);
    879         hBitmap = CreateCompatibleBitmap(hdc, cx, cy);
    880         hOldBitmap = SelectObject(hMemDC, hBitmap);
    881         SetMapMode(hMemDC, MM_TEXT);
    882         hBrush = CreateSolidBrush(GetSysColor(COLOR_MENU));
    883         DrawIconEx(hMemDC, 0, 0, hIcon, cx, cy, 0, hBrush, DI_NORMAL);
    884         SelectObject (hMemDC, hOldBitmap);
    885         DeleteObject(hBrush);
    886         DeleteDC(hMemDC);
    887         ReleaseDC(hChild, hdc);
    888         hSysMenuBitmap = hBitmap;
    889       }
     860    HDC hMemDC;
     861    HBITMAP hBitmap, hOldBitmap;
     862    HBRUSH hBrush;
     863    HDC hdc = GetDC(child->getWindowHandle());
     864
     865    if (hdc)
     866    {
     867      int cx, cy;
     868
     869      cx = GetSystemMetrics(SM_CXSMICON);
     870      cy = GetSystemMetrics(SM_CYSMICON);
     871      hMemDC = CreateCompatibleDC(hdc);
     872      hBitmap = CreateCompatibleBitmap(hdc, cx, cy);
     873      hOldBitmap = SelectObject(hMemDC, hBitmap);
     874      SetMapMode(hMemDC, MM_TEXT);
     875      hBrush = CreateSolidBrush(GetSysColor(COLOR_MENU));
     876      DrawIconEx(hMemDC, 0, 0, hIcon, cx, cy, 0, hBrush, DI_NORMAL);
     877      SelectObject (hMemDC, hOldBitmap);
     878      DeleteObject(hBrush);
     879      DeleteDC(hMemDC);
     880      ReleaseDC(child->getWindowHandle(), hdc);
     881      hSysMenuBitmap = hBitmap;
    890882    }
    891883  }
    892   else
    893     hSysMenuBitmap = hBmpClose;
    894 
    895     if( !InsertMenuA(frame->wIDmenu,0,MF_BYPOSITION | MF_BITMAP | MF_POPUP,
     884
     885  if( !InsertMenuA(hFrameMenu,0,MF_BYPOSITION | MF_BITMAP | MF_POPUP,
    896886                    hSysPopup, (LPSTR)(DWORD)hSysMenuBitmap))
    897     {
    898         TRACE("not inserted\n");
     887  {
     888        //TRACE("not inserted\n");
    899889    DestroyMenu(hSysPopup);
    900890    return 0;
    901     }
    902 
    903     // The close button is only present in Win 95 look
    904     if(TWEAK_WineLook > WIN31_LOOK)
    905     {
    906         AppendMenuA(frame->wIDmenu,MF_HELP | MF_BITMAP,
    907                        SC_CLOSE, (LPSTR)(DWORD)HBMMENU_MBAR_CLOSE );
    908     }
    909 
    910     EnableMenuItem(hSysPopup, SC_SIZE, MF_BYCOMMAND | MF_GRAYED);
    911     EnableMenuItem(hSysPopup, SC_MOVE, MF_BYCOMMAND | MF_GRAYED);
    912     EnableMenuItem(hSysPopup, SC_MAXIMIZE, MF_BYCOMMAND | MF_GRAYED);
    913     SetMenuDefaultItem(hSysPopup, SC_CLOSE, FALSE);
    914 
    915     // redraw menu
    916     DrawMenuBar(frame->hwndSelf);
    917 */
    918     return 1;
     891  }
     892
     893  // The close button is only present in Win 95 look
     894
     895  AppendMenuA(hFrameMenu,MF_HELP | MF_BITMAP,
     896                 SC_CLOSE, (LPSTR)(DWORD)HBMMENU_MBAR_CLOSE );
     897
     898  EnableMenuItem(hSysPopup, SC_SIZE, MF_BYCOMMAND | MF_GRAYED);
     899  EnableMenuItem(hSysPopup, SC_MOVE, MF_BYCOMMAND | MF_GRAYED);
     900  EnableMenuItem(hSysPopup, SC_MAXIMIZE, MF_BYCOMMAND | MF_GRAYED);
     901  SetMenuDefaultItem(hSysPopup, SC_CLOSE, FALSE);
     902
     903  // redraw menu
     904  DrawMenuBar(getParent()->getWindowHandle());
     905
     906  return 1;
    919907}
    920908
     
    924912BOOL Win32MDIClientWindow::restoreFrameMenu(Win32MDIChildWindow *child)
    925913{
    926 /*
    927914    MENUITEMINFOA menuInfo;
    928     INT nItems = GetMenuItemCount(frameWnd->wIDmenu) - 1;
    929     UINT iId = GetMenuItemID(frameWnd->wIDmenu,nItems) ;
    930 
    931     TRACE("frameWnd %p,child %04x\n",frameWnd,hChild);
     915    HMENU hFrameMenu = ::GetMenu(getParent()->getWindowHandle());
     916    INT nItems = GetMenuItemCount(hFrameMenu) - 1;
     917    UINT iId = GetMenuItemID(hFrameMenu,nItems) ;
     918
     919    //TRACE("frameWnd %p,child %04x\n",frameWnd,hChild);
    932920
    933921    if(!(iId == SC_RESTORE || iId == SC_CLOSE) )
     
    938926     * as it is in win95, we have to delete the bitmap.
    939927     */
    940 /*
     928
    941929    menuInfo.cbSize = sizeof(MENUITEMINFOA);
    942930    menuInfo.fMask  = MIIM_DATA | MIIM_TYPE;
    943931
    944     GetMenuItemInfoA(frameWnd->wIDmenu,
     932    GetMenuItemInfoA(hFrameMenu,
    945933             0,
    946934             TRUE,
    947935             &menuInfo);
    948936
    949     RemoveMenu(frameWnd->wIDmenu,0,MF_BYPOSITION);
    950 
     937    RemoveMenu(hFrameMenu,0,MF_BYPOSITION);
     938
     939#if 0  //CB: hBmpClose not (yet) defined
    951940    if ( (menuInfo.fType & MFT_BITMAP)           &&
    952941     (LOWORD(menuInfo.dwTypeData)!=0)        &&
     
    955944      DeleteObject((HBITMAP)LOWORD(menuInfo.dwTypeData));
    956945    }
    957 
    958     if(TWEAK_WineLook > WIN31_LOOK)
    959     {
    960         // close
    961         DeleteMenu(frameWnd->wIDmenu,GetMenuItemCount(frameWnd->wIDmenu) - 1,MF_BYPOSITION);
    962     }
     946#endif
     947
     948    // close
     949    DeleteMenu(hFrameMenu,GetMenuItemCount(hFrameMenu) - 1,MF_BYPOSITION);
     950
    963951    // restore
    964     DeleteMenu(frameWnd->wIDmenu,GetMenuItemCount(frameWnd->wIDmenu) - 1,MF_BYPOSITION);
     952    DeleteMenu(hFrameMenu,GetMenuItemCount(hFrameMenu) - 1,MF_BYPOSITION);
    965953    // minimize
    966     DeleteMenu(frameWnd->wIDmenu,GetMenuItemCount(frameWnd->wIDmenu) - 1,MF_BYPOSITION);
    967 
    968     DrawMenuBar(frameWnd->hwndSelf);
    969 */
     954    DeleteMenu(hFrameMenu,GetMenuItemCount(hFrameMenu) - 1,MF_BYPOSITION);
     955
     956    DrawMenuBar(getParent()->getWindowHandle());
     957
    970958    return 1;
    971959}
Note: See TracChangeset for help on using the changeset viewer.