Changeset 2189 for trunk/src/user32/win32wmdiclient.cpp
- Timestamp:
- Dec 22, 1999, 7:09:32 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/win32wmdiclient.cpp
r2185 r2189 1 /* $Id: win32wmdiclient.cpp,v 1.1 7 1999-12-21 17:03:45cbratschi Exp $ */1 /* $Id: win32wmdiclient.cpp,v 1.18 1999-12-22 18:09:32 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 MDI Client Window Class for OS/2 … … 832 832 BOOL Win32MDIClientWindow::augmentFrameMenu(Win32MDIChildWindow *child) 833 833 { 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) 849 838 return 0; 850 839 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 ); 858 852 859 853 // In Win 95 look, the system menu is replaced by the child icon 860 854 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) 862 859 { 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; 890 882 } 891 883 } 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, 896 886 hSysPopup, (LPSTR)(DWORD)hSysMenuBitmap)) 897 898 TRACE("not inserted\n");887 { 888 //TRACE("not inserted\n"); 899 889 DestroyMenu(hSysPopup); 900 890 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; 919 907 } 920 908 … … 924 912 BOOL Win32MDIClientWindow::restoreFrameMenu(Win32MDIChildWindow *child) 925 913 { 926 /*927 914 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); 932 920 933 921 if(!(iId == SC_RESTORE || iId == SC_CLOSE) ) … … 938 926 * as it is in win95, we have to delete the bitmap. 939 927 */ 940 /* 928 941 929 menuInfo.cbSize = sizeof(MENUITEMINFOA); 942 930 menuInfo.fMask = MIIM_DATA | MIIM_TYPE; 943 931 944 GetMenuItemInfoA( frameWnd->wIDmenu,932 GetMenuItemInfoA(hFrameMenu, 945 933 0, 946 934 TRUE, 947 935 &menuInfo); 948 936 949 RemoveMenu(frameWnd->wIDmenu,0,MF_BYPOSITION); 950 937 RemoveMenu(hFrameMenu,0,MF_BYPOSITION); 938 939 #if 0 //CB: hBmpClose not (yet) defined 951 940 if ( (menuInfo.fType & MFT_BITMAP) && 952 941 (LOWORD(menuInfo.dwTypeData)!=0) && … … 955 944 DeleteObject((HBITMAP)LOWORD(menuInfo.dwTypeData)); 956 945 } 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 963 951 // restore 964 DeleteMenu( frameWnd->wIDmenu,GetMenuItemCount(frameWnd->wIDmenu) - 1,MF_BYPOSITION);952 DeleteMenu(hFrameMenu,GetMenuItemCount(hFrameMenu) - 1,MF_BYPOSITION); 965 953 // 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 970 958 return 1; 971 959 }
Note:
See TracChangeset
for help on using the changeset viewer.