X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e951b8e4e6c07fe5d5200b8cbf6148e7317aa0e5..71e33cfbbddc293991796772c6e98a0e74ff826b:/include/wx/palmos/window.h diff --git a/include/wx/palmos/window.h b/include/wx/palmos/window.h index d082d31ad1..81cddb3611 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,19 +23,6 @@ // a better solution should be found later... #define wxUSE_MOUSEEVENT_HACK 0 -// --------------------------------------------------------------------------- -// constants -// --------------------------------------------------------------------------- - -#if WXWIN_COMPATIBILITY_2_4 -// they're unused by wxWidgets... -enum -{ - wxKEY_SHIFT = 1, - wxKEY_CTRL = 2 -}; -#endif - // --------------------------------------------------------------------------- // wxWindow declaration for Palm // --------------------------------------------------------------------------- @@ -75,8 +53,9 @@ 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(); @@ -92,12 +71,11 @@ public: virtual void WarpPointer(int x, int y); virtual void Refresh( bool eraseBackground = true, - const wxRect *rect = (const wxRect *) NULL ); + 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 ); @@ -133,12 +111,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? @@ -160,9 +132,8 @@ public: // simple accessors // ---------------- - WXHWND GetHWND() const { return m_hWnd; } - void SetHWND(WXHWND hWnd) { m_hWnd = hWnd; } - virtual WXWidget GetHandle() const { return GetHWND(); } + virtual WXWINHANDLE GetWinHandle() const { return m_handle; } + virtual WXWidget GetHandle() const { return GetWinHandle(); } // event handlers // -------------- @@ -171,27 +142,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; }; + 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 @@ -216,9 +171,6 @@ public: 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 // @@ -230,158 +182,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 // ------------------------------------------------------------------------ - // 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 @@ -389,14 +208,11 @@ public: protected: // the window handle - WXHWND m_hWnd; - FormType *FrameForm; - - FormType *GetFormPtr(); - void SetFormPtr(FormType *FormPtr); + WXWINHANDLE m_handle; + 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; @@ -445,10 +261,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(); @@ -458,13 +270,6 @@ 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; @@ -473,36 +278,6 @@ private: 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 // ---------------------------------------------------------------------------- @@ -511,12 +286,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;