]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/os2/window.h
HTML_xxxx constants changed to wxHTML_xxxx (with backward compatibility through WXWIN...
[wxWidgets.git] / include / wx / os2 / window.h
index 842c32785a483ae9f96d11c3438a3bb2efbc63f7..706b3a399c71217e6f9a65f79c865d820061574d 100644 (file)
@@ -3,63 +3,60 @@
 // Purpose:     wxWindow class
 // Author:      David Webster
 // Modified by:
-// Created:     ??/??/98
+// Created:     10/12/99
 // RCS-ID:      $Id$
-// Copyright:   (c) AUTHOR
-// Licence:    wxWindows licence
+// Copyright:   (c) David Webster
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_WINDOW_H_
 #define _WX_WINDOW_H_
 
-#ifdef __GNUG__
-#pragma interface "window.h"
-#endif
+#define wxUSE_MOUSEEVENT_HACK 0
 
+// ---------------------------------------------------------------------------
+// headers
+// ---------------------------------------------------------------------------
 #define INCL_DOS
 #define INCL_PM
+#define INCL_GPI
 #include <os2.h>
 
-#define wxKEY_SHIFT     1
-#define wxKEY_CTRL      2
 
 // ---------------------------------------------------------------------------
 // forward declarations
 // ---------------------------------------------------------------------------
 
-class WXDLLEXPORT wxWindow;
 class WXDLLEXPORT wxButton;
 
-#if wxUSE_DRAG_AND_DROP
-class WXDLLEXPORT wxDropTarget;
-#endif
-
-#if wxUSE_WX_RESOURCES
-class WXDLLEXPORT wxResourceTable;
-class WXDLLEXPORT wxItemResource;
-#endif
+// ---------------------------------------------------------------------------
+// constants
+// ---------------------------------------------------------------------------
 
-WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr;
+// FIXME does anybody use those? they're unused by wxWindows...
+enum
+{
+    wxKEY_SHIFT = 1,
+    wxKEY_CTRL  = 2
+};
 
-WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize;
-WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition;
+// ---------------------------------------------------------------------------
+// wxWindow declaration for OS/2 PM
+// ---------------------------------------------------------------------------
 
-class WXDLLEXPORT wxWindow: public wxWindowBase
+class WXDLLEXPORT wxWindow : public wxWindowBase
 {
-    DECLARE_ABSTRACT_CLASS(wxWindow)
-
-    friend class wxDC;
-    friend class wxPaintDC;
+    DECLARE_DYNAMIC_CLASS(wxWindow);
 
 public:
-    wxWindow() { Init(); };
-    inline wxWindow( wxWindow*       parent
-                    ,wxWindowID      id
-                    ,const wxPoint&  pos = wxDefaultPosition
-                    ,const wxSize&   size = wxDefaultSize
-                    ,long            style = 0
-                    ,const wxString& name = wxPanelNameStr
-                   )
+    wxWindow() { Init(); }
+
+    wxWindow(wxWindow *parent,
+             wxWindowID id,
+             const wxPoint& pos = wxDefaultPosition,
+             const wxSize& size = wxDefaultSize,
+             long style = 0,
+             const wxString& name = wxPanelNameStr)
     {
         Init();
         Create(parent, id, pos, size, style, name);
@@ -67,174 +64,119 @@ public:
 
     virtual ~wxWindow();
 
-    bool Create( wxWindow*       parent
-                ,wxWindowID      id
-                ,const wxPoint&  pos = wxDefaultPosition
-                ,const wxSize&   size = wxDefaultSize
-                ,long            style = 0
-                ,const wxString& name = wxPanelNameStr
-               );
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = 0,
+                const wxString& name = wxPanelNameStr);
 
-// ---------------------------------------------------------------------------
-// wxWindowBase pure virtual implementations
-// ---------------------------------------------------------------------------
+    // implement base class pure virtuals
+    virtual void SetTitle( const wxString& title);
+    virtual wxString GetTitle() const;
 
-    // Z order
     virtual void Raise();
     virtual void Lower();
-    // Set the focus to this window
-    virtual void SetFocus();
-    // Warp the pointer the given position
-    virtual void WarpPointer(int x_pos, int y_pos) ;
-    // Capture/release mouse
-    virtual void CaptureMouse();
-    virtual void ReleaseMouse();
-    // Send the window a refresh event
-    virtual void Refresh(bool eraseBack = TRUE, const wxRect *rect = NULL);
-    // Clear the window
-    virtual void Clear();
-    // Set window's font
-    virtual bool SetFont(const wxFont& f);
-    // Get character size
-    virtual int  GetCharHeight() const;
-    virtual int  GetCharWidth() const;
-    virtual void GetTextExtent( const wxString& string
-                               ,int*            x
-                               ,int*            y
-                               ,int*            descent = NULL
-                               ,int*            externalLeading = NULL
-                               ,const wxFont*   theFont = NULL
-                              ) const;
-
-    // Configure the window's scrollbar
-    virtual void SetScrollbar( int  orient
-                              ,int  pos
-                              ,int  thumbVisible
-                              ,int  range
-                              ,bool refresh = TRUE
-                             );
-    virtual void SetScrollPos( int  orient
-                              ,int  pos
-                              ,bool refresh = TRUE
-                             );
-    virtual int  GetScrollPos(int orient) const;
-    virtual int  GetScrollRange(int orient) const;
-    virtual int  GetScrollThumb(int orient) const;
-    virtual void ScrollWindow( int           dx
-                              ,int           dy
-                              ,const wxRect* rect = NULL
-                             );
-#if wxUSE_DRAG_AND_DROP
-    void         SetDropTarget(wxDropTarget *pDropTarget);
-#endif
-    // coordinates translation
-    virtual void DoClientToScreen( int *x, int *y ) const;
-    virtual void DoScreenToClient( int *x, int *y ) const;
-
-    // retrieve the position/size of the window
-    virtual void DoGetPosition( int *x, int *y ) const;
-    virtual void DoGetSize( int *width, int *height ) const;
-    virtual void DoGetClientSize( int *width, int *height ) const;
-
-    // this is the virtual function to be overriden in any derived class which
-    // wants to change how SetSize() or Move() works - it is called by all
-    // versions of these functions in the base class
-    virtual void DoSetSize(int x, int y,
-                           int width, int height,
-                           int sizeFlags = wxSIZE_AUTO);
 
-    // same as DoSetSize() for the client size
-    virtual void DoSetClientSize(int width, int height);
-    virtual bool DoPopupMenu( wxMenu *menu, int x, int y );
+    virtual bool Show( bool show = TRUE );
+    virtual bool Enable( bool enable = TRUE );
 
-// ---------------------------------------------------------------------------
-// wxWindowBase virtual implementations that need to be overriden
-// ---------------------------------------------------------------------------
-
-    // Fit the window around the items
-    virtual void            Fit();
-    // Show or hide the window
-    virtual bool            Show(bool show); // check if base implementation is OK
-    // Enable or disable the window
-    virtual bool            Enable(bool enable); // check if base implementation is OK
-    // Set the cursor
-    virtual bool            SetCursor(const wxCursor& cursor); // check if base implementation is OK
+    virtual void SetFocus();
 
-// ---------------------------------------------------------------------------
-// additional functions
-// ---------------------------------------------------------------------------
+    virtual bool Reparent( wxWindow *newParent );
 
-    // Dialog support: override these and call
-    // base class members to add functionality
-    // that can't be done using validators.
-    void SetClientSize( int width, int height )
-        { DoSetClientSize(width, height); }
+    virtual void WarpPointer(int x, int y);
+    virtual void CaptureMouse();
+    virtual void ReleaseMouse();
 
-    void SetClientSize( const wxSize& size )
-        { DoSetClientSize(size.x, size.y); }
+    virtual void Refresh( bool eraseBackground = TRUE,
+                          const wxRect *rect = (const wxRect *) NULL );
+    virtual void Clear();
 
-    void SetClientSize(const wxRect& rect)
-        { SetClientSize( rect.width, rect.height ); }
+    virtual bool SetCursor( const wxCursor &cursor );
+    virtual bool SetFont( const wxFont &font );
 
-    // Validate controls. If returns FALSE,
-    // validation failed: don't quit
-    virtual bool Validate();
+    virtual int GetCharHeight() const;
+    virtual int GetCharWidth() const;
+    virtual void GetTextExtent(const wxString& string,
+                               int *x, int *y,
+                               int *descent = (int *) NULL,
+                               int *externalLeading = (int *) NULL,
+                               const wxFont *theFont = (const wxFont *) NULL)
+                               const;
 
-    // Return code for dialogs
-    inline void SetReturnCode(int retCode);
-    inline int GetReturnCode();
+    virtual bool DoPopupMenu( wxMenu *menu, int x, int y );
 
+    virtual void SetScrollbar( int orient, int pos, int thumbVisible,
+                               int range, bool refresh = TRUE );
+    virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE );
+    virtual int GetScrollPos( int orient ) const;
+    virtual int GetScrollThumb( int orient ) const;
+    virtual int GetScrollRange( int orient ) const;
+    virtual void ScrollWindow( int dx, int dy,
+                               const wxRect* rect = (wxRect *) NULL );
 
-    // Get the window with the focus
-    static wxWindow *FindFocus();
+#if wxUSE_DRAG_AND_DROP
+    virtual void SetDropTarget( wxDropTarget *dropTarget );
+#endif // wxUSE_DRAG_AND_DROP
 
     // Accept files for dragging
     virtual void DragAcceptFiles(bool accept);
 
-    // Most windows have the concept of a label; for frames, this is the
-    // title; for items, this is the label or button text.
-    inline virtual wxString GetLabel() const { return GetTitle(); }
-
-#if wxUSE_CARET && WXWIN_COMPATIBILITY
-    // Caret manipulation
-    virtual void CreateCaret(int w, int h);
-    virtual void CreateCaret(const wxBitmap *bitmap);
-    virtual void DestroyCaret();
-    virtual void ShowCaret(bool show);
-    virtual void SetCaretPos(int x, int y);
-    virtual void GetCaretPos(int *x, int *y) const;
-#endif
+#if WXWIN_COMPATIBILITY
+    // Set/get scroll attributes
+    virtual void SetScrollRange(int orient, int range, bool refresh = TRUE);
+    virtual void SetScrollPage(int orient, int page, bool refresh = TRUE);
+    virtual int OldGetScrollRange(int orient) const;
+    virtual int GetScrollPage(int orient) const;
 
-    // Handle a control command
+    // event handlers
+        // Handle a control command
     virtual void OnCommand(wxWindow& win, wxCommandEvent& event);
 
-    // Get the default button, if there is one
-    inline virtual wxButton *GetDefaultItem() const;
-    inline virtual void SetDefaultItem(wxButton *but);
-
-    // Override to define new behaviour for default action (e.g. double clicking
-    // on a listbox)
-    virtual void OnDefaultAction(wxControl *initiatingItem);
-
-    // EventHandlers
-    void OnEraseBackground(wxEraseEvent& event);
-    void OnChar(wxKeyEvent& event);
-    void OnKeyDown(wxKeyEvent& event);
-    void OnKeyUp(wxKeyEvent& event);
-    void OnPaint(wxPaintEvent& event);
-    void OnIdle(wxIdleEvent& event);
+        // Override to define new behaviour for default action (e.g. double
+        // clicking on a listbox)
+    virtual void OnDefaultAction(wxControl * WXUNUSED(initiatingItem)) { }
+#endif // WXWIN_COMPATIBILITY
 
-    // Accessors
+#if wxUSE_CARET && WXWIN_COMPATIBILITY
+    // caret manipulation (old MSW only functions, see wxCaret class for the
+    // new API)
+    void CreateCaret(int w, int h);
+    void CreateCaret(const wxBitmap *bitmap);
+    void DestroyCaret();
+    void ShowCaret(bool show);
+    void SetCaretPos(int x, int y);
+    void GetCaretPos(int *x, int *y) const;
+#endif // wxUSE_CARET
+
+    // Native resource loading (implemented in src/msw/nativdlg.cpp)
+    // FIXME: should they really be all virtual?
+    virtual bool LoadNativeDialog(wxWindow* parent, wxWindowID& id);
+    virtual bool LoadNativeDialog(wxWindow* parent, const wxString& name);
+    wxWindow* GetWindowChild1(wxWindowID id);
+    wxWindow* GetWindowChild(wxWindowID id);
+
+    // implementation from now on
+    // --------------------------
+
+    // simple accessors
+    // ----------------
 
     WXHWND GetHWND() const { return m_hWnd; }
-    void   SetHWND(WXHWND hWnd) { m_hWnd = hWnd; }
+    void SetHWND(WXHWND hWnd) { m_hWnd = hWnd; }
     virtual WXWidget GetHandle() const { return GetHWND(); }
 
-public:
-// ---------------------------------------------------------------------------
-// IMPLEMENTATION
-// ---------------------------------------------------------------------------
+    bool GetUseCtl3D() const { return m_useCtl3D; }
+    bool GetTransparentBackground() const { return m_backgroundTransparent; }
+    void SetTransparent(bool t = TRUE) { m_backgroundTransparent = t; }
 
+    // event handlers
+    // --------------
+    void OnEraseBackground(wxEraseEvent& event);
+    void OnIdle(wxIdleEvent& event);
+
+public:
     // For implementation purposes - sometimes decorations make the client area
     // smaller
     virtual wxPoint GetClientAreaOrigin() const;
@@ -253,71 +195,240 @@ public:
     wxWindow *FindItem(long id) const;
     wxWindow *FindItemByHWND(WXHWND hWnd, bool controlOnly = FALSE) const;
 
+    // Make a Windows extended style from the given wxWindows window style
+    static WXDWORD MakeExtendedStyle(long style,
+                                     bool eliminateBorders = TRUE);
     // Determine whether 3D effects are wanted
     WXDWORD Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D) const;
 
