Ignore:
Timestamp:
Jul 17, 1999, 11:17:58 AM (26 years ago)
Author:
sandervl
Message:

Lots of changes/additions

File:
1 edited

Legend:

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

    r314 r319  
    1 /* $Id: win32wnd.cpp,v 1.4 1999-07-16 11:32:09 sandervl Exp $ */
     1/* $Id: win32wnd.cpp,v 1.5 1999-07-17 09:17:58 sandervl Exp $ */
    22/*
    33 * Win32 Window Code for OS/2
     
    6868  magic            = WIN32PM_MAGIC;
    6969  OS2Hwnd          = 0;
     70  OS2HwndFrame     = 0;
    7071  OS2HwndMenu      = 0;
    7172  Win32Hwnd        = 0;
     
    9293  hwndLinkAfter    = HWND_BOTTOM;
    9394  flags            = 0;
     95  isIcon           = FALSE;
    9496  owner            = NULL;
    9597  windowClass      = 0;
     
    329331                                 cs->x, cs->y, cs->cx, cs->cy,
    330332                                 (owner) ? owner->getOS2WindowHandle() : 0,
    331                                  (hwndLinkAfter == HWND_BOTTOM) ? TRUE : FALSE);
     333                                 (hwndLinkAfter == HWND_BOTTOM) ? TRUE : FALSE, &OS2HwndFrame);
    332334
    333335  if(OS2Hwnd == 0) {
     
    665667ULONG Win32Window::MsgDestroy()
    666668{
    667   return SendMessageA(WM_DESTROY, 0, 0);
     669 ULONG rc;
     670
     671  rc = SendMessageA(WM_DESTROY, 0, 0);
     672  delete this;
     673  return rc;
    668674}
    669675//******************************************************************************
     
    687693}
    688694//******************************************************************************
     695//TODO: Send WM_NCCALCSIZE message here and correct size if necessary
    689696//******************************************************************************
    690697ULONG Win32Window::MsgSize(ULONG width, ULONG height, BOOL fMinimize, BOOL fMaximize)
     
    911918   if(HMHandleTranslateToOS2(hMenu, (PULONG)&menutemplate) == NO_ERROR)
    912919   {
    913         OS2HwndMenu = OSLibWinCreateMenu(OS2Hwnd, menutemplate);
     920        OS2HwndMenu = OSLibWinCreateMenu(OS2HwndFrame, menutemplate);
    914921        if(OS2HwndMenu == 0) {
    915922                dprintf(("Win32Window::SetMenu OS2HwndMenu == 0"));
     
    924931BOOL Win32Window::ShowWindow(ULONG nCmdShow)
    925932{
    926   return O32_ShowWindow(OS2Hwnd, nCmdShow);
     933 ULONG showstate = 0;
     934
     935  switch(nCmdShow)
     936  {
     937        case SW_SHOW:
     938        case SW_SHOWDEFAULT: //todo
     939                showstate = SWPOS_SHOW;
     940                break;
     941        case SW_HIDE:
     942                showstate = SWPOS_HIDE;
     943                break;
     944        case SW_MINIMIZE:
     945                showstate = SWPOS_MINIMIZE;
     946                break;
     947        case SW_SHOWMAXIMIZED:
     948                showstate = SWPOS_MAXIMIZE | SWPOS_SHOW;
     949                break;
     950        case SW_SHOWMINIMIZED:
     951                showstate = SWPOS_MINIMIZE | SWPOS_SHOW;
     952                break;
     953        case SW_SHOWMINNOACTIVE:  //TODO
     954                showstate = SWPOS_MINIMIZE | SWPOS_SHOW;
     955                break;
     956        case SW_SHOWNA: //TODO
     957                showstate = SWPOS_SHOW;
     958                break;
     959        case SW_SHOWNOACTIVATE:  //TODO
     960                showstate = SWPOS_SHOW;
     961                break;
     962        case SW_SHOWNORMAL:
     963                showstate = SWPOS_RESTORE;
     964                break;
     965  }
     966  return OSLibWinShowWindow(OS2HwndFrame, showstate);
    927967}
    928968//******************************************************************************
     
    931971{
    932972 Win32Window *window;
     973 ULONG        setstate = 0;
    933974
    934975  switch(hwndInsertAfter) {
     
    950991               
    951992  }
    952   return O32_SetWindowPos(OS2Hwnd, hwndInsertAfter, x, y, cx, cy, fuFlags);
    953 }
     993  setstate = SWPOS_MOVE | SWPOS_SIZE | SWPOS_ACTIVATE | SWPOS_ZORDER;
     994  if(fuFlags & SWP_DRAWFRAME)
     995        setstate |= 0; //TODO
     996  if(fuFlags & SWP_FRAMECHANGED)
     997        setstate |= 0; //TODO
     998  if(fuFlags & SWP_HIDEWINDOW)
     999        setstate &= ~SWPOS_ZORDER;
     1000  if(fuFlags & SWP_NOACTIVATE)
     1001        setstate &= ~SWPOS_ACTIVATE;
     1002  if(fuFlags & SWP_NOCOPYBITS)
     1003        setstate |= 0;          //TODO
     1004  if(fuFlags & SWP_NOMOVE)
     1005        setstate &= ~SWPOS_MOVE;
     1006  if(fuFlags & SWP_NOSIZE)
     1007        setstate &= ~SWPOS_SIZE;
     1008  if(fuFlags & SWP_NOREDRAW)
     1009        setstate |= SWPOS_NOREDRAW;
     1010  if(fuFlags & SWP_NOZORDER)
     1011        setstate &= ~SWPOS_ZORDER;
     1012  if(fuFlags & SWP_SHOWWINDOW)
     1013        setstate |= SWPOS_SHOW;
     1014
     1015  return OSLibWinSetWindowPos(OS2HwndFrame, hwndInsertAfter, x, y, cx, cy, setstate);
     1016}
     1017//******************************************************************************
     1018//Also destroys all the child windows (destroy parent, destroy children)
    9541019//******************************************************************************
    9551020BOOL Win32Window::DestroyWindow()
    9561021{
    957   return TRUE;
     1022  return OSLibWinDestroyWindow(OS2HwndFrame);
    9581023}
    9591024//******************************************************************************
     
    10151080 HWND topchild;
    10161081
    1017   topchild = OSLibWinQueryTopMostChildWindow(OS2Hwnd);
     1082  topchild = OSLibWinQueryTopMostChildWindow(OS2HwndFrame);
    10181083  if(topchild)
    1019   {//TODO
     1084  {
    10201085        return topchild;
    10211086  }
     
    10231088}
    10241089//******************************************************************************
    1025 //TODO
     1090//Don't call WinUpdateWindow as that one also updates the child windows
     1091//Also need to send WM_PAINT directly to the window procedure, which doesn't
     1092//always happen with WinUpdateWindow (could be posted if thread doesn't own window)
    10261093//******************************************************************************
    10271094BOOL Win32Window::UpdateWindow()
    10281095
     1096 RECTL rect;
     1097
     1098  if(OSLibWinQueryUpdateRect(OS2Hwnd, (PVOID)&rect))
     1099  {//update region not empty
     1100        SendMessageA((isIcon) ? WM_PAINTICON : WM_PAINT, 0, 0);
     1101  }
    10291102  return TRUE;
    10301103}
    10311104//******************************************************************************
    1032 //TODO
    10331105//******************************************************************************
    10341106BOOL Win32Window::IsIconic()
    10351107{
    1036   return FALSE;
     1108  return OSLibWinIsIconic(OS2HwndFrame);
    10371109}
    10381110//******************************************************************************
     
    11441216 Win32Window *window;
    11451217
    1146    if(HIWORD(hwnd) != 0x6800)
     1218   if(HIWORD(hwnd) != 0x6800) {
    11471219        return NULL;
     1220   }
    11481221
    11491222   if(HMHandleTranslateToOS2(LOWORD(hwnd), (PULONG)&window) == NO_ERROR) {
Note: See TracChangeset for help on using the changeset viewer.