git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			572 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			572 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        wx/os2/window.h
 | 
						|
// Purpose:     wxWindow class
 | 
						|
// Author:      David Webster
 | 
						|
// Modified by:
 | 
						|
// Created:     10/12/99
 | 
						|
// RCS-ID:      $Id$
 | 
						|
// Copyright:   (c) David Webster
 | 
						|
// Licence:     wxWindows licence
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef _WX_WINDOW_H_
 | 
						|
#define _WX_WINDOW_H_
 | 
						|
 | 
						|
#define wxUSE_MOUSEEVENT_HACK 0
 | 
						|
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
// headers
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
#define INCL_DOS
 | 
						|
#define INCL_PM
 | 
						|
#define INCL_GPI
 | 
						|
#include <os2.h>
 | 
						|
 | 
						|
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
// forward declarations
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
#ifndef CW_USEDEFAULT
 | 
						|
#  define  CW_USEDEFAULT ((int)0x80000000)
 | 
						|
#endif
 | 
						|
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
// forward declarations
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
 | 
						|
class WXDLLIMPEXP_FWD_CORE wxButton;
 | 
						|
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
// wxWindow declaration for OS/2 PM
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
 | 
						|
class WXDLLIMPEXP_CORE wxWindowOS2 : public wxWindowBase
 | 
						|
{
 | 
						|
public:
 | 
						|
    wxWindowOS2()
 | 
						|
    {
 | 
						|
        Init();
 | 
						|
    }
 | 
						|
 | 
						|
    wxWindowOS2( wxWindow*       pParent
 | 
						|
                ,wxWindowID      vId
 | 
						|
                ,const wxPoint&  rPos = wxDefaultPosition
 | 
						|
                ,const wxSize&   rSize = wxDefaultSize
 | 
						|
                ,long            lStyle = 0
 | 
						|
                ,const wxString& rName = wxPanelNameStr
 | 
						|
               )
 | 
						|
    {
 | 
						|
        Init();
 | 
						|
        Create( pParent
 | 
						|
               ,vId
 | 
						|
               ,rPos
 | 
						|
               ,rSize
 | 
						|
               ,lStyle
 | 
						|
               ,rName
 | 
						|
              );
 | 
						|
    }
 | 
						|
 | 
						|
    virtual ~wxWindowOS2();
 | 
						|
 | 
						|
    bool Create( wxWindow*       pParent
 | 
						|
                ,wxWindowID      vId
 | 
						|
                ,const wxPoint&  rPos = wxDefaultPosition
 | 
						|
                ,const wxSize&   rSize = wxDefaultSize
 | 
						|
                ,long            lStyle = 0
 | 
						|
                ,const wxString& rName = wxPanelNameStr
 | 
						|
               );
 | 
						|
 | 
						|
    // implement base class pure virtuals
 | 
						|
    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 void     DoEnable(bool bEnable);
 | 
						|
    virtual void     SetFocus(void);
 | 
						|
    virtual void     SetFocusFromKbd(void);
 | 
						|
    virtual bool     Reparent(wxWindowBase* pNewParent);
 | 
						|
    virtual void     WarpPointer( int x
 | 
						|
                                 ,int y
 | 
						|
                                );
 | 
						|
    virtual void     Refresh( bool          bEraseBackground = true
 | 
						|
                             ,const wxRect* pRect = (const wxRect *)NULL
 | 
						|
                            );
 | 
						|
    virtual void     Update(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 = NULL
 | 
						|
                                   ,int*            pExternalLeading = 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
 | 
						|
                                 );
 | 
						|
    virtual void     SetScrollPos( int  nOrient
 | 
						|
                                  ,int  nPos
 | 
						|
                                  ,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 = NULL
 | 
						|
                                 );
 | 
						|
 | 
						|
    inline HWND                   GetScrollBarHorz(void) const {return m_hWndScrollBarHorz;}
 | 
						|
    inline HWND                   GetScrollBarVert(void) const {return m_hWndScrollBarVert;};
 | 
						|
#if wxUSE_DRAG_AND_DROP
 | 
						|
    virtual void SetDropTarget(wxDropTarget* pDropTarget);
 | 
						|
#endif // wxUSE_DRAG_AND_DROP
 | 
						|
 | 
						|
    // Accept files for dragging
 | 
						|
    virtual void DragAcceptFiles(bool bAccept);
 | 
						|
 | 
						|
#ifndef __WXUNIVERSAL__
 | 
						|
    // Native resource loading (implemented in src/os2/nativdlg.cpp)
 | 
						|
    // FIXME: should they really be all virtual?
 | 
						|
    virtual bool LoadNativeDialog( wxWindow*   pParent
 | 
						|
                                  ,wxWindowID& vId
 | 
						|
                                 );
 | 
						|
    virtual bool LoadNativeDialog( wxWindow*       pParent
 | 
						|
                                  ,const wxString& rName
 | 
						|
                                 );
 | 
						|
    wxWindow*    GetWindowChild1(wxWindowID vId);
 | 
						|
    wxWindow*    GetWindowChild(wxWindowID vId);
 | 
						|
#endif //__WXUNIVERSAL__
 | 
						|
 | 
						|
    // implementation from now on
 | 
						|
    // --------------------------
 | 
						|
 | 
						|
    // simple accessors
 | 
						|
    // ----------------
 | 
						|
 | 
						|
    WXHWND           GetHWND(void) const { return m_hWnd; }
 | 
						|
    void             SetHWND(WXHWND hWnd) { m_hWnd = hWnd; }
 | 
						|
    virtual WXWidget GetHandle(void) const { return GetHWND(); }
 | 
						|
    bool             GetUseCtl3D(void) const { return m_bUseCtl3D; }
 | 
						|
    bool             GetTransparentBackground(void) const { return m_bBackgroundTransparent; }
 | 
						|
    void             SetTransparentBackground(bool bT = true) { m_bBackgroundTransparent = bT; }
 | 
						|
 | 
						|
    // event handlers
 | 
						|
    // --------------
 | 
						|
    void OnSetFocus(wxFocusEvent& rEvent);
 | 
						|
    void OnEraseBackground(wxEraseEvent& rEvent);
 | 
						|
    void OnIdle(wxIdleEvent& rEvent);
 | 
						|
 | 
						|
public:
 | 
						|
 | 
						|
    // Windows subclassing
 | 
						|
    void SubclassWin(WXHWND hWnd);
 | 
						|
    void UnsubclassWin(void);
 | 
						|
 | 
						|
    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
 | 
						|
                            ) const;
 | 
						|
 | 
						|
    // Make a Windows extended style from the given wxWidgets window style ?? applicable to OS/2??
 | 
						|
    static WXDWORD MakeExtendedStyle( long lStyle
 | 
						|
                                     ,bool bEliminateBorders = true
 | 
						|
                                    );
 | 
						|
 | 
						|
    // PM only: true if this control is part of the main control
 | 
						|
    virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return false; };
 | 
						|
 | 
						|
    // 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,
 | 
						|
    // but you will mostly use OS2GetCreateWindowFlags() below
 | 
						|
    virtual WXDWORD OS2GetStyle( long     lFlags
 | 
						|
                                ,WXDWORD* pdwExstyle = NULL
 | 
						|
                               ) const;
 | 
						|
 | 
						|
    // 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
 | 
						|
    WXDWORD OS2GetCreateWindowFlags(WXDWORD* pdwExflags = NULL) const
 | 
						|
        { return OS2GetStyle(GetWindowStyle(), pdwExflags); }
 | 
						|
 | 
						|
 | 
						|
    // 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 wxChar*  zTitle
 | 
						|
                           ,WXDWORD        dwStyle
 | 
						|
                           ,const wxPoint& rPos
 | 
						|
                           ,const wxSize&  rSize
 | 
						|
                           ,void*          pCtlData
 | 
						|
                           ,WXDWORD        dwExStyle
 | 
						|
                           ,bool           bIsChild
 | 
						|
                          );
 | 
						|
    virtual bool OS2Command( WXUINT uParam
 | 
						|
                            ,WXWORD nId
 | 
						|
                           );
 | 
						|
 | 
						|