-    // PM only: TRUE if this control is part of the main control
+    // MSW only: TRUE if this control is part of the main control
     virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return FALSE; };
 
-    // Executes the default message
-    virtual long Default();
+    // returns TRUE if the window has been created
+    bool OS2Create(int id,
+                   wxWindow *parent,
+                   const wxChar *wclass,
+                   wxWindow *wx_win,
+                   const wxChar *title,
+                   int x, int y, int width, int height,
+                   WXDWORD style,
+                   const wxChar *dialog_template = NULL,
+                   WXDWORD exendedStyle = 0);
+    virtual bool OS2Command(WXUINT param, WXWORD id);
+
+#if WXWIN_COMPATIBILITY
+    wxObject *GetChild(int number) const;
+    virtual void OS2DeviceToLogical(float *x, float *y) const;
+#endif // WXWIN_COMPATIBILITY
+
+    // Create an appropriate wxWindow from a HWND
+    virtual wxWindow* CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd);
+
+    // Make sure the window style reflects the HWND style (roughly)
+    virtual void AdoptAttributesFromHWND();
+
+    // Setup background and foreground colours correctly
+    virtual void SetupColours();
+
+    // ------------------------------------------------------------------------
+    // helpers for message handlers: these perform the same function as the
+    // message crackers from <windowsx.h> - they unpack WPARAM and LPARAM into
+    // the correct parameters
+    // ------------------------------------------------------------------------
+
+    void UnpackCommand(WXWPARAM wParam, WXLPARAM lParam,
+                       WXWORD *id, WXHWND *hwnd, WXWORD *cmd);
+    void UnpackActivate(WXWPARAM wParam, WXLPARAM lParam,
+                        WXWORD *state, WXWORD *minimized, WXHWND *hwnd);
+    void UnpackScroll(WXWPARAM wParam, WXLPARAM lParam,
+                      WXWORD *code, WXWORD *pos, WXHWND *hwnd);
+    void UnpackCtlColor(WXWPARAM wParam, WXLPARAM lParam,
+                        WXWORD *nCtlColor, WXHDC *hdc, WXHWND *hwnd);
+    void UnpackMenuSelect(WXWPARAM wParam, WXLPARAM lParam,
+                          WXWORD *item, WXWORD *flags, WXHMENU *hmenu);
+
+    // ------------------------------------------------------------------------
+    // internal handlers for MSW messages: all handlers return a boolen value:
+    // TRUE means that the handler processed the event and FALSE that it didn't
+    // ------------------------------------------------------------------------
+
+    // there are several cases where we have virtual functions for Windows
+    // message processing: this is because these messages often require to be
+    // processed in a different manner in the derived classes. For all other
+    // messages, however, we do *not* have corresponding MSWOnXXX() function
+    // and if the derived class wants to process them, it should override
+    // MSWWindowProc() directly.
+
+    // scroll event (both horizontal and vertical)
+    virtual bool OS2OnScroll(int orientation, WXWORD nSBCode,
+                             WXWORD pos, WXHWND control);
+
+    virtual bool OS2OnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
+
+    // owner-drawn controls need to process these messages
+    virtual bool OS2OnDrawItem(int id, WXDRAWITEMSTRUCT *item);
+    virtual bool OS2OnMeasureItem(int id, WXMEASUREITEMSTRUCT *item);
+
+    // the rest are not virtual
+    bool HandleCreate(WXLPCREATESTRUCT cs, bool *mayCreate);
+    bool HandleInitDialog(WXHWND hWndFocus);
+    bool HandleDestroy();
+
+    bool HandlePaint();
+    bool HandleEraseBkgnd(WXHDC pDC);
+
+    bool HandleMinimize();
+    bool HandleMaximize();
+    bool HandleSize(int x, int y, WXUINT flag);
+    bool HandleGetMinMaxInfo(void *mmInfo);
+
+    bool HandleShow(bool show, int status);
+    bool HandleActivate(int flag, bool minimized, WXHWND activate);
+
+    bool HandleCommand(WXWORD id, WXWORD cmd, WXHWND control);
+    bool HandleSysCommand(WXWPARAM wParam, WXLPARAM lParam);
+
+    bool HandleCtlColor(WXHBRUSH *hBrush,
+                        WXHDC hdc,
+                        WXHWND hWnd,
+                        WXUINT nCtlColor,
+                        WXUINT message,
+                        WXWPARAM wParam,
+                        WXLPARAM lParam);
+
+    bool HandlePaletteChanged(WXHWND hWndPalChange);
+    bool HandleQueryNewPalette();
+    bool HandleSysColorChange();
+
+    bool HandleQueryEndSession(long logOff, bool *mayEnd);
+    bool HandleEndSession(bool endSession, long logOff);
+
+    bool HandleSetFocus(WXHWND wnd);
+    bool HandleKillFocus(WXHWND wnd);
+
+    bool HandleDropFiles(WXWPARAM wParam);
+
+    bool HandleMouseEvent(WXUINT msg, int x, int y, WXUINT flags);
+    bool HandleMouseMove(int x, int y, WXUINT flags);
+
+    bool HandleChar(WXWORD wParam, WXLPARAM lParam, bool isASCII = FALSE);
+    bool HandleKeyDown(WXWORD wParam, WXLPARAM lParam);
+    bool HandleKeyUp(WXWORD wParam, WXLPARAM lParam);
 
