Fixed a memory leak that occurs when we maximize/minimize an MDI

child.
This commit is contained in:
Francis Beaudet 1999-07-30 18:02:04 +00:00 committed by Alexandre Julliard
parent 9b7fa1922a
commit 4691d0cb89
1 changed files with 20 additions and 1 deletions

View File

@ -899,6 +899,7 @@ static BOOL MDI_AugmentFrameMenu( MDICLIENTINFO* ci, WND *frame,
*/ */
static BOOL MDI_RestoreFrameMenu( WND *frameWnd, HWND hChild ) static BOOL MDI_RestoreFrameMenu( WND *frameWnd, HWND hChild )
{ {
MENUITEMINFOA menuInfo;
INT nItems = GetMenuItemCount(frameWnd->wIDmenu) - 1; INT nItems = GetMenuItemCount(frameWnd->wIDmenu) - 1;
UINT iId = GetMenuItemID(frameWnd->wIDmenu,nItems) ; UINT iId = GetMenuItemID(frameWnd->wIDmenu,nItems) ;
@ -907,9 +908,27 @@ static BOOL MDI_RestoreFrameMenu( WND *frameWnd, HWND hChild )
if(!(iId == SC_RESTORE || iId == SC_CLOSE) ) if(!(iId == SC_RESTORE || iId == SC_CLOSE) )
return 0; return 0;
/* app button */ /*
* Remove the system menu, If that menu is the icon of the window
* as it is in win95, we have to delete the bitmap.
*/
menuInfo.cbSize = sizeof(MENUITEMINFOA);
menuInfo.fMask = MIIM_DATA | MIIM_TYPE;
GetMenuItemInfoA(frameWnd->wIDmenu,
0,
TRUE,
&menuInfo);
RemoveMenu(frameWnd->wIDmenu,0,MF_BYPOSITION); RemoveMenu(frameWnd->wIDmenu,0,MF_BYPOSITION);
if ( (menuInfo.fType & MFT_BITMAP) &&
(LOWORD(menuInfo.dwTypeData)!=0) &&
(LOWORD(menuInfo.dwTypeData)!=hBmpClose) )
{
DeleteObject((HBITMAP)LOWORD(menuInfo.dwTypeData));
}
if(TWEAK_WineLook > WIN31_LOOK) if(TWEAK_WineLook > WIN31_LOOK)
{ {
/* close */ /* close */