X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/376d7d9764391ef614ce74e02df62fafabc00501..0a84f928e9a273248a4843f6282507a39212d2d1:/include/wx/msw/window.h?ds=inline diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index 86bd78cda3..51a09d5579 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -13,15 +13,21 @@ #ifndef _WX_WINDOW_H_ #define _WX_WINDOW_H_ -// --------------------------------------------------------------------------- -// constants -// --------------------------------------------------------------------------- +// if this is set to 1, we use deferred window sizing to reduce flicker when +// resizing complicated window hierarchies, but this can in theory result in +// different behaviour than the old code so we keep the possibility to use it +// by setting this to 0 (in the future this should be removed completely) +#ifdef __WXWINCE__ + #define wxUSE_DEFERRED_SIZING 0 +#else + #define wxUSE_DEFERRED_SIZING 1 +#endif // --------------------------------------------------------------------------- // wxWindow declaration for MSW // --------------------------------------------------------------------------- -class WXDLLEXPORT wxWindowMSW : public wxWindowBase +class WXDLLIMPEXP_CORE wxWindowMSW : public wxWindowBase { friend class wxSpinCtrl; friend class wxSlider; @@ -61,16 +67,14 @@ public: virtual bool Show(bool show = true); virtual bool ShowWithEffect(wxShowEffect effect, - unsigned timeout = 0, - wxDirection dir = wxBOTTOM) + unsigned timeout = 0) { - return MSWShowWithEffect(true, effect, timeout, dir); + return MSWShowWithEffect(true, effect, timeout); } virtual bool HideWithEffect(wxShowEffect effect, - unsigned timeout = 0, - wxDirection dir = wxBOTTOM) + unsigned timeout = 0) { - return MSWShowWithEffect(false, effect, timeout, dir); + return MSWShowWithEffect(false, effect, timeout); } virtual void SetFocus(); @@ -83,9 +87,6 @@ public: virtual void Refresh( bool eraseBackground = true, const wxRect *rect = (const wxRect *) NULL ); virtual void Update(); - virtual void Freeze(); - virtual void Thaw(); - virtual bool IsFrozen() const { return m_frozenness > 0; } virtual void SetWindowStyleFlag(long style); virtual void SetExtraStyle(long exStyle); @@ -94,12 +95,6 @@ public: 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; virtual void SetScrollbar( int orient, int pos, int thumbVisible, int range, bool refresh = true ); @@ -108,7 +103,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); @@ -190,7 +185,6 @@ public: // -------------- void OnPaint(wxPaintEvent& event); - void OnEraseBackground(wxEraseEvent& event); #ifdef __WXWINCE__ void OnInitDialog(wxInitDialogEvent& event); #endif @@ -250,6 +244,9 @@ public: // get the HWND to be used as parent of this window with CreateWindow() virtual WXHWND MSWGetParent() const; + // get the Win32 window class name used by all wxWindow objects by default + static const wxChar *MSWGetRegisteredClassName(); + // creates the window of specified Windows class with given style, extended // style, title and geometry (default values // @@ -434,8 +431,7 @@ public: // common part of Show/HideWithEffect() bool MSWShowWithEffect(bool show, wxShowEffect effect, - unsigned timeout, - wxDirection dir); + unsigned timeout); // Responds to colour changes: passes event on to children. void OnSysColourChanged(wxSysColourChangedEvent& event); @@ -449,6 +445,8 @@ public: // check if a native double-buffering applies for this window virtual bool IsDoubleBuffered() const; + void SetDoubleBuffered(bool on); + // synthesize a wxEVT_LEAVE_WINDOW event and set m_mouseInWindow to false void GenerateMouseLeave(); @@ -488,6 +486,11 @@ protected: int m_yThumbSize; // 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; @@ -498,11 +501,16 @@ protected: int sizeFlags = wxSIZE_AUTO); virtual void DoSetClientSize(int width, int height); + virtual wxSize DoGetBorderSize() const; + virtual void DoCaptureMouse(); virtual void DoReleaseMouse(); virtual void DoEnable(bool enable); + virtual void DoFreeze(); + virtual void DoThaw(); + // this simply moves/resizes the given HWND which is supposed to be our // sibling (this is useful for controls which are composite at MSW level // and for which DoMoveWindow() is not enough) @@ -554,19 +562,24 @@ private: bool HandleJoystickEvent(WXUINT msg, int x, int y, WXUINT flags); bool HandleNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result); - - // number of calls to Freeze() minus number of calls to Thaw() - unsigned int m_frozenness; +#if wxUSE_DEFERRED_SIZING +protected: + // this function is called after the window was resized to its new size + virtual void MSWEndDeferWindowPos() + { + m_pendingPosition = wxDefaultPosition; + m_pendingSize = wxDefaultSize; + } // current defer window position operation handle (may be NULL) WXHANDLE m_hDWP; -protected: // When deferred positioning is done these hold the pending changes, and // are used for the default values if another size/pos changes is done on // this window before the group of deferred changes is completed. wxPoint m_pendingPosition; wxSize m_pendingSize; +#endif // wxUSE_DEFERRED_SIZING private: #ifdef __POCKETPC__ @@ -574,7 +587,7 @@ private: #endif DECLARE_DYNAMIC_CLASS(wxWindowMSW) - DECLARE_NO_COPY_CLASS(wxWindowMSW) + wxDECLARE_NO_COPY_CLASS(wxWindowMSW); DECLARE_EVENT_TABLE() }; @@ -587,8 +600,8 @@ private: // --------------------------------------------------------------------------- // kbd code translation -WXDLLEXPORT int wxCharCodeMSWToWX(int keySym, WXLPARAM lParam = 0); -WXDLLEXPORT WXWORD wxCharCodeWXToMSW(int id, bool *IsVirtual = NULL); +WXDLLIMPEXP_CORE int wxCharCodeMSWToWX(int keySym, WXLPARAM lParam = 0); +WXDLLIMPEXP_CORE WXWORD wxCharCodeWXToMSW(int id, bool *IsVirtual = NULL); // 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 @@ -600,17 +613,4 @@ public: ~wxWindowCreationHook(); }; -// ---------------------------------------------------------------------------- -// global objects -// ---------------------------------------------------------------------------- - -// notice that this hash must be defined after wxWindow declaration as it -// needs to "see" its dtor and not just forward declaration -#include "wx/hash.h" - -// pseudo-template HWND <-> wxWindow hash table -WX_DECLARE_HASH(wxWindowMSW, wxWindowList, wxWinHashTable); - -extern wxWinHashTable *wxWinHandleHash; - #endif // _WX_WINDOW_H_