-    // Constraint implementation
-    void UnsetConstraints(wxLayoutConstraints *c);
-    // Back-pointer to other windows we're involved with, so if we delete
-    // this window, we must delete any constraints we're involved with.
+    bool HandleQueryDragIcon(WXHICON *hIcon);
+
+    bool HandleSetCursor(WXHWND hWnd, short nHitTest, int mouseMsg);
 
-    wxObject *GetChild(int number) const ;
+    // Window procedure
+    virtual MRESULT OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
 
-    // Transfers data to any child controls
-    void OnInitDialog(wxInitDialogEvent& event);
+    // Calls an appropriate default window procedure
+    virtual MRESULT OS2DefWindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
+    virtual bool OS2ProcessMessage(WXMSG* pMsg);
+    virtual bool OS2TranslateMessage(WXMSG* pMsg);
+    virtual void OS2DestroyWindow();
 
-    virtual MRESULT OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
+    // Detach "Window" menu from menu bar so it doesn't get deleted
+    void OS2DetachWindowMenu();
 
+    // this function should return the brush to paint the window background
+    // with or 0 for the default brush
+    virtual WXHBRUSH OnCtlColor(WXHDC hDC,
+                                WXHWND hWnd,
+                                WXUINT nCtlColor,
+                                WXUINT message,
+                                WXWPARAM wParam,
+                                WXLPARAM lParam);
 
