X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/afa59b4e8828f1fff43c3c0d4303adf2c6ac59e5..b2644cc3ccb41de07e2160857f1cc0c2a2069d79:/include/wx/os2/window.h diff --git a/include/wx/os2/window.h b/include/wx/os2/window.h index a230da8ad2..261d6562d8 100644 --- a/include/wx/os2/window.h +++ b/include/wx/os2/window.h @@ -23,6 +23,13 @@ #include +// --------------------------------------------------------------------------- +// forward declarations +// --------------------------------------------------------------------------- +#ifndef CW_USEDEFAULT +# define CW_USEDEFAULT ((int)0x80000000) +#endif + // --------------------------------------------------------------------------- // forward declarations // --------------------------------------------------------------------------- @@ -88,16 +95,19 @@ public: virtual bool Show(bool bShow = TRUE); virtual bool Enable(bool bEnable = TRUE); virtual void SetFocus(void); + virtual void SetFocusFromKbd(void); virtual bool Reparent(wxWindow* pNewParent); virtual void WarpPointer( int x ,int y ); - virtual void CaptureMouse(void); - virtual void ReleaseMouse(void); 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; @@ -134,6 +144,8 @@ public: ,const wxRect* pRect = (wxRect *)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 @@ -215,6 +227,7 @@ public: void OnIdle(wxIdleEvent& rEvent); public: + // For implementation purposes - sometimes decorations make the client area // smaller virtual wxPoint GetClientAreaOrigin(void) const; @@ -225,6 +238,10 @@ 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 wxWindows') class + // + bool IsOfStandardClass(void) const { return m_fnOldWndProc != NULL; } wxWindow* FindItem(long lId) const; wxWindow* FindItemByHWND( WXHWND hWnd @@ -243,22 +260,36 @@ public: // 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 + // 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 wxWindows 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( WXHWND hParent - ,PSZ zClass - ,const wxChar* zTitle - ,WXDWORD dwStyle - ,long lX - ,long lY - ,long lWidth - ,long lHeight - ,WXHWND hOwner - ,WXHWND hZOrder - ,unsigned long lId - ,void* pCtlData = NULL - ,void* pPresParams = NULL - ,WXDWORD dwExStyle = 0L - ); + bool OS2Create( PSZ zClass + ,const char* zTitle + ,WXDWORD dwStyle + ,const wxPoint& rPos + ,const wxSize& rSize + ,void* pCtlData + ,WXDWORD dwExStyle + ,bool bIsChild + ); virtual bool OS2Command( WXUINT uParam ,WXWORD nId ); @@ -336,10 +367,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 @@ -368,8 +401,12 @@ public: bool HandleSysCommand( WXWPARAM wParam ,WXLPARAM lParam ); - bool HandlePaletteChanged(); + 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); @@ -383,14 +420,14 @@ public: ,int nY ,WXUINT uFlags ); - bool HandleChar( WXDWORD wParam + bool HandleChar( WXWPARAM wParam ,WXLPARAM lParam ,bool bIsASCII = FALSE ); - bool HandleKeyDown( WXWORD wParam + bool HandleKeyDown( WXWPARAM wParam ,WXLPARAM lParam ); - bool HandleKeyUp( WXDWORD wParam + bool HandleKeyUp( WXWPARAM wParam ,WXLPARAM lParam ); bool HandleQueryDragIcon(WXHICON* phIcon); @@ -398,6 +435,15 @@ public: ,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 @@ -410,12 +456,10 @@ public: ,WXLPARAM lParam ); virtual bool OS2ProcessMessage(WXMSG* pMsg); + virtual bool OS2ShouldPreProcessMessage(WXMSG* pMsg); virtual bool OS2TranslateMessage(WXMSG* pMsg); virtual void OS2DestroyWindow(void); - // Detach "Window" menu from menu bar so it doesn't get deleted - void OS2DetachWindowMenu(void); - // this function should return the brush to paint the window background // with or 0 for the default brush virtual WXHBRUSH OnCtlColor( WXHDC hDC @@ -441,6 +485,9 @@ public: ,WXUINT uFlags ); + void MoveChildren(int nDiff); + PSWP GetSwp(void) {return &m_vWinSwp;} + protected: // PM can't create some MSW styles natively but can perform these after // creation by sending messages @@ -463,7 +510,7 @@ 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; @@ -510,6 +557,9 @@ protected: ,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 @@ -524,6 +574,8 @@ protected: virtual void DoSetToolTip(wxToolTip* pTip); #endif // wxUSE_TOOLTIPS + int GetOS2ParentHeight(wxWindowOS2* pParent); + private: // common part of all ctors void Init(void); @@ -543,20 +595,35 @@ private: ,WXLPARAM* pResult ); // the helper functions used by HandleChar/KeyXXX methods - wxKeyEvent CreateKeyEvent(wxEventType evType, int id, WXLPARAM lp) const; + wxKeyEvent CreateKeyEvent( wxEventType evType + ,int nId + ,WXLPARAM lParam = 0 + ,WXWPARAM wParam = 0 + ) const; + + wxWindowList* m_pChildrenDisabled; + HWND m_hWndScrollBarHorz; + HWND m_hWndScrollBarVert; + SWP m_vWinSwp; DECLARE_DYNAMIC_CLASS(wxWindowOS2); DECLARE_NO_COPY_CLASS(wxWindowOS2) DECLARE_EVENT_TABLE() -private: - HWND m_hWndScrollBarHorz; - HWND m_hWndScrollBarVert; + // // Virtual function hiding supression + // inline virtual bool Reparent(wxWindowBase* pNewParent) - { return(wxWindowBase::Reparent(pNewParent));}; + { return(wxWindowBase::Reparent(pNewParent));} }; // end of wxWindow +class wxWindowCreationHook +{ +public: + wxWindowCreationHook(wxWindow* pWinBeingCreated); + ~wxWindowCreationHook(); +}; // end of CLASS wxWindowCreationHook + // --------------------------------------------------------------------------- // global functions // ---------------------------------------------------------------------------