X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a885d89ae9c9d6ff5275cb5b1ea3087132aacf8c..c0fbf24ba6abc81db66ead334d69af670a8ec5a7:/include/wx/os2/window.h diff --git a/include/wx/os2/window.h b/include/wx/os2/window.h index 06fa84fd4c..3580d86bca 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 // --------------------------------------------------------------------------- @@ -44,18 +51,21 @@ enum // wxWindow declaration for OS/2 PM // --------------------------------------------------------------------------- -class WXDLLEXPORT wxWindow : public wxWindowBase +class WXDLLEXPORT wxWindowOS2 : public wxWindowBase { public: - wxWindow() { Init(); } - - wxWindow( wxWindow* pParent - ,wxWindowID vId - ,const wxPoint& rPos = wxDefaultPosition - ,const wxSize& rSize = wxDefaultSize - ,long lStyle = 0 - ,const wxString& rName = wxPanelNameStr - ) + 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 @@ -67,7 +77,7 @@ public: ); } - virtual ~wxWindow(); + virtual ~wxWindowOS2(); bool Create( wxWindow* pParent ,wxWindowID vId @@ -89,12 +99,13 @@ public: 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 bool SetCursor(const wxCursor& rCursor); virtual bool SetFont(const wxFont& rFont); virtual int GetCharHeight(void) const; @@ -106,10 +117,12 @@ public: ,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 @@ -129,6 +142,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 @@ -177,6 +192,7 @@ public: ) const; #endif // wxUSE_CARET +#ifndef __WXUNIVERSAL__ // Native resource loading (implemented in src/os2/nativdlg.cpp) // FIXME: should they really be all virtual? virtual bool LoadNativeDialog( wxWindow* pParent @@ -187,6 +203,7 @@ public: ); wxWindow* GetWindowChild1(wxWindowID vId); wxWindow* GetWindowChild(wxWindowID vId); +#endif //__WXUNIVERSAL__ // implementation from now on // -------------------------- @@ -212,13 +229,6 @@ public: // smaller virtual wxPoint GetClientAreaOrigin(void) const; - // Makes an adjustment to the window position (for example, a frame that has - // a toolbar that it manages itself). - virtual void AdjustForParentClientOrigin( int& rX - ,int& rY - ,int nSizeFlags - ); - // Windows subclassing void SubclassWin(WXHWND hWnd); void UnsubclassWin(void); @@ -244,19 +254,15 @@ public: virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return FALSE; }; // returns TRUE if the window has been created - bool OS2Create( int nId - ,wxWindow* pParent - ,const wxChar* zWclass - ,wxWindow* pWxWin - ,const wxChar* zTitle - ,int nX - ,int nY - ,int nWidth - ,int nHeight - ,WXDWORD dwStyle - ,const wxChar* zDialogTemplate = NULL - ,WXDWORD dwExendedStyle = 0 - ); + 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 ); @@ -268,6 +274,7 @@ public: ) const; #endif // WXWIN_COMPATIBILITY +#ifndef __WXUNIVERSAL__ // Create an appropriate wxWindow from a HWND virtual wxWindow* CreateWindowFromHWND( wxWindow* pParent ,WXHWND hWnd @@ -275,6 +282,7 @@ public: // 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); @@ -294,7 +302,6 @@ public: void UnpackActivate( WXWPARAM wParam ,WXLPARAM lParam ,WXWORD* pState - ,WXWORD* pMinimized ,WXHWND* pHwnd ); void UnpackScroll( WXWPARAM wParam @@ -303,12 +310,6 @@ public: ,WXWORD* pPos ,WXHWND* pHwnd ); - void UnpackCtlColor( WXWPARAM wParam - ,WXLPARAM lParam - ,WXWORD* pCtlColor - ,WXHDC* pHdc - ,WXHWND* pHwnd - ); void UnpackMenuSelect( WXWPARAM wParam ,WXLPARAM lParam ,WXWORD* pTtem @@ -335,11 +336,6 @@ public: ,WXHWND control ); - virtual bool OS2OnNotify( int nIdCtrl - ,WXLPARAM lParam - ,WXLPARAM* pResult - ); - // owner-drawn controls need to process these messages virtual bool OS2OnDrawItem( int nId ,WXDRAWITEMSTRUCT* pItem @@ -362,12 +358,11 @@ public: ,int nY ,WXUINT uFlag ); - bool HandleGetMinMaxInfo(void* pMmInfo); + bool HandleGetMinMaxInfo(PSWP pMmInfo); bool HandleShow( bool bShow ,int nStatus ); bool HandleActivate( int nFlag - ,bool bMinimized ,WXHWND hActivate ); bool HandleCommand( WXWORD nId @@ -377,26 +372,12 @@ public: bool HandleSysCommand( WXWPARAM wParam ,WXLPARAM lParam ); - bool HandleCtlColor( WXHBRUSH* phBrush - ,WXHDC hDc - ,WXHWND hWnd - ,WXUINT uCtlColor - ,WXUINT uMessage - ,WXWPARAM wParam - ,WXLPARAM lParam - ); - bool HandlePaletteChanged(WXHWND hWndPalChange); - bool HandleQueryNewPalette(void); + bool HandlePaletteChanged(); bool HandleSysColorChange(void); - bool HandleQueryEndSession( long lLogOff - ,bool* pbMayEnd - ); - bool HandleEndSession( bool bEndSession - ,long lLogOff - ); + bool HandleCtlColor(WXHBRUSH* hBrush); bool HandleSetFocus(WXHWND hWnd); bool HandleKillFocus(WXHWND hWnd); - bool HandleDropFiles(WXWPARAM wParam); + bool HandleEndDrag(WXWPARAM wParam); bool HandleMouseEvent( WXUINT uMsg ,int nX ,int nY @@ -406,22 +387,30 @@ public: ,int nY ,WXUINT uFlags ); - bool HandleChar( WXWORD wParam + bool HandleChar( WXDWORD wParam ,WXLPARAM lParam ,bool bIsASCII = FALSE ); bool HandleKeyDown( WXWORD wParam ,WXLPARAM lParam ); - bool HandleKeyUp( WXWORD wParam + bool HandleKeyUp( WXDWORD wParam ,WXLPARAM lParam ); bool HandleQueryDragIcon(WXHICON* phIcon); - bool HandleSetCursor( WXHWND hWnd - ,short nHitTest - ,int nMouseMsg + 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 @@ -434,12 +423,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 @@ -465,6 +452,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 @@ -483,12 +473,13 @@ protected: // the old window proc (we subclass all windows) WXFARPROC m_fnOldWndProc; - // additional (MSW specific) flags + // additional (OS2 specific) flags bool m_bUseCtl3D:1; // Using CTL3D for this control bool m_bBackgroundTransparent:1; bool m_bMouseInWindow:1; bool m_bDoubleClickAllowed:1; bool m_bWinCaptured:1; + WXDWORD m_dwExStyle; // the size of one page for scrolling int m_nXThumbSize; @@ -533,9 +524,12 @@ 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 - // ::MoveWindow() except for composite controls which will want to arrange + // ::WinSetWindowPos() except for composite controls which will want to arrange // themselves inside the given rectangle virtual void DoMoveWindow( int nX ,int nY @@ -547,6 +541,8 @@ protected: virtual void DoSetToolTip(wxToolTip* pTip); #endif // wxUSE_TOOLTIPS + int GetOS2ParentHeight(wxWindowOS2* pParent); + private: // common part of all ctors void Init(void); @@ -568,15 +564,28 @@ private: // the helper functions used by HandleChar/KeyXXX methods wxKeyEvent CreateKeyEvent(wxEventType evType, int id, WXLPARAM lp) const; - DECLARE_DYNAMIC_CLASS(wxWindow); - DECLARE_NO_COPY_CLASS(wxWindow); + + 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));}; }; // end of wxWindow +class wxWindowCreationHook +{ +public: + wxWindowCreationHook(wxWindow* pWinBeingCreated); + ~wxWindowCreationHook(); +}; // end of CLASS wxWindowCreationHook + // --------------------------------------------------------------------------- // global functions // ---------------------------------------------------------------------------