X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e1d63b79352db5290a9f86428d193bd6a08ef32f..7d3f6b4ded6aa412cb1cc306fef478955d448c5b:/include/wx/palmos/window.h diff --git a/include/wx/palmos/window.h b/include/wx/palmos/window.h index a00a06e6e7..4be644902d 100644 --- a/include/wx/palmos/window.h +++ b/include/wx/palmos/window.h @@ -2,10 +2,10 @@ // Name: wx/palmos/window.h // Purpose: wxWindow class // Author: William Osborne - minimal working wxPalmOS port -// Modified by: +// Modified by: Wlodzimierz ABX Skiba - more than minimal functionality // Created: 10/13/04 // RCS-ID: $Id$ -// Copyright: (c) William Osborne +// Copyright: (c) William Osborne, Wlodzimierz Skiba // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -16,10 +16,6 @@ // 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 @@ -31,7 +27,7 @@ // wxWindow declaration for Palm // --------------------------------------------------------------------------- -class WXDLLEXPORT wxWindowPalm : public wxWindowBase +class WXDLLIMPEXP_CORE wxWindowPalm : public wxWindowBase { public: wxWindowPalm() { Init(); } @@ -57,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(); @@ -74,23 +71,14 @@ 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 ); virtual int GetCharHeight() const; virtual int GetCharWidth() const; - virtual void GetTextExtent(const wxString& string, - int *x, int *y, - int *descent = (int *) NULL, - int *externalLeading = (int *) NULL, - const wxFont *theFont = (const wxFont *) NULL) - const; #if wxUSE_MENUS_NATIVE virtual bool DoPopupMenu( wxMenu *menu, int x, int y ); @@ -103,7 +91,7 @@ public: virtual int GetScrollThumb( int orient ) const; virtual int GetScrollRange( int orient ) const; virtual void ScrollWindow( int dx, int dy, - const wxRect* rect = (wxRect *) NULL ); + const wxRect* rect = NULL ); virtual bool ScrollLines(int lines); virtual bool ScrollPages(int pages); @@ -147,27 +135,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 @@ -192,9 +164,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 // @@ -206,155 +175,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 - - 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 @@ -363,13 +202,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; @@ -389,6 +225,11 @@ protected: WXHMENU m_hMenu; // Menu, if any // implement the base class pure virtuals + virtual void DoGetTextExtent(const wxString& string, + int *x, int *y, + int *descent = NULL, + int *externalLeading = NULL, + const wxFont *font = NULL) const; virtual void DoClientToScreen( int *x, int *y ) const; virtual void DoScreenToClient( int *x, int *y ) const; virtual void DoGetPosition( int *x, int *y ) const; @@ -418,10 +259,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(); @@ -431,39 +268,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) + wxDECLARE_NO_COPY_CLASS(wxWindowPalm); DECLARE_EVENT_TABLE() }; -// --------------------------------------------------------------------------- -// 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 // ---------------------------------------------------------------------------- @@ -472,7 +281,7 @@ public: // needs to "see" its dtor and not just forward declaration #include "wx/hash.h" -// pseudo-template HWND <-> wxWindow hash table +// pseudo-template WinHandle <-> wxWindow hash table WX_DECLARE_HASH(wxWindowPalm, wxWindowList, wxWinHashTable); extern wxWinHashTable *wxWinHandleHash;