// wxWindow declaration for OS/2 PM
// ---------------------------------------------------------------------------
-class WXDLLEXPORT wxWindow : public wxWindowBase
+class WXDLLEXPORT wxWindowOS2 : public wxWindowBase
{
- DECLARE_DYNAMIC_CLASS(wxWindow);
-
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
);
}
- virtual ~wxWindow();
+ virtual ~wxWindowOS2();
bool Create( wxWindow* pParent
,wxWindowID vId
,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;
,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
) 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
);
wxWindow* GetWindowChild1(wxWindowID vId);
wxWindow* GetWindowChild(wxWindowID vId);
+#endif //__WXUNIVERSAL__
// implementation from now on
// --------------------------
// event handlers
// --------------
+ void OnSetFocus(wxFocusEvent& rEvent);
void OnEraseBackground(wxEraseEvent& rEvent);
void OnIdle(wxIdleEvent& rEvent);
// 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);
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
+ bool OS2Create( WXHWND hParent
+ ,PSZ zClass
,const wxChar* zTitle
- ,int nX
- ,int nY
- ,int nWidth
- ,int nHeight
,WXDWORD dwStyle
- ,const wxChar* zDialogTemplate = NULL
- ,WXDWORD dwExendedStyle = 0
+ ,long lX
+ ,long lY
+ ,long lWidth
+ ,long lHeight
+ ,WXHWND hOwner
+ ,WXHWND hZOrder
+ ,unsigned long lId
+ ,void* pCtlData = NULL
+ ,void* pPresParams = NULL
+ ,WXDWORD dwExStyle = 0L
);
virtual bool OS2Command( WXUINT uParam
,WXWORD nId
) const;
#endif // WXWIN_COMPATIBILITY
+#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);
void UnpackActivate( WXWPARAM wParam
,WXLPARAM lParam
,WXWORD* pState
- ,WXWORD* pMinimized
,WXHWND* pHwnd
);
void UnpackScroll( WXWPARAM wParam
,WXWORD* pPos
,WXHWND* pHwnd
);
- void UnpackCtlColor( WXWPARAM wParam
- ,WXLPARAM lParam
- ,WXWORD* pCtlColor
- ,WXHDC* pHdc
- ,WXHWND* pHwnd
- );
void UnpackMenuSelect( WXWPARAM wParam
,WXLPARAM lParam
,WXWORD* pTtem
,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
,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
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
,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( HWND hwnd
- ,WXUINT uMsg
+ virtual MRESULT OS2WindowProc( WXUINT uMsg
,WXWPARAM wParam
,WXLPARAM lParam
);
// Calls an appropriate default window procedure
- virtual MRESULT OS2DefWindowProc( HWND hwnd
- ,WXUINT uMsg
+ virtual MRESULT OS2DefWindowProc( WXUINT uMsg
,WXWPARAM wParam
,WXLPARAM lParam
);
,WXUINT uFlags
);
+ void MoveChildren(int nDiff);
+
protected:
+ // 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 (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;
// 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
virtual void DoSetToolTip(wxToolTip* pTip);
#endif // wxUSE_TOOLTIPS
+ int GetOS2ParentHeight(wxWindowOS2* pParent);
+
private:
// common part of all ctors
void Init(void);
,WXLPARAM lParam
,WXLPARAM* pResult
);
- DECLARE_NO_COPY_CLASS(wxWindow);
+ // the helper functions used by HandleChar/KeyXXX methods
+ wxKeyEvent CreateKeyEvent(wxEventType evType, int id, WXLPARAM lp) const;
+
+ 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));};
-};
+}; // end of wxWindow
+
+class wxWindowCreationHook
+{
+public:
+ wxWindowCreationHook(wxWindow* pWinBeingCreated);
+ ~wxWindowCreationHook();
+}; // end of CLASS wxWindowCreationHook
// ---------------------------------------------------------------------------
// global functions