-bool wxFrame::OS2Create(
-  int                               nId
-, wxWindow*                         pParent
-, const wxChar*                     zWclass
-, wxWindow*                         pWxWin
-, const wxChar*                     zTitle
-, int                               nX
-, int                               nY
-, int                               nWidth
-, int                               nHeight
-, long                              ulStyle
-)
-{
-    ULONG                           ulCreateFlags = 0L;
-    ULONG                           ulStyleFlags = 0L;
-    ULONG                           ulExtraFlags = 0L;
-    FRAMECDATA                      vFrameCtlData;
-    HWND                            hParent = NULLHANDLE;
-    HWND                            hTitlebar = NULLHANDLE;
-    HWND                            hHScroll = NULLHANDLE;
-    HWND                            hVScroll = NULLHANDLE;
-    HWND                            hFrame = NULLHANDLE;
-    HWND                            hClient = NULLHANDLE;
-    SWP                             vSwp[10];
-    RECTL                           vRect[10];
-    USHORT                          uCtlCount;
-    ERRORID                         vError;
-    wxString                        sError;
-
-    m_hDefaultIcon = (WXHICON) (wxSTD_FRAME_ICON ? wxSTD_FRAME_ICON : wxDEFAULT_FRAME_ICON);
-
-    if (pParent)
-        hParent = GetWinHwnd(pParent);
-    else
-        hParent = HWND_DESKTOP;
-
-    if (ulStyle == wxDEFAULT_FRAME_STYLE)
-        ulCreateFlags = FCF_SIZEBORDER | FCF_TITLEBAR | FCF_SYSMENU |
-                        FCF_MINMAX | FCF_TASKLIST;
-    else
-    {
-        if ((ulStyle & wxCAPTION) == wxCAPTION)
-            ulCreateFlags = FCF_TASKLIST;
-        else
-            ulCreateFlags = FCF_NOMOVEWITHOWNER;
-
-        if ((ulStyle & wxVSCROLL) == wxVSCROLL)
-            ulCreateFlags |= FCF_VERTSCROLL;
-        if ((ulStyle & wxHSCROLL) == wxHSCROLL)
-            ulCreateFlags |= FCF_HORZSCROLL;
-        if (ulStyle & wxMINIMIZE_BOX)
-            ulCreateFlags |= FCF_MINBUTTON;
-        if (ulStyle & wxMAXIMIZE_BOX)
-            ulCreateFlags |= FCF_MAXBUTTON;
-        if (ulStyle & wxTHICK_FRAME)
-            ulCreateFlags |= FCF_DLGBORDER;
-        if (ulStyle & wxSYSTEM_MENU)
-            ulCreateFlags |= FCF_SYSMENU;
-        if (ulStyle & wxCAPTION)
-            ulCreateFlags |= FCF_TASKLIST;
-        if (ulStyle & wxCLIP_CHILDREN)
-        {
-            // Invalid for frame windows under PM
-        }
-
-        if (ulStyle & wxTINY_CAPTION_VERT)
-            ulCreateFlags |= FCF_TASKLIST;
-        if (ulStyle & wxTINY_CAPTION_HORIZ)
-            ulCreateFlags |= FCF_TASKLIST;
-
-        if ((ulStyle & wxTHICK_FRAME) == 0)
-            ulCreateFlags |= FCF_BORDER;
-        if (ulStyle & wxFRAME_TOOL_WINDOW)
-            ulExtraFlags = kFrameToolWindow;
-
-        if (ulStyle & wxSTAY_ON_TOP)
-            ulCreateFlags |= FCF_SYSMODAL;
-    }
-    if ((ulStyle & wxMINIMIZE) || (ulStyle & wxICONIZE))
-        ulStyleFlags |= WS_MINIMIZED;
-    if (ulStyle & wxMAXIMIZE)
-        ulStyleFlags |= WS_MAXIMIZED;
-
-    //
-    // Clear the visible flag, we always call show
-    //
-    ulStyleFlags &= (unsigned long)~WS_VISIBLE;
-    m_bIconized = FALSE;
-
-    //
-    // Set the frame control block
-    //
-    vFrameCtlData.cb            = sizeof(vFrameCtlData);
-    vFrameCtlData.flCreateFlags = ulCreateFlags;
-    vFrameCtlData.hmodResources = 0L;
-    vFrameCtlData.idResources   = 0;
-
-    //
-    // Create the frame window:  We break ranks with other ports now
-    // and instead of calling down into the base wxWindow class' OS2Create
-    // we do all our own stuff here.  We will set the needed pieces
-    // of wxWindow manually, here.
-    //
-
-     hFrame = ::WinCreateStdWindow( hParent
-                                   ,ulStyleFlags   // frame-window style
-                                   ,&ulCreateFlags // window style
-                                   ,(PSZ)zWclass   // class name
-                                   ,(PSZ)zTitle    // window title
-                                   ,0L             // default client style
-                                   ,NULLHANDLE     // resource in executable file
-                                   ,0              // resource id
-                                   ,&hClient       // receives client window handle
-                                  );
-    if (!hFrame)
-    {
-        vError = ::WinGetLastError(vHabmain);
-        sError = wxPMErrorToStr(vError);
-        wxLogError("Error creating frame. Error: %s\n", sError);
-        return FALSE;
-    }
-
-    //
-    // wxWindow class' m_hWnd set here and needed associations
-    //
-    m_hFrame = hFrame;
-    m_hWnd   = hClient;
-    wxAssociateWinWithHandle(m_hWnd, this);
-    wxAssociateWinWithHandle(m_hFrame, this);
-
-    m_backgroundColour.Set(wxString("GREY"));
-
-    LONG                            lColor = (LONG)m_backgroundColour.GetPixel();
-
-    if (!::WinSetPresParam( m_hWnd
-                           ,PP_BACKGROUNDCOLOR
-                           ,sizeof(LONG)
-                           ,(PVOID)&lColor
-                          ))
-    {
-        vError = ::WinGetLastError(vHabmain);
-        sError = wxPMErrorToStr(vError);
-        wxLogError("Error creating frame. Error: %s\n", sError);
-        return FALSE;
-    }
-
-    //
-    // Now need to subclass window.  Instead of calling the SubClassWin in wxWindow
-    // we manually subclass here because we don't want to use the main wxWndProc
-    // by default
-    //
-    m_fnOldWndProc = (WXFARPROC) ::WinSubclassWindow(m_hFrame, (PFNWP)wxFrameMainWndProc);
-
-    //
-    // Now size everything.  If adding a menu the client will need to be resized.
-    //
-
-    if (!::WinSetWindowPos( m_hFrame
-                           ,HWND_TOP
-                           ,nX
-                           ,nY
-                           ,nWidth
-                           ,nHeight
-                           ,SWP_SIZE | SWP_MOVE | SWP_ACTIVATE | SWP_ZORDER
-                          ))
-    {
-        vError = ::WinGetLastError(vHabmain);
-        sError = wxPMErrorToStr(vError);
-        wxLogError("Error sizing frame. Error: %s\n", sError);
-        return FALSE;
-    }
-    //
-    // We may have to be smarter here when variable sized toolbars are added!
-    //
-    if (!::WinSetWindowPos( m_hWnd
-                           ,HWND_TOP
-                           ,nX // + 20
-                           ,nY // + 20
-                           ,nWidth // - 60
-                           ,nHeight // - 60
-                           ,SWP_SIZE | SWP_MOVE | SWP_ACTIVATE | SWP_ZORDER
-                          ))
-    {
-        vError = ::WinGetLastError(vHabmain);
-        sError = wxPMErrorToStr(vError);
-        wxLogError("Error sizing client. Error: %s\n", sError);
-        return FALSE;
-    }
-    return TRUE;
-} // end of wxFrame::OS2Create
-
-//
-// Default activation behaviour - set the focus for the first child
-// subwindow found.
-//
-void wxFrame::OnActivate(
-  wxActivateEvent&                  rEvent
-)
-{
-    if ( rEvent.GetActive() )
-    {
-        // restore focus to the child which was last focused
-        wxLogTrace(_T("focus"), _T("wxFrame %08x activated."), m_hWnd);
-
-        wxWindow*                           pParent = m_pWinLastFocused ? m_pWinLastFocused->GetParent()
-                                            : NULL;
-        if (!pParent)
-        {
-            pParent = this;
-        }
-
-        wxSetFocusToChild( pParent
-                          ,&m_pWinLastFocused
-                         );
-    }
-    else // deactivating
-    {
-        //
-        // Remember the last focused child if it is our child
-        //
-        m_pWinLastFocused = FindFocus();
-
-        for (wxWindowList::Node* pNode = GetChildren().GetFirst();
-             pNode;
-             pNode = pNode->GetNext())
-        {
-            // FIXME all this is totally bogus - we need to do the same as wxPanel,
-            //       but how to do it without duplicating the code?
-
-            // restore focus
-            wxWindow*                   pChild = pNode->GetData();
-
-            if (!pChild->IsTopLevel()
-#if wxUSE_TOOLBAR
-                 && !wxDynamicCast(pChild, wxToolBar)
-#endif // wxUSE_TOOLBAR
-#if wxUSE_STATUSBAR
-                 && !wxDynamicCast(pChild, wxStatusBar)
-#endif // wxUSE_STATUSBAR
-               )
-            {
-                pChild->SetFocus();
-                return;
-            }
-        }
-    }
-} // end of wxFrame::OnActivate
-