X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/47a8a4d5cc3e8fcb2efee4787cb9d244104beea5..15f7c30516facfb272fc116aec4d3f9c3a9de085:/include/wx/msw/window.h diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index 8f846c2c9f..86bd78cda3 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -59,8 +59,19 @@ public: virtual void Raise(); virtual void Lower(); - virtual bool Show( bool show = true ); - virtual void DoEnable( bool enable ); + virtual bool Show(bool show = true); + virtual bool ShowWithEffect(wxShowEffect effect, + unsigned timeout = 0, + wxDirection dir = wxBOTTOM) + { + return MSWShowWithEffect(true, effect, timeout, dir); + } + virtual bool HideWithEffect(wxShowEffect effect, + unsigned timeout = 0, + wxDirection dir = wxBOTTOM) + { + return MSWShowWithEffect(false, effect, timeout, dir); + } virtual void SetFocus(); virtual void SetFocusFromKbd(); @@ -148,6 +159,29 @@ public: // does this window have deferred position and/or size? bool IsSizeDeferred() const; + // these functions allow to register a global handler for the given Windows + // message: it will be called from MSWWindowProc() of any window which gets + // this event if it's not processed before (i.e. unlike a hook procedure it + // does not override the normal processing) + // + // notice that if you want to process a message for a given window only you + // should override its MSWWindowProc() instead + + // type of the handler: it is called with the message parameters (except + // that the window object is passed instead of window handle) and should + // return true if it handled the message or false if it should be passed to + // DefWindowProc() + typedef bool (*MSWMessageHandler)(wxWindowMSW *win, + WXUINT nMsg, + WXWPARAM wParam, + WXLPARAM lParam); + + // install a handler, shouldn't be called more than one for the same message + static bool MSWRegisterMessageHandler(int msg, MSWMessageHandler handler); + + // unregister a previously registered handler + static void MSWUnregisterMessageHandler(int msg, MSWMessageHandler handler); + // implementation from now on // ========================== @@ -178,7 +212,7 @@ public: wxWindow *FindItemByHWND(WXHWND hWnd, bool controlOnly = false) const; // MSW only: true if this control is part of the main control - virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return false; }; + virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return false; } #if wxUSE_TOOLTIPS // MSW only: true if this window or any of its children have a tooltip @@ -294,6 +328,8 @@ public: bool HandleSize(int x, int y, WXUINT flag); bool HandleSizing(wxRect& rect); bool HandleGetMinMaxInfo(void *mmInfo); + bool HandleEnterSizeMove(); + bool HandleExitSizeMove(); bool HandleShow(bool show, int status); bool HandleActivate(int flag, bool minimized, WXHWND activate); @@ -395,6 +431,11 @@ public: return true; } + // common part of Show/HideWithEffect() + bool MSWShowWithEffect(bool show, + wxShowEffect effect, + unsigned timeout, + wxDirection dir); // Responds to colour changes: passes event on to children. void OnSysColourChanged(wxSysColourChangedEvent& event); @@ -416,6 +457,17 @@ public: virtual void OnInternalIdle(); protected: + // this allows you to implement standard control borders without + // repeating the code in different classes that are not derived from + // wxControl + virtual wxBorder GetDefaultBorderForControl() const; + + // choose the default border for this window + virtual wxBorder GetDefaultBorder() const; + + // Translate wxBORDER_THEME (and other border styles if necessary to the value + // that makes most sense for this Windows environment + virtual wxBorder TranslateBorder(wxBorder border) const; #if wxUSE_MENUS_NATIVE virtual bool DoPopupMenu( wxMenu *menu, int x, int y ); @@ -449,6 +501,8 @@ protected: virtual void DoCaptureMouse(); virtual void DoReleaseMouse(); + virtual void DoEnable(bool enable); + // 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)