-protected:
+#if WXWIN_COMPATIBILITY
+    void SetShowing(bool show) { (void)Show(show); }
+    bool IsUserEnabled() const { return IsEnabled(); }
+#endif // WXWIN_COMPATIBILITY
 
-    // Caret data
-    int                   m_caretWidth;
-    int                   m_caretHeight;
-    bool                  m_caretEnabled;
-    bool                  m_caretShown;
+    // Responds to colour changes: passes event on to children.
+    void OnSysColourChanged(wxSysColourChangedEvent& event);
 
-    wxButton *            m_defaultItem;
+    // initialize various fields of wxMouseEvent (common part of MSWOnMouseXXX)
+    void InitMouseEvent(wxMouseEvent& event, int x, int y, WXUINT flags);
 
-public:
-    WXFARPROC             m_oldWndProc;
-    int                   m_returnCode;
-    bool                  m_isBeingDeleted;
-    bool                  m_isShown;
-    bool                  m_winCaptured;
-    bool                  m_mouseInWindow;
-    bool                  m_backgroundTransparent;
-    // handles
+protected:
+    // the window handle
     WXHWND                m_hWnd;
-    WXHMENU               m_hMenu; // Menu, if any
+
+    // the old window proc (we subclass all windows)
+    WXFARPROC             m_oldWndProc;
+
+    // additional (MSW specific) flags
+    bool                  m_useCtl3D:1; // Using CTL3D for this control
+    bool                  m_backgroundTransparent:1;
+    bool                  m_mouseInWindow:1;
+    bool                  m_doubleClickAllowed:1;
+    bool                  m_winCaptured:1;
 
     // the size of one page for scrolling
     int                   m_xThumbSize;
     int                   m_yThumbSize;
