]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/os2/window.h
Don't create multiple parent-less top level frames in layout sample.
[wxWidgets.git] / include / wx / os2 / window.h
index 620b4455534cf543e95c2ef4803b4d87a3ca5446..bd6193b209facda0052df92e2cdec259bbdd3141 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        window.h
+// Name:        wx/os2/window.h
 // Purpose:     wxWindow class
 // Author:      David Webster
 // Modified by:
 // forward declarations
 // ---------------------------------------------------------------------------
 
-class WXDLLEXPORT wxButton;
-
-// ---------------------------------------------------------------------------
-// constants
-// ---------------------------------------------------------------------------
-
-// FIXME does anybody use those? they're unused by wxWindows...
-enum
-{
-    wxKEY_SHIFT = 1,
-    wxKEY_CTRL  = 2
-};
+class WXDLLIMPEXP_FWD_CORE wxButton;
 
 // ---------------------------------------------------------------------------
 // wxWindow declaration for OS/2 PM
 // ---------------------------------------------------------------------------
 
-class WXDLLEXPORT wxWindowOS2 : public wxWindowBase
+class WXDLLIMPEXP_CORE wxWindowOS2 : public wxWindowBase
 {
 public:
     wxWindowOS2()
@@ -88,64 +77,48 @@ public:
                );
 
     // implement base class pure virtuals
-    virtual void     SetTitle(const wxString& rTitle);
-    virtual wxString GetTitle(void) const;
+    virtual void     SetLabel(const wxString& label);
+    virtual wxString GetLabel(void) const;
     virtual void     Raise(void);
     virtual void     Lower(void);
-    virtual bool     Show(bool bShow = TRUE);
-    virtual bool     Enable(bool bEnable = TRUE);
+    virtual bool     Show(bool bShow = true);
+    virtual void     DoEnable(bool bEnable);
     virtual void     SetFocus(void);
     virtual void     SetFocusFromKbd(void);
-    virtual bool     Reparent(wxWindow* pNewParent);
+    virtual bool     Reparent(wxWindowBase* pNewParent);
     virtual void     WarpPointer( int x
                                  ,int y
                                 );