#ifndef __WXUNIVERSAL__
 | 
						|
    // Create an appropriate wxWindow from a HWND
 | 
						|
    virtual wxWindow* CreateWindowFromHWND( wxWindow* pParent
 | 
						|
                                           ,WXHWND    hWnd
 | 
						|
                                          );
 | 
						|
 | 
						|
    // Make sure the window style reflects the HWND style (roughly)
 | 
						|
    virtual void AdoptAttributesFromHWND(void);
 | 
						|
#endif
 | 
						|
 | 
						|
    // Setup background and foreground colours correctly
 | 
						|
    virtual void SetupColours(void);
 | 
						|
 | 
						|
    // ------------------------------------------------------------------------
 | 
						|
    // 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*  pId
 | 
						|
                       ,WXHWND*  pHwnd
 | 
						|
                       ,WXWORD*  pCmd
 | 
						|
                      );
 | 
						|
    void UnpackActivate( WXWPARAM wParam
 | 
						|
                        ,WXLPARAM lParam
 | 
						|
                        ,WXWORD*  pState
 | 
						|
                        ,WXHWND*  pHwnd
 | 
						|
                       );
 | 
						|
    void UnpackScroll( WXWPARAM wParam
 | 
						|
                      ,WXLPARAM lParam
 | 
						|
                      ,WXWORD*  pCode
 | 
						|
                      ,WXWORD*  pPos
 | 
						|
                      ,WXHWND*  pHwnd
 | 
						|
                     );
 | 
						|
    void UnpackMenuSelect( WXWPARAM wParam
 | 
						|
                          ,WXLPARAM lParam
 | 
						|
                          ,WXWORD*  pTtem
 | 
						|
                          ,WXWORD*  pFlags
 | 
						|
                          ,WXHMENU* pHmenu
 | 
						|
                         );
 | 
						|
 | 
						|
    // ------------------------------------------------------------------------
 | 
						|
    // 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
 | 
						|
    // ------------------------------------------------------------------------
 | 
						|
 | 
						|
    // there are several cases where we have virtual functions for PM
 | 
						|
    // 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 OS2OnXXX() function
 | 
						|
    // and if the derived class wants to process them, it should override
 | 
						|
    // OS2WindowProc() directly.
 | 
						|
 | 
						|
    // scroll event (both horizontal and vertical)
 | 
						|
    virtual bool OS2OnScroll( int    nOrientation
 | 
						|
                             ,WXWORD nSBCode
 | 
						|
                             ,WXWORD pos
 | 
						|
                             ,WXHWND control
 | 
						|
                            );
 | 
						|
 | 
						|
    // owner-drawn controls need to process these messages
 | 
						|
    virtual bool OS2OnDrawItem( int               nId
 | 
						|
                               ,WXDRAWITEMSTRUCT* pItem
 | 
						|
                              );
 | 
						|
    virtual long OS2OnMeasureItem( int                  nId
 | 
						|
                                  ,WXMEASUREITEMSTRUCT* pItem
 | 
						|
                                 );
 | 
						|
 | 
						|
    virtual void OnPaint(wxPaintEvent& rEvent);
 | 
						|
 | 
						|
    // the rest are not virtual
 | 
						|
    bool HandleCreate( WXLPCREATESTRUCT vCs
 | 
						|
                      ,bool*            pMayCreate
 | 
						|
                     );
 | 
						|
    bool HandleInitDialog(WXHWND hWndFocus);
 | 
						|
    bool HandleDestroy(void);
 | 
						|
    bool HandlePaint(void);
 | 
						|
    bool HandleEraseBkgnd(WXHDC vDC);
 | 
						|
    bool HandleMinimize(void);
 | 
						|
    bool HandleMaximize(void);
 | 
						|
    bool HandleSize( int    nX
 | 
						|
                    ,int    nY
 | 
						|
                    ,WXUINT uFlag
 | 
						|
                   );
 | 
						|
    bool HandleGetMinMaxInfo(PSWP pMmInfo);
 | 
						|
    bool HandleShow( bool bShow
 | 
						|
                    ,int  nStatus
 | 
						|
                   );
 | 
						|
    bool HandleActivate( int    nFlag
 | 
						|
                        ,WXHWND hActivate
 | 
						|
                       );
 | 
						|
    bool HandleCommand( WXWORD nId
 | 
						|
                       ,WXWORD nCmd
 | 
						|
                       ,WXHWND hControl
 | 
						|
                      );
 | 
						|
    bool HandleSysCommand( WXWPARAM wParam
 | 
						|
                          ,WXLPARAM lParam
 | 
						|
                         );
 | 
						|
    bool HandlePaletteChanged(void);
 | 
						|
    bool HandleQueryNewPalette(void);
 | 
						|
    bool HandleSysColorChange(void);
 | 
						|
    bool HandleDisplayChange(void);
 | 
						|
    bool HandleCaptureChanged(WXHWND hBainedCapture);
 | 
						|
 | 
						|
    bool HandleCtlColor(WXHBRUSH* hBrush);
 | 
						|
    bool HandleSetFocus(WXHWND hWnd);
 | 
						|
    bool HandleKillFocus(WXHWND hWnd);
 | 
						|
    bool HandleEndDrag(WXWPARAM wParam);
 | 
						|
    bool HandleMouseEvent( WXUINT uMsg
 | 
						|
                          ,int    nX
 | 
						|
                          ,int    nY
 | 
						|
                          ,WXUINT uFlags
 | 
						|
                         );
 | 
						|
    bool HandleMouseMove( int    nX
 | 
						|
                         ,int    nY
 | 
						|
                         ,WXUINT uFlags
 | 
						|
                        );
 | 
						|
    bool HandleChar( WXWPARAM wParam
 | 
						|
                    ,WXLPARAM lParam
 | 
						|
                    ,bool     bIsASCII = false
 | 
						|
                   );
 | 
						|
    bool HandleKeyDown( WXWPARAM wParam
 | 
						|
                       ,WXLPARAM lParam
 | 
						|
                      );
 | 
						|
    bool HandleKeyUp( WXWPARAM wParam
 | 
						|
                     ,WXLPARAM lParam
 | 
						|
                    );
 | 
						|
    bool HandleQueryDragIcon(WXHICON* phIcon);
 | 
						|
    bool HandleSetCursor( USHORT vId
 | 
						|
                         ,WXHWND hWnd
 | 
						|
                        );
 | 
						|
 | 
						|
    bool IsMouseInWindow(void) const;
 | 
						|
    bool OS2GetCreateWindowCoords( const wxPoint& rPos
 | 
						|
                                  ,const wxSize&  rSize
 | 
						|
                                  ,int&           rnX
 | 
						|
                                  ,int&           rnY
 | 
						|
                                  ,int&           rnWidth
 | 
						|
                                  ,int&           rnHeight
 | 
						|
                                 ) const;
 | 
						|
 | 
						|
    // Window procedure
 | 
						|
    virtual MRESULT OS2WindowProc( WXUINT   uMsg
 | 
						|
                                  ,WXWPARAM wParam
 | 
						|
                                  ,WXLPARAM lParam
 | 
						|
                                 );
 | 
						|
 | 
						|
    // Calls an appropriate default window procedure
 | 
						|
    virtual MRESULT OS2DefWindowProc( WXUINT   uMsg
 | 
						|
                                     ,WXWPARAM wParam
 | 
						|
                                     ,WXLPARAM lParam
 | 
						|
                                    );
 | 
						|
    virtual bool    OS2ProcessMessage(WXMSG* pMsg);
 | 
						|
    virtual bool    OS2ShouldPreProcessMessage(WXMSG* pMsg);
 | 
						|
    virtual bool    OS2TranslateMessage(WXMSG* pMsg);
 | 
						|
    virtual void    OS2DestroyWindow(void);
 | 
						|
 | 
						|
    // 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   uCtlColor
 | 
						|
                                ,WXUINT   uMessage
 | 
						|
                                ,WXWPARAM wParam
 | 
						|
                                ,WXLPARAM lParam
 | 
						|
                               );
 | 
						|
 | 
						|
    // Responds to colour changes: passes event on to children.
 | 
						|
    void OnSysColourChanged(wxSysColourChangedEvent& rEvent);
 | 
						|
 | 
						|
    // initialize various fields of wxMouseEvent (common part of OS2OnMouseXXX)
 | 
						|
    void InitMouseEvent( wxMouseEvent& rEvent
 | 
						|
                        ,int           nX
 | 
						|
                        ,int           nY
 | 
						|
                        ,WXUINT        uFlags
 | 
						|
                       );
 | 
						|
 | 
						|
    void MoveChildren(int nDiff);
 | 
						|
    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
 | 
						|
                              ,kVertCaption     = 0x0002
 | 
						|
                              ,kHorzCaption     = 0x0004
 | 
						|
                             } EExtraFlags;
 | 
						|
    // Some internal sizeing id's to make it easy for event handlers
 | 
						|
    typedef enum size_types { kSizeNormal
 | 
						|
                             ,kSizeMax
 | 
						|
                             ,kSizeMin
 | 
						|
                            } ESizeTypes;
 | 
						|
    // the window handle
 | 
						|
    WXHWND                          m_hWnd;
 | 
						|
 | 
						|
    // the old window proc (we subclass all windows)
 | 
						|
    WXFARPROC                       m_fnOldWndProc;
 | 
						|
 | 
						|
    // additional (OS2 specific) flags
 | 
						|
    bool                            m_bUseCtl3D:1; // Using CTL3D for this control
 | 
						|
    bool                            m_bBackgroundTransparent:1;
 | 
						|
    bool                            m_bMouseInWindow:1;
 | 
						|
    bool                            m_bLastKeydownProcessed:1;
 | 
						|
    bool                            m_bWinCaptured:1;
 | 
						|
    WXDWORD                         m_dwExStyle;
 | 
						|
 | 
						|
    // the size of one page for scrolling
 | 
						|
    int                             m_nXThumbSize;
 | 
						|
    int                             m_nYThumbSize;
 | 
						|
 | 
						|