-    long                  m_lDlgCode;
 
-DECLARE_EVENT_TABLE()
+#if wxUSE_MOUSEEVENT_HACK
+    // the coordinates of the last mouse event and the type of it
+    long                  m_lastMouseX,
+                          m_lastMouseY;
+    int                   m_lastMouseEvent;
+#endif // wxUSE_MOUSEEVENT_HACK
+
+    WXHMENU               m_hMenu; // Menu, if any
+
+    // the return value of WM_GETDLGCODE handler
+    long m_lDlgCode;
+
+    // implement the base class pure virtuals
+    virtual void DoClientToScreen( int *x, int *y ) const;
+    virtual void DoScreenToClient( int *x, int *y ) const;
+    virtual void DoGetPosition( int *x, int *y ) const;
+    virtual void DoGetSize( int *width, int *height ) const;
+    virtual void DoGetClientSize( int *width, int *height ) const;
+    virtual void DoSetSize(int x, int y,
+                           int width, int height,
+                           int sizeFlags = wxSIZE_AUTO);
+    virtual void DoSetClientSize(int width, int height);
+
+    // get the size which best suits the window: e.g., for a static text it
+    // will be the width and height of the text
+    virtual wxSize DoGetBestSize();
+
+    // move the window to the specified location and resize it: this is called
+    // from both DoSetSize() and DoSetClientSize() and would usually just call
+    // ::MoveWindow() except for composite controls which will want to arrange
+    // themselves inside the given rectangle
+    virtual void DoMoveWindow(int x, int y, int width, int height);
+
+#if wxUSE_TOOLTIPS
+    virtual void DoSetToolTip( wxToolTip *tip );
+#endif // wxUSE_TOOLTIPS
+
 private:
