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/win32wmdichild.cpp

    r4573 r5935  
    1 /* $Id: win32wmdichild.cpp,v 1.25 2000-11-09 18:15:22 sandervl Exp $ */
     1/* $Id: win32wmdichild.cpp,v 1.26 2001-06-09 14:50:23 sandervl Exp $ */
    22/*
    33 * Win32 MDI Child Window Class for OS/2
     
    4646//******************************************************************************
    4747Win32MDIChildWindow::Win32MDIChildWindow(CREATESTRUCTA *lpCreateStructA, ATOM classAtom, BOOL fUnicode)
    48                     : Win32BaseWindow(OBJTYPE_WINDOW)
     48                    : Win32BaseWindow()
    4949{
    5050    isUnicode = fUnicode;
     
    7373        DefWindowProcA(Msg, wParam, lParam);
    7474        menuModifyItem();
    75         if( client->getMaximizedChild() == this )
     75        if( client->getMaximizedChild() == getWindowHandle() )
    7676                client->updateFrameText(MDI_REPAINTFRAME, NULL);
    7777        return 0;
     
    9393
    9494    case WM_SETFOCUS:
    95         if(client->getActiveChild() != this )
     95        if(client->getActiveChild() != getWindowHandle() )
    9696            client->childActivate(this);
    9797        break;
     
    108108        {
    109109        case SC_MOVE:
    110             if( client->getMaximizedChild() == this)
     110            if( client->getMaximizedChild() == getWindowHandle())
    111111            {
    112112                return 0;
     
    119119
    120120        case SC_MAXIMIZE:
    121             if( client->getMaximizedChild() == this)
     121            if( client->getMaximizedChild() == getWindowHandle())
    122122            {
    123123                  return client->SendMessageA(Msg, wParam, lParam);
     
    145145    case WM_SIZE:
    146146        /* do not change */
    147         if( client->getActiveChild() == this && wParam != SIZE_MAXIMIZED )
     147        if( client->getActiveChild() == getWindowHandle() && wParam != SIZE_MAXIMIZED )
    148148        {
    149149            client->setMaximizedChild(NULL);
    150             client->restoreFrameMenu(this);
     150            client->restoreFrameMenu(getWindowHandle());
    151151            client->updateFrameText(MDI_REPAINTFRAME, NULL );
    152152        }
     
    154154        if( wParam == SIZE_MAXIMIZED )
    155155        {
    156             Win32MDIChildWindow *maxChild = client->getMaximizedChild();
    157 
    158             if( maxChild == this ) break;
     156            HWND maxChild = client->getMaximizedChild();
     157
     158            if( maxChild == getWindowHandle() ) break;
    159159
    160160            if( maxChild)
    161161            {
    162                 maxChild->SendMessageA(WM_SETREDRAW, FALSE, 0L );
     162                ::SendMessageA(maxChild, WM_SETREDRAW, FALSE, 0L );
    163163                client->restoreFrameMenu(maxChild);
    164                 maxChild->ShowWindow(SW_SHOWNOACTIVATE);
    165 
    166                 maxChild->SendMessageA(WM_SETREDRAW, TRUE, 0L );
     164                ::ShowWindow(maxChild, SW_SHOWNOACTIVATE);
     165
     166                ::SendMessageA(maxChild, WM_SETREDRAW, TRUE, 0L );
    167167            }
    168168
    169             client->setMaximizedChild(this);
    170             client->setActiveChild(this);
    171 
    172             client->augmentFrameMenu(this);
     169            client->setMaximizedChild(getWindowHandle());
     170            client->setActiveChild(getWindowHandle());
     171
     172            client->augmentFrameMenu(getWindowHandle());
    173173
    174174            client->updateFrameText(MDI_REPAINTFRAME, NULL );
     
    221221        DefWindowProcW(Msg, wParam, lParam);
    222222        menuModifyItem();
    223         if( client->getMaximizedChild() == this )
     223        if( client->getMaximizedChild() == getWindowHandle() )
    224224                client->updateFrameText(MDI_REPAINTFRAME, NULL );
    225225
     
    257257  WORD         wIDmenu = client->getFirstChildId() + client->getNrOfChildren();
    258258  char         lpstrDef[]="junk!";
    259   Win32MDIChildWindow *maximizedChild, *newchild;
     259  Win32MDIChildWindow *newchild;
     260  HWND         maximizedChild;
    260261  CREATESTRUCTA createstruct;
    261262  ATOM         classAtom;
     
    287288        maximizedChild = client->getMaximizedChild();
    288289
    289         maximizedChild->ShowWindow( SW_SHOWNOACTIVATE );
     290        ::ShowWindow(maximizedChild, SW_SHOWNOACTIVATE );
    290291
    291292        if( style & WS_MAXIMIZE )
     
    379380                if((newchild->getStyle() & WS_MAXIMIZE) && !client->getMaximizedChild() )
    380381                {
    381                     client->setMaximizedChild(newchild);
    382 
    383                     client->augmentFrameMenu(newchild);
     382                    client->setMaximizedChild(newchild->getWindowHandle());
     383
     384                    client->augmentFrameMenu(newchild->getWindowHandle());
    384385
    385386                    client->updateFrameText(MDI_REPAINTFRAME, NULL );
     
    400401
    401402        maximizedChild = client->getMaximizedChild();
    402         if( maximizedChild && maximizedChild->IsWindow() )
    403             maximizedChild->ShowWindow(SW_SHOWMAXIMIZED);
     403        if( ::IsWindow(maximizedChild) )
     404            ::ShowWindow(maximizedChild, SW_SHOWMAXIMIZED);
    404405
    405406        dprintf(("MDI child creation failed!!"));
     
    456457     * sequence and in the menu child list */
    457458
     459    lock();
    458460    for( index = id+1; index <= client->getNrOfChildren() +
    459461         client->getFirstChildId(); index++ )
    460462    {
    461         Win32MDIChildWindow *tmpWnd = client->getChildByID(index);
     463        Win32MDIChildWindow *tmpWnd = (Win32MDIChildWindow *)GetWindowFromHandle(client->getChildByID(index));
    462464        if( !tmpWnd )
    463465        {
    464           dprintf(("no window for id=%i\n",index));
    465           continue;
     466            dprintf(("no window for id=%i\n",index));
     467            continue;
    466468        }
    467469
     
    473475            lstrcpynA(buffer + n, tmpWnd->getWindowNameA(), sizeof(buffer) - n );
    474476
     477        RELEASE_WNDOBJ(tmpWnd);
     478
     479        unlock();
    475480        /* change menu */
    476481        ModifyMenuA(client->getMDIMenu(), index ,MF_BYCOMMAND | MF_STRING,
    477482                    index - 1 , buffer );
    478     }
     483        lock();
     484    }
     485    unlock();
    479486    return TRUE;
    480487}
Note: See TracChangeset for help on using the changeset viewer.