#if wxUSE_MOUSEEVENT_HACK
 | 
						|
    // the coordinates of the last mouse event and the type of it
 | 
						|
    long                            m_lLastMouseX,
 | 
						|
    long                            m_lLastMouseY;
 | 
						|
    int                             m_nLastMouseEvent;
 | 
						|
#endif // wxUSE_MOUSEEVENT_HACK
 | 
						|
 | 
						|
    WXHMENU                         m_hMenu; // Menu, if any
 | 
						|
    unsigned long                   m_ulMenubarId; // it's Id, if any
 | 
						|
 | 
						|
    // the return value of WM_GETDLGCODE handler
 | 
						|
    long                            m_lDlgCode;
 | 
						|
 | 
						|
    // implement the base class pure virtuals
 | 
						|
    virtual void DoClientToScreen( int* pX
 | 
						|
                                  ,int* pY
 | 
						|
                                 ) const;
 | 
						|
    virtual void DoScreenToClient( int* pX
 | 
						|
                                  ,int* pY
 | 
						|
                                 ) const;
 | 
						|
    virtual void DoGetPosition( int* pX
 | 
						|
                               ,int* pY
 | 
						|
                              ) const;
 | 
						|
    virtual void DoGetSize( int* pWidth
 | 
						|
                           ,int* pHeight
 | 
						|
                          ) const;
 | 
						|
    virtual void DoGetClientSize( int* pWidth
 | 
						|
                                 ,int* pHeight
 | 
						|
                                ) const;
 | 
						|
    virtual void DoSetSize( int nX
 | 
						|
                           ,int nY
 | 
						|
                           ,int nWidth
 | 
						|
                           ,int nHeight
 | 
						|
                           ,int nSizeFlags = wxSIZE_AUTO
 | 
						|
                          );
 | 
						|
    virtual void DoSetClientSize( int nWidth
 | 
						|
                                 ,int nHeight
 | 
						|
                                );
 | 
						|
 | 
						|
    virtual void     DoCaptureMouse(void);
 | 
						|
    virtual void     DoReleaseMouse(void);
 | 
						|
 | 
						|
    // move the window to the specified location and resize it: this is called
 | 
						|
    // from both DoSetSize() and DoSetClientSize() and would usually just call
 | 
						|
    // ::WinSetWindowPos() except for composite controls which will want to arrange
 | 
						|
    // themselves inside the given rectangle
 | 
						|
    virtual void DoMoveWindow( int nX
 | 
						|
                              ,int nY
 | 
						|
                              ,int nWidth
 | 
						|
                              ,int nHeight
 | 
						|
                             );
 | 
						|
 | 
						|
