| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/os2/window.h
 
- // Purpose:     wxWindow class
 
- // Author:      David Webster
 
- // Modified by:
 
- // Created:     10/12/99
 
- // 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     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     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;
 
-     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);
 
-     wxDECLARE_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_
 
 
  |