-    virtual void     Refresh( bool          bEraseBackground = TRUE
+    virtual void     Refresh( bool          bEraseBackground = true
                              ,const wxRect* pRect = (const wxRect *)NULL
                             );
-    virtual void     Clear(void);
-    virtual void     Freeze(void);
     virtual void     Update(void);
-    virtual void     Thaw(void);
     virtual void     SetWindowStyleFlag(long lStyle);
     virtual bool     SetCursor(const wxCursor& rCursor);
     virtual bool     SetFont(const wxFont& rFont);
     virtual int      GetCharHeight(void) const;
     virtual int      GetCharWidth(void) const;
-    virtual void     GetTextExtent( const wxString& rString
-                                   ,int*            pX
-                                   ,int*            pY
-                                   ,int*            pDescent = (int *)NULL
-                                   ,int*            pExternalLeading = (int *)NULL
-                                   ,const wxFont*   pTheFont = (const wxFont *)NULL
-                                  ) const;
-#if wxUSE_MENUS_NATIVE
-    virtual bool     DoPopupMenu( wxMenu* pMenu
-                                 ,int     nX
-                                 ,int     nY
-                                );
-#endif // wxUSE_MENUS_NATIVE
 
     virtual void     SetScrollbar( int  nOrient
                                   ,int  nPos
                                   ,int  nThumbVisible
                                   ,int  nRange
-                                  ,bool bRefresh = TRUE
+                                  ,bool bRefresh = true
                                  );
     virtual void     SetScrollPos( int  nOrient
                                   ,int  nPos
-                                  ,bool bRefresh = TRUE
+                                  ,bool bRefresh = true
                                  );
     virtual int      GetScrollPos(int nOrient) const;
     virtual int      GetScrollThumb(int nOrient) const;
     virtual int      GetScrollRange(int nOrient) const;
     virtual void     ScrollWindow( int           nDx
                                   ,int           nDy
-                                  ,const wxRect* pRect = (wxRect *)NULL
+                                  ,const wxRect* pRect = NULL
                                  );
 
     inline HWND                   GetScrollBarHorz(void) const {return m_hWndScrollBarHorz;}
-    inline HWND                   GetScrollBarVert(void) const {return m_hWndScrollBarVert;};
+    inline HWND                   GetScrollBarVert(void) const {return m_hWndScrollBarVert;}
 #if wxUSE_DRAG_AND_DROP
     virtual void SetDropTarget(wxDropTarget* pDropTarget);
 #endif // wxUSE_DRAG_AND_DROP
@@ -153,47 +126,6 @@ public:
     // Accept files for dragging
     virtual void DragAcceptFiles(bool bAccept);
 
-#if WXWIN_COMPATIBILITY
-    // Set/get scroll attributes
-    virtual void SetScrollRange( int  nOrient
-                                ,int  nRange
-                                ,bool bRefresh = TRUE
-                               );
-    virtual void SetScrollPage( int  nOrient
-                               ,int  nPage
-                               ,bool bRefresh = TRUE
-                              );
-    virtual int  OldGetScrollRange(int nOrient) const;
-    virtual int  GetScrollPage(int nOrient) const;
-
-    //
-    // event handlers
-    //
-        // Handle a control command
-    virtual void OnCommand( wxWindow&       rWin
-                           ,wxCommandEvent& rEvent
-                          );
-
-        // Override to define new behaviour for default action (e.g. double
-        // clicking on a listbox)
-    virtual void OnDefaultAction(wxControl* WXUNUSED(pInitiatingItem)) { }
-#endif // WXWIN_COMPATIBILITY
-
-#if wxUSE_CARET && WXWIN_COMPATIBILITY
-    void CreateCaret( int nWidth
-                     ,int nHeight
-                    );
-    void CreateCaret(const wxBitmap* pBitmap);
-    void DestroyCaret(void);
-    void ShowCaret(bool bShow);
-    void SetCaretPos( int nX
-                     ,int nY
-                    );
-    void GetCaretPos( int* pX
-                     ,int* pY
-                    ) const;
-#endif // wxUSE_CARET
-
 #ifndef __WXUNIVERSAL__
     // Native resource loading (implemented in src/os2/nativdlg.cpp)
     // FIXME: should they really be all virtual?
@@ -218,7 +150,7 @@ public:
     virtual WXWidget GetHandle(void) const { return GetHWND(); }
     bool             GetUseCtl3D(void) const { return m_bUseCtl3D; }
     bool             GetTransparentBackground(void) const { return m_bBackgroundTransparent; }
-    void             SetTransparent(bool bT = TRUE) { m_bBackgroundTransparent = bT; }
+    void             SetTransparentBackground(bool bT = true) { m_bBackgroundTransparent = bT; }
 
     // event handlers
     // --------------
@@ -227,9 +159,6 @@ public:
     void OnIdle(wxIdleEvent& rEvent);
 
 public:
-    // For implementation purposes - sometimes decorations make the client area
-    // smaller
-    virtual wxPoint GetClientAreaOrigin(void) const;
 
     // Windows subclassing
     void SubclassWin(WXHWND hWnd);
@@ -237,25 +166,25 @@ public:
 
     WXFARPROC OS2GetOldWndProc(void) const { return m_fnOldWndProc; }
     void OS2SetOldWndProc(WXFARPROC fnProc) { m_fnOldWndProc = fnProc; }
+    //
+    // Return true if the window is of a standard (i.e. not wxWidgets') class
+    //
+    bool IsOfStandardClass(void) const { return m_fnOldWndProc != NULL; }
 
     wxWindow* FindItem(long lId) const;
     wxWindow* FindItemByHWND( WXHWND hWnd
-                             ,bool   bControlOnly = FALSE
+                             ,bool   bControlOnly = false
                             ) const;
 
-    // Make a Windows extended style from the given wxWindows window style ?? applicable to OS/2??
+    // Make a Windows extended style from the given wxWidgets window style ?? applicable to OS/2??
     static WXDWORD MakeExtendedStyle( long lStyle
-                                     ,bool bEliminateBorders = TRUE
+                                     ,bool bEliminateBorders = true
                                     );
-    // Determine whether 3D effects are wanted
-    WXDWORD Determine3DEffects( WXDWORD dwDefaultBorderStyle
-                               ,bool*   pbWant3D
-                              ) const;
 
-    // PM only: TRUE if this control is part of the main control
-    virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return FALSE; };
+    // PM only: true if this control is part of the main control
+    virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return false; }
 
