X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ffecfa5aeb540b54914739dbb8603edbbd4c00a0..dd9f8b6bb6935360a8271dc3e8749fb026b601a8:/include/wx/palmos/window.h diff --git a/include/wx/palmos/window.h b/include/wx/palmos/window.h index b19904f5f0..25965867b9 100644 --- a/include/wx/palmos/window.h +++ b/include/wx/palmos/window.h @@ -1,30 +1,21 @@ ///////////////////////////////////////////////////////////////////////////// // Name: wx/palmos/window.h // Purpose: wxWindow class -// Author: William Osborne -// Modified by: +// Author: William Osborne - minimal working wxPalmOS port +// Modified by: Wlodzimierz ABX Skiba - more than minimal functionality // Created: 10/13/04 -// RCS-ID: $Id: -// Copyright: (c) William Osborne +// RCS-ID: $Id$ +// Copyright: (c) William Osborne, Wlodzimierz Skiba // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_WINDOW_H_ #define _WX_WINDOW_H_ -#ifdef __PALMOS__ - #include -#endif - - // --------------------------------------------------------------------------- // headers // --------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma interface "window.h" -#endif - // [at least] some version of Windows send extra mouse move messages after // a mouse click or a key press - to temporarily fix this problem, set the // define below to 1 @@ -32,17 +23,6 @@ // a better solution should be found later... #define wxUSE_MOUSEEVENT_HACK 0 -// --------------------------------------------------------------------------- -// constants -// --------------------------------------------------------------------------- - -// FIXME does anybody use those? they're unused by wxWidgets... -enum -{ - wxKEY_SHIFT = 1, - wxKEY_CTRL = 2 -}; - // --------------------------------------------------------------------------- // wxWindow declaration for Palm // --------------------------------------------------------------------------- @@ -73,14 +53,15 @@ public: const wxString& name = wxPanelNameStr); // implement base class pure virtuals - virtual void SetTitle( const wxString& title); - virtual wxString GetTitle() const; + + virtual void SetLabel( const wxString& label); + virtual wxString GetLabel() const; virtual void Raise(); virtual void Lower(); - virtual bool Show( bool show = TRUE ); - virtual bool Enable( bool enable = TRUE ); + virtual bool Show( bool show = true ); + virtual bool Enable( bool enable = true ); virtual void SetFocus(); virtual void SetFocusFromKbd(); @@ -89,13 +70,10 @@ public: virtual void WarpPointer(int x, int y); - virtual void Refresh( bool eraseBackground = TRUE, - const wxRect *rect = (const wxRect *) NULL ); + virtual void Refresh( bool eraseBackground = true, + const wxRect *rect = NULL ); virtual void Update(); - virtual void Freeze(); - virtual void Thaw(); - virtual void SetWindowStyleFlag( long style ); virtual bool SetCursor( const wxCursor &cursor ); virtual bool SetFont( const wxFont &font ); @@ -113,8 +91,8 @@ public: #endif // wxUSE_MENUS_NATIVE virtual void SetScrollbar( int orient, int pos, int thumbVisible, - int range, bool refresh = TRUE ); - virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE ); + int range, bool refresh = true ); + virtual void SetScrollPos( int orient, int pos, bool refresh = true ); virtual int GetScrollPos( int orient ) const; virtual int GetScrollThumb( int orient ) const; virtual int GetScrollRange( int orient ) const; @@ -131,12 +109,6 @@ public: // Accept files for dragging virtual void DragAcceptFiles(bool accept); -#if WXWIN_COMPATIBILITY_2_4 - wxDEPRECATED( bool GetUseCtl3D() const ); - wxDEPRECATED( bool GetTransparentBackground() const ); - wxDEPRECATED( void SetTransparent(bool t = TRUE) ); -#endif // WXWIN_COMPATIBILITY_2_4 - #ifndef __WXUNIVERSAL__ // Native resource loading (implemented in src/Palm/nativdlg.cpp) // FIXME: should they really be all virtual? @@ -169,27 +141,11 @@ public: void OnPaint(wxPaintEvent& event); public: - // For implementation purposes - sometimes decorations make the client area - // smaller - virtual wxPoint GetClientAreaOrigin() const; - - // Windows subclassing - void SubclassWin(WXHWND hWnd); - void UnsubclassWin(); - - WXFARPROC PalmGetOldWndProc() const { return m_oldWndProc; } - void PalmSetOldWndProc(WXFARPROC proc) { m_oldWndProc = proc; } - - // return TRUE if the window is of a standard (i.e. not wxWidgets') class - // - // to understand why does it work, look at SubclassWin() code and comments - bool IsOfStandardClass() const { return m_oldWndProc != NULL; } - wxWindow *FindItem(long id) const; - wxWindow *FindItemByHWND(WXHWND hWnd, bool controlOnly = FALSE) const; + wxWindow *FindItemByWinHandle(WXWINHANDLE handle, bool controlOnly = false) const; - // Palm only: TRUE if this control is part of the main control - virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return FALSE; }; + // Palm only: true if this control is part of the main control + virtual bool ContainsWinHandle(WXWINHANDLE WXUNUSED(handle)) const { return false; }; // translate wxWidgets style flags for this control into the Windows style // and optional extended style for the corresponding native control @@ -208,19 +164,16 @@ public: // translate wxWidgets coords into Windows ones suitable to be passed to // ::CreateWindow() // - // returns TRUE if non default coords are returned, FALSE otherwise + // returns true if non default coords are returned, false otherwise bool PalmGetCreateWindowCoords(const wxPoint& pos, const wxSize& size, int& x, int& y, int& w, int& h) const; - // get the HWND to be used as parent of this window with CreateWindow() - virtual WXHWND PalmGetParent() const; - // creates the window of specified Windows class with given style, extended // style, title and geometry (default values // - // returns TRUE if the window has been created, FALSE if creation failed + // returns true if the window has been created, false if creation failed bool PalmCreate(const wxChar *wclass, const wxChar *title = NULL, const wxPoint& pos = wxDefaultPosition, @@ -228,158 +181,25 @@ public: WXDWORD style = 0, WXDWORD exendedStyle = 0); - virtual bool PalmCommand(WXUINT param, WXWORD id); - #ifndef __WXUNIVERSAL__ - // Create an appropriate wxWindow from a HWND - virtual wxWindow* CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd); + // Create an appropriate wxWindow from a WinHandle + virtual wxWindow* CreateWindowFromWinHandle(wxWindow* parent, WXWINHANDLE handle); - // Make sure the window style reflects the HWND style (roughly) - virtual void AdoptAttributesFromHWND(); + // Make sure the window style reflects the WinHandle style (roughly) + virtual void AdoptAttributesFromWinHandle(); #endif // __WXUNIVERSAL__ // Setup background and foreground colours correctly virtual void SetupColours(); - // ------------------------------------------------------------------------ - // helpers for message handlers: these perform the same function as the - // message crackers from - they unpack WPARAM and LPARAM into - // the correct parameters - // ------------------------------------------------------------------------ - - void UnpackCommand(WXWPARAM wParam, WXLPARAM lParam, - WXWORD *id, WXHWND *hwnd, WXWORD *cmd); - void UnpackActivate(WXWPARAM wParam, WXLPARAM lParam, - WXWORD *state, WXWORD *minimized, WXHWND *hwnd); - void UnpackScroll(WXWPARAM wParam, WXLPARAM lParam, - WXWORD *code, WXWORD *pos, WXHWND *hwnd); - void UnpackCtlColor(WXWPARAM wParam, WXLPARAM lParam, - WXWORD *nCtlColor, WXHDC *hdc, WXHWND *hwnd); - void UnpackMenuSelect(WXWPARAM wParam, WXLPARAM lParam, - WXWORD *item, WXWORD *flags, WXHMENU *hmenu); - // ------------------------------------------------------------------------ // internal handlers for Palm messages: all handlers return a boolean value: - // TRUE means that the handler processed the event and FALSE that it didn't + // true means that the handler processed the event and false that it didn't // ------------------------------------------------------------------------ - // there are several cases where we have virtual functions for Windows - // 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 PalmOnXXX() function - // and if the derived class wants to process them, it should override - // PalmWindowProc() directly. - // scroll event (both horizontal and vertical) virtual bool PalmOnScroll(int orientation, WXWORD nSBCode, - WXWORD pos, WXHWND control); - - // child control notifications -#ifdef __WIN95__ - virtual bool PalmOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result); -#endif // __WIN95__ - - // owner-drawn controls need to process these messages - virtual bool PalmOnDrawItem(int id, WXDRAWITEMSTRUCT *item); - virtual bool PalmOnMeasureItem(int id, WXMEASUREITEMSTRUCT *item); - - // the rest are not virtual - bool HandleCreate(WXLPCREATESTRUCT cs, bool *mayCreate); - bool HandleInitDialog(WXHWND hWndFocus); - bool HandleDestroy(); - - bool HandlePaint(); - bool HandleEraseBkgnd(WXHDC pDC); - - bool HandleMinimize(); - bool HandleMaximize(); - bool HandleSize(int x, int y, WXUINT flag); - bool HandleSizing(wxRect& rect); - bool HandleGetMinMaxInfo(void *mmInfo); - - bool HandleShow(bool show, int status); - bool HandleActivate(int flag, bool minimized, WXHWND activate); - - bool HandleCommand(WXWORD id, WXWORD cmd, WXHWND control); - - bool HandleCtlColor(WXHBRUSH *hBrush, - WXHDC hdc, - WXHWND hWnd, - WXUINT nCtlColor, - WXUINT message, - WXWPARAM wParam, - WXLPARAM lParam); - - bool HandlePaletteChanged(WXHWND hWndPalChange); - bool HandleQueryNewPalette(); - bool HandleSysColorChange(); - bool HandleDisplayChange(); - bool HandleCaptureChanged(WXHWND gainedCapture); - - bool HandleQueryEndSession(long logOff, bool *mayEnd); - bool HandleEndSession(bool endSession, long logOff); - - bool HandleSetFocus(WXHWND wnd); - bool HandleKillFocus(WXHWND wnd); - - bool HandleDropFiles(WXWPARAM wParam); - - bool HandleMouseEvent(WXUINT msg, int x, int y, WXUINT flags); - bool HandleMouseMove(int x, int y, WXUINT flags); - bool HandleMouseWheel(WXWPARAM wParam, WXLPARAM lParam); - - bool HandleChar(WXWPARAM wParam, WXLPARAM lParam, bool isASCII = FALSE); - bool HandleKeyDown(WXWPARAM wParam, WXLPARAM lParam); - bool HandleKeyUp(WXWPARAM wParam, WXLPARAM lParam); -#if wxUSE_ACCEL - bool HandleHotKey(WXWPARAM wParam, WXLPARAM lParam); -#endif -#ifdef __WIN32__ - int HandleMenuChar(int chAccel, WXLPARAM lParam); -#endif - - bool HandleQueryDragIcon(WXHICON *hIcon); - - bool HandleSetCursor(WXHWND hWnd, short nHitTest, int mouseMsg); - - // Window procedure - virtual WXLRESULT PalmWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - - // Calls an appropriate default window procedure - virtual WXLRESULT PalmDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - - // message processing helpers - - // return FALSE if the message shouldn't be translated/preprocessed but - // dispatched normally - virtual bool PalmShouldPreProcessMessage(WXMSG* pMsg); - - // return TRUE if the message was preprocessed and shouldn't be dispatched - virtual bool PalmProcessMessage(WXMSG* pMsg); - - // return TRUE if the message was translated and shouldn't be dispatched - virtual bool PalmTranslateMessage(WXMSG* pMsg); - - // called when the window is about to be destroyed - virtual void PalmDestroyWindow(); - - // 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 nCtlColor, - WXUINT message, - WXWPARAM wParam, - WXLPARAM lParam); - - // Responds to colour changes: passes event on to children. - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // initialize various fields of wxMouseEvent (common part of PalmOnMouseXXX) - void InitMouseEvent(wxMouseEvent& event, int x, int y, WXUINT flags); - - // check if mouse is in the window - bool IsMouseInWindow() const; + WXWORD pos, WXWINHANDLE control); // virtual function for implementing internal idle // behaviour @@ -388,13 +208,10 @@ public: protected: // the window handle WXHWND m_hWnd; - FormType *FrameForm; - - FormType *GetFormPtr(); - void SetFormPtr(FormType *FormPtr); + WXFORMPTR FrameForm; - // the old window proc (we subclass all windows) - WXFARPROC m_oldWndProc; + WXFORMPTR GetFormPtr(); + void SetFormPtr(WXFORMPTR FormPtr); // additional (Palm specific) flags bool m_mouseInWindow:1; @@ -443,10 +260,6 @@ protected: const wxString& ttip); #endif // wxUSE_TOOLTIPS - // the helper functions used by HandleChar/KeyXXX methods - wxKeyEvent CreateKeyEvent(wxEventType evType, int id, - WXLPARAM lParam = 0, WXWPARAM wParam = 0) const; - private: // common part of all ctors void Init(); @@ -456,51 +269,11 @@ private: bool HandleMoving(wxRect& rect); bool HandleJoystickEvent(WXUINT msg, int x, int y, WXUINT flags); -#ifdef __WIN95__ - bool HandleNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result); -#endif // __WIN95__ - - // list of disabled children before last call to our Disable() - wxWindowList *m_childrenDisabled; - - // number of calls to Freeze() minus number of calls to Thaw() - unsigned int m_frozenness; - DECLARE_DYNAMIC_CLASS(wxWindowPalm) DECLARE_NO_COPY_CLASS(wxWindowPalm) DECLARE_EVENT_TABLE() }; -// ---------------------------------------------------------------------------- -// inline functions -// ---------------------------------------------------------------------------- - -#if WXWIN_COMPATIBILITY_2_4 - -inline bool wxWindowPalm::GetUseCtl3D() const { return false; } -inline bool wxWindowPalm::GetTransparentBackground() const { return false; } -inline void wxWindowPalm::SetTransparent(bool WXUNUSED(t)) { } - -#endif // WXWIN_COMPATIBILITY_2_4 - -// --------------------------------------------------------------------------- -// global functions -// --------------------------------------------------------------------------- - -// kbd code translation -WXDLLEXPORT int wxCharCodePalmToWX(int keySym, WXLPARAM lParam = 0); -WXDLLEXPORT int wxCharCodeWXToPalm(int id, bool *IsVirtual); - -// window creation helper class: before creating a new HWND, instantiate an -// object of this class on stack - this allows to process the messages sent to -// the window even before CreateWindow() returns -class wxWindowCreationHook -{ -public: - wxWindowCreationHook(wxWindowPalm *winBeingCreated); - ~wxWindowCreationHook(); -}; - // ---------------------------------------------------------------------------- // global objects // ---------------------------------------------------------------------------- @@ -509,12 +282,8 @@ public: // needs to "see" its dtor and not just forward declaration #include "wx/hash.h" -// pseudo-template HWND <-> wxWindow hash table -#if WXWIN_COMPATIBILITY_2_4 -WX_DECLARE_HASH(wxWindow, wxWindowList, wxWinHashTable); -#else +// pseudo-template WinHandle <-> wxWindow hash table WX_DECLARE_HASH(wxWindowPalm, wxWindowList, wxWinHashTable); -#endif extern wxWinHashTable *wxWinHandleHash;