Ignore:
Timestamp:
Jun 9, 2001, 4:50:26 PM (24 years ago)
Author:
sandervl
Message:

reference count (window + class objects) rewrite

File:
1 edited

Legend:

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

    r5766 r5935  
    1 /* $Id: menu.cpp,v 1.31 2001-05-20 08:49:49 sandervl Exp $*/
     1/* $Id: menu.cpp,v 1.32 2001-06-09 14:50:18 sandervl Exp $*/
    22/*
    33 * Menu functions
     
    298298{
    299299  Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);
    300 
    301   return win32wnd ? win32wnd->GetMenu():(HMENU)0;
     300 
     301  if(win32wnd) {
     302      HMENU hmenu = win32wnd->GetMenu();
     303      RELEASE_WNDOBJ(win32wnd);
     304      return hmenu;
     305  }
     306  return (HMENU)0;
    302307}
    303308
     
    306311  Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);
    307312
    308   if (win32wnd) win32wnd->SetMenu(hMenu);
     313  if (win32wnd) {
     314      win32wnd->SetMenu(hMenu);
     315      RELEASE_WNDOBJ(win32wnd);
     316  }
    309317}
    310318
     
    313321  Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);
    314322
    315   return win32wnd ? win32wnd->GetSysMenu():(HMENU)0;
     323  if(win32wnd) {
     324      HMENU hmenu = win32wnd->GetSysMenu();
     325      RELEASE_WNDOBJ(win32wnd);
     326      return hmenu;
     327  }
     328  return (HMENU)0;
    316329}
    317330
     
    320333  Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);
    321334
    322   win32wnd->SetSysMenu(hMenu);
     335  if(win32wnd) {
     336      win32wnd->SetSysMenu(hMenu);
     337      RELEASE_WNDOBJ(win32wnd);
     338  }
    323339}
    324340
     
    21742190          rect.bottom = GetSystemMetrics(SM_CYSIZE);
    21752191        }
     2192        if(win32wnd) RELEASE_WNDOBJ(win32wnd);
    21762193    }
    21772194    else
     
    22322249
    22332250        ht = win32wnd->HandleNCHitTest(pt);
     2251        RELEASE_WNDOBJ(win32wnd);
    22342252        if( menu->wFlags & MF_POPUP )
    22352253            ht =  (ht != (UINT)HTNOWHERE &&
     
    39954013{
    39964014    HMENU retvalue = 0;
    3997     Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hWnd);
    3998 
    3999     dprintf(("USER32: GetSystemMenu"));
    4000 
    4001     if (win32wnd)
     4015
     4016    dprintf(("USER32: GetSystemMenu %x %d", hWnd, bRevert));
     4017
     4018    if (IsWindow(hWnd))
    40024019    {
    40034020        HMENU hSysMenu = getSysMenu(hWnd);
     
    40634080        if (win32wnd->GetSysMenu()) DestroyMenu(win32wnd->GetSysMenu());
    40644081        win32wnd->SetSysMenu(MENU_GetSysMenu( hwnd, hMenu ));
     4082        RELEASE_WNDOBJ(win32wnd);
    40654083        return TRUE;
    40664084    }
Note: See TracChangeset for help on using the changeset viewer.