-    // translate wxWindows style flags for this control into the PM style
+    // translate wxWidgets style flags for this control into the PM style
     // and optional extended style for the corresponding native control
     //
     // this is the function that should be overridden in the derived classes,
@@ -264,7 +193,7 @@ public:
                                 ,WXDWORD* pdwExstyle = NULL
                                ) const;
 
-    // get the MSW window flags corresponding to wxWindows ones
+    // get the MSW window flags corresponding to wxWidgets ones
     //
     // the functions returns the flags (WS_XXX) directly and puts the ext
     // (WS_EX_XXX) flags into the provided pointer if not NULL
@@ -272,9 +201,12 @@ public:
         { return OS2GetStyle(GetWindowStyle(), pdwExflags); }
 
 
-    // returns TRUE if the window has been created
+    // get the HWND to be used as parent of this window with CreateWindow()
+    virtual WXHWND OS2GetParent(void) const;
+
+    // returns true if the window has been created
     bool         OS2Create( PSZ            zClass
-                           ,const char*    zTitle
+                           ,const wxChar*  zTitle
                            ,WXDWORD        dwStyle
                            ,const wxPoint& rPos
                            ,const wxSize&  rSize
@@ -286,13 +218,6 @@ public:
                             ,WXWORD nId
                            );
 