-    void   Init();
-    void   PMDetachWindowMenu();
-};
+    // common part of all ctors
+    void Init();
 
-////////////////////////////////////////////////////////////////////////
-//// INLINES
+    // the (non-virtual) handlers for the events
+    bool HandleMove(int x, int y);
+    bool HandleJoystickEvent(WXUINT msg, int x, int y, WXUINT flags);
 
-inline wxButton *wxWindow::GetDefaultItem() const { return m_defaultItem; }
-inline void wxWindow::SetDefaultItem(wxButton *but) { m_defaultItem = but; }
-inline void wxWindow::SetReturnCode(int retCode) { m_returnCode = retCode; }
-inline int wxWindow::GetReturnCode() { return m_returnCode; }
+    bool HandleNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
+    DECLARE_NO_COPY_CLASS(wxWindow);
+    DECLARE_EVENT_TABLE()
+private:
+    // Virtual function hiding supression
+    inline virtual bool Reparent( wxWindowBase *newParent )
+    { return(wxWindowBase::Reparent(newParent));};
+};
 
-// Get the active window.
-wxWindow* WXDLLEXPORT wxGetActiveWindow();
+// ---------------------------------------------------------------------------
+// global functions
+// ---------------------------------------------------------------------------
 
+// kbd code translation
+WXDLLEXPORT int wxCharCodeOS2ToWX(int keySym);
+WXDLLEXPORT int wxCharCodeWXToOS2(int id, bool *IsVirtual);
 #endif
     // _WX_WINDOW_H_