#if wxUSE_TOOLTIPS
 | 
						|
    virtual void DoSetToolTip(wxToolTip* pTip);
 | 
						|
#endif // wxUSE_TOOLTIPS
 | 
						|
 | 
						|
    int  GetOS2ParentHeight(wxWindowOS2* pParent);
 | 
						|
 | 
						|
private:
 | 
						|
    // common part of all ctors
 | 
						|
    void Init(void);
 | 
						|
 | 
						|
    // the (non-virtual) handlers for the events
 | 
						|
    bool HandleMove( int nX
 | 
						|
                    ,int nY
 | 
						|
                   );
 | 
						|
    bool HandleJoystickEvent( WXUINT uMsg
 | 
						|
                             ,int    pX
 | 
						|
                             ,int    pY
 | 
						|
                             ,WXUINT uFlags
 | 
						|
                            );
 | 
						|
 | 
						|
    bool HandleNotify( int       nIdCtrl
 | 
						|
                      ,WXLPARAM  lParam
 | 
						|
                      ,WXLPARAM* pResult
 | 
						|
                     );
 | 
						|
    // the helper functions used by HandleChar/KeyXXX methods
 | 
						|
    wxKeyEvent CreateKeyEvent( wxEventType evType
 | 
						|
                              ,int         nId
 | 
						|
                              ,WXLPARAM    lParam = 0
 | 
						|
                              ,WXWPARAM    wParam = 0
 | 
						|
                             ) const;
 | 
						|
 | 
						|
    HWND                            m_hWndScrollBarHorz;
 | 
						|
    HWND                            m_hWndScrollBarVert;
 | 
						|
    SWP                             m_vWinSwp;
 | 
						|
 | 
						|
    DECLARE_DYNAMIC_CLASS(wxWindowOS2);
 | 
						|
    DECLARE_NO_COPY_CLASS(wxWindowOS2)
 | 
						|
    DECLARE_EVENT_TABLE()
 | 
						|
}; // end of wxWindow
 | 
						|
 | 
						|
class wxWindowCreationHook
 | 
						|
{
 | 
						|
public:
 | 
						|
    wxWindowCreationHook(wxWindow* pWinBeingCreated);
 | 
						|
    ~wxWindowCreationHook();
 | 
						|
}; // end of CLASS wxWindowCreationHook
 | 
						|
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
// global functions
 | 
						|
// ---------------------------------------------------------------------------
 | 
						|
 | 
						|
// kbd code translation
 | 
						|
WXDLLIMPEXP_CORE int wxCharCodeOS2ToWX(int nKeySym);
 | 
						|
WXDLLIMPEXP_CORE int wxCharCodeWXToOS2( int   nId
 | 
						|
                                  ,bool* pbIsVirtual = NULL
 | 
						|
                                 );
 | 
						|
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
// 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_
 |