-#if WXWIN_COMPATIBILITY
-    wxObject*    GetChild(int nNumber) const;
-    virtual void OS2DeviceToLogical( float* pfX
-                                    ,float* pfY
-                                   ) const;
-#endif // WXWIN_COMPATIBILITY
-
 #ifndef __WXUNIVERSAL__
     // Create an appropriate wxWindow from a HWND
     virtual wxWindow* CreateWindowFromHWND( wxWindow* pParent
@@ -338,7 +263,7 @@ public:
 
     // ------------------------------------------------------------------------
     // internal handlers for OS2 messages: all handlers return a boolen value:
-    // TRUE means that the handler processed the event and FALSE that it didn't
+    // true means that the handler processed the event and false that it didn't
     // ------------------------------------------------------------------------
 
     // there are several cases where we have virtual functions for PM
@@ -359,10 +284,12 @@ public:
     virtual bool OS2OnDrawItem( int               nId
                                ,WXDRAWITEMSTRUCT* pItem
                               );
-    virtual bool OS2OnMeasureItem( int                  nId
+    virtual long OS2OnMeasureItem( int                  nId
                                   ,WXMEASUREITEMSTRUCT* pItem
                                  );
 
+    virtual void OnPaint(wxPaintEvent& rEvent);
+
     // the rest are not virtual
     bool HandleCreate( WXLPCREATESTRUCT vCs
                       ,bool*            pMayCreate
@@ -412,7 +339,7 @@ public:
                         );
     bool HandleChar( WXWPARAM wParam
                     ,WXLPARAM lParam
-                    ,bool     bIsASCII = FALSE
+                    ,bool     bIsASCII = false
                    );
     bool HandleKeyDown( WXWPARAM wParam
                        ,WXLPARAM lParam
@@ -460,11 +387,6 @@ public:
                                 ,WXLPARAM lParam
                                );
 
-#if WXWIN_COMPATIBILITY
-    void SetShowing(bool bShow) { (void)Show(show); }
-    bool IsUserEnabled(void) const { return IsEnabled(); }
-#endif // WXWIN_COMPATIBILITY
-
     // Responds to colour changes: passes event on to children.
     void OnSysColourChanged(wxSysColourChangedEvent& rEvent);
 
@@ -479,6 +401,9 @@ public:
     PSWP GetSwp(void) {return &m_vWinSwp;}
 
 protected:
+    virtual void     DoFreeze(void);
+    virtual void     DoThaw(void);
+
     // PM can't create some MSW styles natively but can perform these after
     // creation by sending messages
     typedef enum extra_flags { kFrameToolWindow = 0x0001
@@ -500,7 +425,6 @@ protected:
     bool                            m_bUseCtl3D:1; // Using CTL3D for this control
     bool                            m_bBackgroundTransparent:1;
     bool                            m_bMouseInWindow:1;
-    bool                            m_bDoubleClickAllowed:1;
     bool                            m_bLastKeydownProcessed:1;
     bool                            m_bWinCaptured:1;
     WXDWORD                         m_dwExStyle;
@@ -523,6 +447,19 @@ protected:
     long                            m_lDlgCode;
 
     // implement the base class pure virtuals
+    virtual void     GetTextExtent( const wxString& rString
+                                   ,int*            pX
+                                   ,int*            pY
+                                   ,int*            pDescent = NULL
+                                   ,int*            pExternalLeading = NULL
+                                   ,const wxFont*   pTheFont = NULL
+                                  ) const;
+#if wxUSE_MENUS_NATIVE
+    virtual bool     DoPopupMenu( wxMenu* pMenu
+                                 ,int     nX
+                                 ,int     nY
+                                );
+#endif // wxUSE_MENUS_NATIVE
     virtual void DoClientToScreen( int* pX
                                   ,int* pY
                                  ) const;
@@ -592,19 +529,13 @@ private:
                               ,WXWPARAM    wParam = 0
                              ) const;
 
-
-    DECLARE_DYNAMIC_CLASS(wxWindowOS2);
-    DECLARE_NO_COPY_CLASS(wxWindowOS2)
-    DECLARE_EVENT_TABLE()
-
-private:
     HWND                            m_hWndScrollBarHorz;
     HWND                            m_hWndScrollBarVert;
     SWP                             m_vWinSwp;
 
-    // Virtual function hiding supression
-    inline virtual bool Reparent(wxWindowBase* pNewParent)
-    { return(wxWindowBase::Reparent(pNewParent));};
+    DECLARE_DYNAMIC_CLASS(wxWindowOS2);
+    wxDECLARE_NO_COPY_CLASS(wxWindowOS2);
+    DECLARE_EVENT_TABLE()
 }; // end of wxWindow
 
 class wxWindowCreationHook
@@ -619,9 +550,22 @@ public:
 // ---------------------------------------------------------------------------
 
 // kbd code translation
-WXDLLEXPORT int wxCharCodeOS2ToWX(int nKeySym);
-WXDLLEXPORT int wxCharCodeWXToOS2( int   nId
-                                  ,bool* pbIsVirtual
+WXDLLIMPEXP_CORE int wxCharCodeOS2ToWX(int nKeySym);
+WXDLLIMPEXP_CORE int wxCharCodeWXToOS2( int   nId
+                                  ,bool* pbIsVirtual = NULL
                                  );
-#endif
-    // _WX_WINDOW_H_
+
+// ----------------------------------------------------------------------------
+// global objects
+// ----------------------------------------------------------------------------
+
+// notice that this hash must be defined after wxWindow declaration as it
+// needs to "see" its dtor and not just forward declaration
+#include "wx/hash.h"
+
+// pseudo-template HWND <-> wxWindow hash table
+WX_DECLARE_HASH(wxWindowOS2, wxWindowList, wxWinHashTable);
+
+extern wxWinHashTable *wxWinHandleHash;
+
+#endif // _WX_WINDOW_H_