Ignore:
Timestamp:
Jul 18, 1999, 3:57:48 PM (26 years ago)
Author:
cbratschi
Message:

API Open32 -> PM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/new/win32wnd.cpp

    r325 r327  
    1 /* $Id: win32wnd.cpp,v 1.9 1999-07-18 10:39:51 sandervl Exp $ */
     1/* $Id: win32wnd.cpp,v 1.10 1999-07-18 13:57:48 cbratschi Exp $ */
    22/*
    33 * Win32 Window Code for OS/2
     
    124124  if (cs->hwndParent)
    125125  {
    126         Win32Window *window = GetWindowFromHandle(cs->hwndParent);
    127         if(!window) {
     126        Win32Window *window = GetWindowFromHandle(cs->hwndParent);
     127        if(!window) {
    128128                dprintf(("Bad parent %04x\n", cs->hwndParent ));
    129129                SetLastError(ERROR_INVALID_PARAMETER);
    130                 return FALSE;
    131         }
     130                return FALSE;
     131        }
    132132        /* Make sure parent is valid */
    133133        if (!window->IsWindow() )
     
    231231  if ((cs->style & WS_CHILD) && cs->hwndParent)
    232232  {
    233         SetParent(cs->hwndParent);
     233        SetParent(cs->hwndParent);
    234234  }
    235235  else
     
    240240        else
    241241        {
    242                 owner = GetWindowFromHandle(cs->hwndParent);
     242                owner = GetWindowFromHandle(cs->hwndParent);
    243243                if(owner == NULL)
    244244                {
     
    263263    if (HOOK_IsHooked( WH_CBT ))
    264264    {
    265         CBT_CREATEWNDA cbtc;
     265        CBT_CREATEWNDA cbtc;
    266266        LRESULT ret;
    267267
    268         cbtc.lpcs = cs;
    269         cbtc.hwndInsertAfter = hwndLinkAfter;
     268        cbtc.lpcs = cs;
     269        cbtc.hwndInsertAfter = hwndLinkAfter;
    270270        ret = unicode ? HOOK_CallHooksW(WH_CBT, HCBT_CREATEWND, Win32Hwnd, (LPARAM)&cbtc)
    271271                      : HOOK_CallHooksA(WH_CBT, HCBT_CREATEWND, Win32Hwnd, (LPARAM)&cbtc);
    272272        if (ret)
    273         {
    274             TRACE_(win)("CBT-hook returned 0\n");
    275             wndPtr->pDriver->pFinalize(wndPtr);
     273        {
     274            TRACE_(win)("CBT-hook returned 0\n");
     275            wndPtr->pDriver->pFinalize(wndPtr);
    276276            retvalue =  0;
    277277            goto end;
    278         }
     278        }
    279279    }
    280280#endif
     
    337337                                 dwOSWinStyle, dwOSFrameStyle, (char *)cs->lpszName,
    338338                                 (owner) ? owner->getOS2WindowHandle() : 0,
    339                                 (hwndLinkAfter == HWND_BOTTOM) ? TRUE : FALSE,
     339                                (hwndLinkAfter == HWND_BOTTOM) ? TRUE : FALSE,
    340340                                 &OS2HwndFrame);
    341341
     
    354354#if 0
    355355  if(OS2Hwnd != OS2HwndFrame) {
    356         if(OSLibWinSetWindowULong(OS2HwndFrame, OFFSET_WIN32WNDPTR, (ULONG)this) == FALSE) {
    357                 dprintf(("WM_CREATE: WinSetWindowULong %X failed!!", OS2HwndFrame));
    358                 return FALSE;
    359         }
    360         if(OSLibWinSetWindowULong(OS2HwndFrame, OFFSET_WIN32PM_MAGIC, WIN32PM_MAGIC) == FALSE) {
    361                 dprintf(("WM_CREATE: WinSetWindowULong2 %X failed!!", OS2HwndFrame));
    362                 return FALSE;
    363         }
     356        if(OSLibWinSetWindowULong(OS2HwndFrame, OFFSET_WIN32WNDPTR, (ULONG)this) == FALSE) {
     357                dprintf(("WM_CREATE: WinSetWindowULong %X failed!!", OS2HwndFrame));
     358                return FALSE;
     359        }
     360        if(OSLibWinSetWindowULong(OS2HwndFrame, OFFSET_WIN32PM_MAGIC, WIN32PM_MAGIC) == FALSE) {
     361                dprintf(("WM_CREATE: WinSetWindowULong2 %X failed!!", OS2HwndFrame));
     362                return FALSE;
     363        }
    364364  }
    365365#endif
     
    378378  else  windowId = (UINT)cs->hMenu;
    379379
    380   /* Send the WM_CREATE message 
    381    * Perhaps we shouldn't allow width/height changes as well. 
    382    * See p327 in "Internals". 
     380  /* Send the WM_CREATE message
     381   * Perhaps we shouldn't allow width/height changes as well.
     382   * See p327 in "Internals".
    383383   */
    384384  maxPos.x = rectWindow.left; maxPos.y = rectWindow.top;
     
    389389        OffsetRect(&rectWindow, maxPos.x - rectWindow.left,
    390390                                          maxPos.y - rectWindow.top);
    391         dprintf(("Sending WM_CREATE"));
     391        dprintf(("Sending WM_CREATE"));
    392392        if( (SendInternalMessage(WM_CREATE, 0, (LPARAM)cs )) != -1 )
    393393        {
    394394            SetWindowPos(HWND_TOP, rectClient.left, rectClient.top,
    395                          rectClient.right-rectClient.left,
    396                         rectClient.bottom-rectClient.top,
    397                         SWP_NOACTIVATE);
     395                         rectClient.right-rectClient.left,
     396                        rectClient.bottom-rectClient.top,
     397                        SWP_NOACTIVATE);
    398398
    399399            if (cs->style & WS_VISIBLE) ShowWindow( sw );
     
    405405                HOOK_CallHooks16( WH_SHELL, HSHELL_WINDOWCREATED, hwnd, 0 );
    406406#endif
    407             return TRUE;
     407            return TRUE;
    408408        }
    409409  }
     
    429429    if (lpPos && !HOOK_CallHooks16(WH_CBT, HCBT_MINMAX, hwndSelf, cmd))
    430430    {
    431         if( dwStyle & WS_MINIMIZE )
    432         {
    433             if( !SendInternalMessageA(WM_QUERYOPEN, 0, 0L ) )
    434                 return (SWP_NOSIZE | SWP_NOMOVE);
    435             swpFlags |= SWP_NOCOPYBITS;
    436         }
    437         switch( cmd )
    438         {
    439             case SW_MINIMIZE:
    440                 if( dwStyle & WS_MAXIMIZE)
    441                 {
    442                      flags |= WIN_RESTORE_MAX;
    443                      dwStyle &= ~WS_MAXIMIZE;
     431        if( dwStyle & WS_MINIMIZE )
     432        {
     433            if( !SendInternalMessageA(WM_QUERYOPEN, 0, 0L ) )
     434                return (SWP_NOSIZE | SWP_NOMOVE);
     435            swpFlags |= SWP_NOCOPYBITS;
     436        }
     437        switch( cmd )
     438        {
     439            case SW_MINIMIZE:
     440                if( dwStyle & WS_MAXIMIZE)
     441                {
     442                     flags |= WIN_RESTORE_MAX;
     443                     dwStyle &= ~WS_MAXIMIZE;
    444444                 }
    445445                 else
    446                      flags &= ~WIN_RESTORE_MAX;
    447                 dwStyle |= WS_MINIMIZE;
     446                     flags &= ~WIN_RESTORE_MAX;
     447                dwStyle |= WS_MINIMIZE;
    448448
    449449#if 0
    450                 if( flags & WIN_NATIVE )
    451                      if( pDriver->pSetHostAttr( wndPtr, HAK_ICONICSTATE, TRUE ) )
    452                         swpFlags |= MINMAX_NOSWP;
     450                if( flags & WIN_NATIVE )
     451                     if( pDriver->pSetHostAttr( wndPtr, HAK_ICONICSTATE, TRUE ) )
     452                        swpFlags |= MINMAX_NOSWP;
    453453#endif
    454454
    455                 lpPos->ptIconPos = WINPOS_FindIconPos( wndPtr, lpPos->ptIconPos );
    456 
    457                 SetRect(lpRect, lpPos->ptIconPos.x, lpPos->ptIconPos.y,
    458                         GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON) );
    459                 swpFlags |= SWP_NOCOPYBITS;
    460                 break;
    461 
    462             case SW_MAXIMIZE:
     455                lpPos->ptIconPos = WINPOS_FindIconPos( wndPtr, lpPos->ptIconPos );
     456
     457                SetRect(lpRect, lpPos->ptIconPos.x, lpPos->ptIconPos.y,
     458                        GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON) );
     459                swpFlags |= SWP_NOCOPYBITS;
     460                break;
     461
     462            case SW_MAXIMIZE:
    463463                CONV_POINT16TO32( &lpPos->ptMaxPos, &pt );
    464464                WINPOS_GetMinMaxInfo( wndPtr, &size, &pt, NULL, NULL );
    465465                CONV_POINT32TO16( &pt, &lpPos->ptMaxPos );
    466466
    467                 if( dwStyle & WS_MINIMIZE )
    468                 {
    469                      if( flags & WIN_NATIVE )
    470                         if( pDriver->pSetHostAttr( wndPtr, HAK_ICONICSTATE, FALSE ) )
    471                              swpFlags |= MINMAX_NOSWP;
    472 
    473                      WINPOS_ShowIconTitle( wndPtr, FALSE );
    474                      dwStyle &= ~WS_MINIMIZE;
    475                 }
     467                if( dwStyle & WS_MINIMIZE )
     468                {
     469                     if( flags & WIN_NATIVE )
     470                        if( pDriver->pSetHostAttr( wndPtr, HAK_ICONICSTATE, FALSE ) )
     471                             swpFlags |= MINMAX_NOSWP;
     472
     473                     WINPOS_ShowIconTitle( wndPtr, FALSE );
     474                     dwStyle &= ~WS_MINIMIZE;
     475                }
    476476                 dwStyle |= WS_MAXIMIZE;
    477477
    478                 SetRect16( lpRect, lpPos->ptMaxPos.x, lpPos->ptMaxPos.y,
    479                                     size.x, size.y );
    480                 break;
    481 
    482             case SW_RESTORE:
    483                 if( dwStyle & WS_MINIMIZE )
    484                 {
    485                      if( flags & WIN_NATIVE )
    486                         if( pDriver->pSetHostAttr( wndPtr, HAK_ICONICSTATE, FALSE ) )
    487                              swpFlags |= MINMAX_NOSWP;
    488 
    489                      dwStyle &= ~WS_MINIMIZE;
    490                      WINPOS_ShowIconTitle( wndPtr, FALSE );
    491 
    492                      if( flags & WIN_RESTORE_MAX)
    493                      {
    494                         /* Restore to maximized position */
     478                SetRect16( lpRect, lpPos->ptMaxPos.x, lpPos->ptMaxPos.y,
     479                                    size.x, size.y );
     480                break;
     481
     482            case SW_RESTORE:
     483                if( dwStyle & WS_MINIMIZE )
     484                {
     485                     if( flags & WIN_NATIVE )
     486                        if( pDriver->pSetHostAttr( wndPtr, HAK_ICONICSTATE, FALSE ) )
     487                             swpFlags |= MINMAX_NOSWP;
     488
     489                     dwStyle &= ~WS_MINIMIZE;
     490                     WINPOS_ShowIconTitle( wndPtr, FALSE );
     491
     492                     if( flags & WIN_RESTORE_MAX)
     493                     {
     494                        /* Restore to maximized position */
    495495                         CONV_POINT16TO32( &lpPos->ptMaxPos, &pt );
    496496                         WINPOS_GetMinMaxInfo( wndPtr, &size, &pt, NULL, NULL);
    497497                         CONV_POINT32TO16( &pt, &lpPos->ptMaxPos );
    498                         dwStyle |= WS_MAXIMIZE;
    499                         SetRect16( lpRect, lpPos->ptMaxPos.x, lpPos->ptMaxPos.y, size.x, size.y );
    500                         break;
    501                      }
    502                  }
    503                  else
    504                      if( !(dwStyle & WS_MAXIMIZE) ) return (UINT16)(-1);
    505                      else dwStyle &= ~WS_MAXIMIZE;
    506 
    507                 /* Restore to normal position */
    508 
    509                 *lpRect = lpPos->rectNormal;
    510                  lpRect->right -= lpRect->left;
    511                 lpRect->bottom -= lpRect->top;
    512 
    513                 break;
    514         }
     498                        dwStyle |= WS_MAXIMIZE;
     499                        SetRect16( lpRect, lpPos->ptMaxPos.x, lpPos->ptMaxPos.y, size.x, size.y );
     500                        break;
     501                     }
     502                 }
     503                 else
     504                     if( !(dwStyle & WS_MAXIMIZE) ) return (UINT16)(-1);
     505                     else dwStyle &= ~WS_MAXIMIZE;
     506
     507                /* Restore to normal position */
     508
     509                *lpRect = lpPos->rectNormal;
     510                 lpRect->right -= lpRect->left;
     511                lpRect->bottom -= lpRect->top;
     512
     513                break;
     514        }
    515515    } else swpFlags |= SWP_NOSIZE | SWP_NOMOVE;
    516516    return swpFlags;
     
    611611   {
    612612        winposCopy = *winpos;
    613         params.rgrc[1] = *oldWindowRect;
    614         params.rgrc[2] = *oldClientRect;
    615         params.lppos = &winposCopy;
     613        params.rgrc[1] = *oldWindowRect;
     614        params.rgrc[2] = *oldClientRect;
     615        params.lppos = &winposCopy;
    616616   }
    617617   result = SendInternalMessageA(WM_NCCALCSIZE, calcValidRect,
     
    752752{
    753753  if(isUnicode) {
    754         return SendInternalMessageW(WM_SETTEXT, 0, (LPARAM)lpsz);
    755   }
    756   else  return SendInternalMessageA(WM_SETTEXT, 0, (LPARAM)lpsz);
     754        return SendInternalMessageW(WM_SETTEXT, 0, (LPARAM)lpsz);
     755  }
     756  else  return SendInternalMessageA(WM_SETTEXT, 0, (LPARAM)lpsz);
    757757}
    758758//******************************************************************************
     
    843843{
    844844  if(PostSpyMessage(getWindowHandle(), Msg, wParam, lParam) == FALSE)
     845
    845846        dprintf(("SendInternalMessageA %s for %x %x %x", GetMsgText(Msg), getWindowHandle(), wParam, lParam));
    846847
     
    928929  postmsg = (POSTMSG_PACKET *)malloc(sizeof(POSTMSG_PACKET));
    929930  if(postmsg == NULL) {
    930         dprintf(("Win32Window::PostMessageA: malloc returned NULL!!"));
    931         return 0;
     931        dprintf(("Win32Window::PostMessageA: malloc returned NULL!!"));
     932        return 0;
    932933  }
    933934  postmsg->Msg    = msg;
     
    944945  postmsg = (POSTMSG_PACKET *)malloc(sizeof(POSTMSG_PACKET));
    945946  if(postmsg == NULL) {
    946         dprintf(("Win32Window::PostMessageW: malloc returned NULL!!"));
    947         return 0;
     947        dprintf(("Win32Window::PostMessageW: malloc returned NULL!!"));
     948        return 0;
    948949  }
    949950  postmsg->Msg    = msg;
     
    984985 PVOID menutemplate;
    985986
    986    if(HMHandleTranslateToOS2(hMenu, (PULONG)&menutemplate) == NO_ERROR) 
     987   if(HMHandleTranslateToOS2(hMenu, (PULONG)&menutemplate) == NO_ERROR)
    987988   {
    988         OS2HwndMenu = OSLibWinCreateMenu(OS2HwndFrame, menutemplate);
    989         if(OS2HwndMenu == 0) {
    990                 dprintf(("Win32Window::SetMenu OS2HwndMenu == 0"));
    991                 return FALSE;
    992         }
     989        OS2HwndMenu = OSLibWinCreateMenu(OS2HwndFrame, menutemplate);
     990        if(OS2HwndMenu == 0) {
     991                dprintf(("Win32Window::SetMenu OS2HwndMenu == 0"));
     992                return FALSE;
     993        }
    993994   }
    994995   dprintf(("Win32Window::SetMenu unknown hMenu (%x)", hMenu));
     
    10041005  switch(nCmdShow)
    10051006  {
    1006         case SW_SHOW:
    1007         case SW_SHOWDEFAULT: //todo
    1008                 showstate = SWPOS_SHOW | SWPOS_ACTIVATE;
    1009                 break;
    1010         case SW_HIDE:
    1011                 showstate = SWPOS_HIDE;
    1012                 break;
    1013         case SW_RESTORE:
    1014                 showstate = SWPOS_RESTORE | SWPOS_SHOW | SWPOS_ACTIVATE;
    1015                 break;
    1016         case SW_MINIMIZE:
    1017                 showstate = SWPOS_MINIMIZE;
    1018                 break;
    1019         case SW_SHOWMAXIMIZED:
    1020                 showstate = SWPOS_MAXIMIZE | SWPOS_SHOW | SWPOS_ACTIVATE;
    1021                 break;
    1022         case SW_SHOWMINIMIZED:
    1023                 showstate = SWPOS_MINIMIZE | SWPOS_SHOW | SWPOS_ACTIVATE;
    1024                 break;
    1025         case SW_SHOWMINNOACTIVE:
    1026                 showstate = SWPOS_MINIMIZE | SWPOS_SHOW;
    1027                 break;
    1028         case SW_SHOWNA:
    1029                 showstate = SWPOS_SHOW;
    1030                 break;
    1031         case SW_SHOWNOACTIVATE:
    1032                 showstate = SWPOS_SHOW;
    1033                 break;
    1034         case SW_SHOWNORMAL:
    1035                 showstate = SWPOS_RESTORE | SWPOS_ACTIVATE | SWPOS_SHOW;
    1036                 break;
     1007        case SW_SHOW:
     1008        case SW_SHOWDEFAULT: //todo
     1009                showstate = SWPOS_SHOW | SWPOS_ACTIVATE;
     1010                break;
     1011        case SW_HIDE:
     1012                showstate = SWPOS_HIDE;
     1013                break;
     1014        case SW_RESTORE:
     1015                showstate = SWPOS_RESTORE | SWPOS_SHOW | SWPOS_ACTIVATE;
     1016                break;
     1017        case SW_MINIMIZE:
     1018                showstate = SWPOS_MINIMIZE;
     1019                break;
     1020        case SW_SHOWMAXIMIZED:
     1021                showstate = SWPOS_MAXIMIZE | SWPOS_SHOW | SWPOS_ACTIVATE;
     1022                break;
     1023        case SW_SHOWMINIMIZED:
     1024                showstate = SWPOS_MINIMIZE | SWPOS_SHOW | SWPOS_ACTIVATE;
     1025                break;
     1026        case SW_SHOWMINNOACTIVE:
     1027                showstate = SWPOS_MINIMIZE | SWPOS_SHOW;
     1028                break;
     1029        case SW_SHOWNA:
     1030                showstate = SWPOS_SHOW;
     1031                break;
     1032        case SW_SHOWNOACTIVATE:
     1033                showstate = SWPOS_SHOW;
     1034                break;
     1035        case SW_SHOWNORMAL:
     1036                showstate = SWPOS_RESTORE | SWPOS_ACTIVATE | SWPOS_SHOW;
     1037                break;
    10371038  }
    10381039  return OSLibWinShowWindow(OS2HwndFrame, showstate);
     
    10461047
    10471048  switch(hwndInsertAfter) {
    1048         case HWND_BOTTOM:
    1049                 hwndInsertAfter = HWNDOS_BOTTOM;
    1050                 break;
    1051         case HWND_TOPMOST: //TODO:
    1052         case HWND_NOTOPMOST: //TODO:
    1053         case HWND_TOP:
    1054                 hwndInsertAfter = HWNDOS_TOP;
    1055                 break;
    1056         default:
    1057                 window = GetWindowFromHandle(hwndInsertAfter);
    1058                 if(window) {
    1059                         hwndInsertAfter = window->getOS2WindowHandle();
    1060                 }
    1061                 else {
    1062                         dprintf(("Win32Window::SetWindowPos, unknown hwndInsertAfter %x", hwndInsertAfter));
    1063                         hwndInsertAfter = 0;
    1064                 }
    1065                 break;
    1066                
     1049        case HWND_BOTTOM:
     1050                hwndInsertAfter = HWNDOS_BOTTOM;
     1051                break;
     1052        case HWND_TOPMOST: //TODO:
     1053        case HWND_NOTOPMOST: //TODO:
     1054        case HWND_TOP:
     1055                hwndInsertAfter = HWNDOS_TOP;
     1056                break;
     1057        default:
     1058                window = GetWindowFromHandle(hwndInsertAfter);
     1059                if(window) {
     1060                        hwndInsertAfter = window->getOS2WindowHandle();
     1061                }
     1062                else {
     1063                        dprintf(("Win32Window::SetWindowPos, unknown hwndInsertAfter %x", hwndInsertAfter));
     1064                        hwndInsertAfter = 0;
     1065                }
     1066                break;
     1067
    10671068  }
    10681069  setstate = SWPOS_MOVE | SWPOS_SIZE | SWPOS_ACTIVATE | SWPOS_ZORDER;
    10691070  if(fuFlags & SWP_DRAWFRAME)
    1070         setstate |= 0; //TODO
     1071        setstate |= 0; //TODO
    10711072  if(fuFlags & SWP_FRAMECHANGED)
    1072         setstate |= 0; //TODO
     1073        setstate |= 0; //TODO
    10731074  if(fuFlags & SWP_HIDEWINDOW)
    1074         setstate &= ~SWPOS_ZORDER;
     1075        setstate &= ~SWPOS_ZORDER;
    10751076  if(fuFlags & SWP_NOACTIVATE)
    1076         setstate &= ~SWPOS_ACTIVATE;
     1077        setstate &= ~SWPOS_ACTIVATE;
    10771078  if(fuFlags & SWP_NOCOPYBITS)
    1078         setstate |= 0;          //TODO
     1079        setstate |= 0;          //TODO
    10791080  if(fuFlags & SWP_NOMOVE)
    1080         setstate &= ~SWPOS_MOVE;
     1081        setstate &= ~SWPOS_MOVE;
    10811082  if(fuFlags & SWP_NOSIZE)
    1082         setstate &= ~SWPOS_SIZE;
     1083        setstate &= ~SWPOS_SIZE;
    10831084  if(fuFlags & SWP_NOREDRAW)
    1084         setstate |= SWPOS_NOREDRAW;
     1085        setstate |= SWPOS_NOREDRAW;
    10851086  if(fuFlags & SWP_NOZORDER)
    1086         setstate &= ~SWPOS_ZORDER;
     1087        setstate &= ~SWPOS_ZORDER;
    10871088  if(fuFlags & SWP_SHOWWINDOW)
    1088         setstate |= SWPOS_SHOW;
     1089        setstate |= SWPOS_SHOW;
    10891090
    10901091  return OSLibWinSetWindowPos(OS2HwndFrame, hwndInsertAfter, x, y, cx, cy, setstate);
     
    11021103{
    11031104  if(getParent()) {
    1104         return getParent()->getWindowHandle();
    1105   }
    1106   else  return 0;
     1105        return getParent()->getWindowHandle();
     1106  }
     1107  else  return 0;
    11071108}
    11081109//******************************************************************************
     
    11141115
    11151116   if(getParent()) {
    1116         oldhwnd = getParent()->getWindowHandle();
     1117        oldhwnd = getParent()->getWindowHandle();
    11171118   }
    11181119   else oldhwnd = 0;
    11191120
    11201121   if(hwndNewParent == 0) {//desktop window = parent
    1121         setParent(NULL);
     1122        setParent(NULL);
    11221123        OSLibWinSetParent(getOS2WindowHandle(), OSLIB_HWND_DESKTOP);
    11231124        return oldhwnd;
     
    11381139{
    11391140  if(getParent()) {
    1140         return getParent()->getWindowHandle() == hwndParent;
    1141   }
    1142   else  return 0;
     1141        return getParent()->getWindowHandle() == hwndParent;
     1142  }
     1143  else  return 0;
    11431144}
    11441145//******************************************************************************
     
    11541155//******************************************************************************
    11551156BOOL Win32Window::UpdateWindow()
    1156 { 
    1157  RECT rect;
     1157{
     1158   OSRECTL rect;
    11581159
    11591160  if(OSLibWinQueryUpdateRect(OS2Hwnd, &rect))
    11601161  {//update region not empty
    1161         SendInternalMessageA((isIcon) ? WM_PAINTICON : WM_PAINT, 0, 0);
     1162        SendInternalMessageA((isIcon) ? WM_PAINTICON : WM_PAINT, 0, 0);
    11621163  }
    11631164  return TRUE;
     
    11821183  switch(uCmd)
    11831184  {
    1184         case GW_CHILD:
    1185                 getcmd = QWOS_TOP;
    1186                 break;
    1187         case GW_HWNDFIRST:
    1188                 if(getParent()) {
    1189                         getcmd = QWOS_TOP; //top of child windows
    1190                 }
    1191                 else    getcmd = QWOS_TOP; //TODO
    1192                 break;
    1193         case GW_HWNDLAST:
    1194                 if(getParent()) {
    1195                         getcmd = QWOS_BOTTOM; //bottom of child windows
    1196                 }
    1197                 else    getcmd = QWOS_BOTTOM; //TODO
    1198                 break;
    1199         case GW_HWNDNEXT:
    1200                 getcmd = QWOS_NEXT;
    1201                 break;
    1202         case GW_HWNDPREV:
    1203                 getcmd = QWOS_PREV;
    1204                 break;
    1205         case GW_OWNER:
    1206                 if(owner) {
    1207                         return owner->getWindowHandle();
    1208                 }
    1209                 else    return 0;
     1185        case GW_CHILD:
     1186                getcmd = QWOS_TOP;
     1187                break;
     1188        case GW_HWNDFIRST:
     1189                if(getParent()) {
     1190                        getcmd = QWOS_TOP; //top of child windows
     1191                }
     1192                else    getcmd = QWOS_TOP; //TODO
     1193                break;
     1194        case GW_HWNDLAST:
     1195                if(getParent()) {
     1196                        getcmd = QWOS_BOTTOM; //bottom of child windows
     1197                }
     1198                else    getcmd = QWOS_BOTTOM; //TODO
     1199                break;
     1200        case GW_HWNDNEXT:
     1201                getcmd = QWOS_NEXT;
     1202                break;
     1203        case GW_HWNDPREV:
     1204                getcmd = QWOS_PREV;
     1205                break;
     1206        case GW_OWNER:
     1207                if(owner) {
     1208                        return owner->getWindowHandle();
     1209                }
     1210                else    return 0;
    12101211  }
    12111212  hwndRelated = OSLibWinQueryWindow(OS2Hwnd, getcmd);
    1212   if(hwndRelated) 
    1213   {
    1214         win32wnd = (Win32Window *)OSLibWinGetWindowULong(hwndRelated, OFFSET_WIN32WNDPTR);
    1215         magic    = OSLibWinGetWindowULong(hwndRelated, OFFSET_WIN32PM_MAGIC);
    1216         if(CheckMagicDword(magic) && win32wnd)
    1217         {
    1218                 return win32wnd->getWindowHandle();
    1219         }
     1213  if(hwndRelated)
     1214  {
     1215        win32wnd = (Win32Window *)OSLibWinGetWindowULong(hwndRelated, OFFSET_WIN32WNDPTR);
     1216        magic    = OSLibWinGetWindowULong(hwndRelated, OFFSET_WIN32PM_MAGIC);
     1217        if(CheckMagicDword(magic) && win32wnd)
     1218        {
     1219                return win32wnd->getWindowHandle();
     1220        }
    12201221  }
    12211222  return 0;
     
    12541255  if(CheckMagicDword(magic) && win32wnd)
    12551256  {
    1256         return win32wnd->getWindowHandle();
     1257        return win32wnd->getWindowHandle();
    12571258  }
    12581259  return hwndActive;
     
    13241325                return oldval;
    13251326        case GWL_HWNDPARENT:
    1326                 return SetParent((HWND)value);
     1327                return SetParent((HWND)value);
    13271328
    13281329        case GWL_ID:
     
    14091410
    14101411   if(HIWORD(hwnd) != 0x6800) {
    1411         return NULL;
     1412        return NULL;
    14121413   }
    14131414
    14141415   if(HMHandleTranslateToOS2(LOWORD(hwnd), (PULONG)&window) == NO_ERROR) {
    1415         return window;
     1416        return window;
    14161417   }
    14171418   else return NULL;
     
    14191420//******************************************************************************
    14201421//******************************************************************************
     1422Win32Window *Win32Window::GetWindowFromOS2Handle(HWND hwnd)
     1423{
     1424   ULONG winHandle;
     1425   Win32Window *window;
     1426
     1427   //CB: returns index, not handle!
     1428   if(HMHandleTranslateToWin(hwnd,(PULONG)&winHandle) == NO_ERROR)
     1429   {
     1430     if (HMHandleTranslateToOS2(LOWORD(winHandle),(PULONG)&window) == NO_ERROR)
     1431     {
     1432       return window;
     1433     } else return NULL;
     1434   } else return NULL;
     1435}
     1436//******************************************************************************
     1437//******************************************************************************
    14211438GenericObject *Win32Window::windows  = NULL;
Note: See TracChangeset for help on using the changeset viewer.