///////////////////////////////////////////////////////////////////////////// // Name: wx/msw/hyperlink.h // Purpose: Hyperlink control // Author: Rickard Westerlund // Created: 2010-08-04 // Copyright: (c) 2010 wxWidgets team // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_MSW_HYPERLINK_H_ #define _WX_MSW_HYPERLINK_H_ #include "wx/generic/hyperlink.h" // ---------------------------------------------------------------------------- // wxHyperlinkCtrl // ---------------------------------------------------------------------------- class WXDLLIMPEXP_ADV wxHyperlinkCtrl : public wxGenericHyperlinkCtrl { public: // Default constructor (for two-step construction). wxHyperlinkCtrl() = default; // Constructor. wxHyperlinkCtrl(wxWindow *parent, wxWindowID id, const wxString& label, const wxString& url, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHL_DEFAULT_STYLE, const wxString& name = wxASCII_STR(wxHyperlinkCtrlNameStr)) { (void)Create(parent, id, label, url, pos, size, style, name); } // Creation function (for two-step construction). bool Create(wxWindow *parent, wxWindowID id, const wxString& label, const wxString& url, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHL_DEFAULT_STYLE, const wxString& name = wxASCII_STR(wxHyperlinkCtrlNameStr)); virtual ~wxHyperlinkCtrl(); // overridden base class methods // ----------------------------- virtual void SetURL(const wxString &url) override; virtual void SetLabel(const wxString &label) override; // Native control doesn't change appearance on hover, so we don't support // changing hover colour. virtual wxColour GetHoverColour() const override; virtual wxColour GetNormalColour() const override; virtual void SetNormalColour(const wxColour &colour) override; virtual wxColour GetVisitedColour() const override; virtual void SetVisitedColour(const wxColour &colour) override; // overridden/inherited wxWindow methods virtual bool Enable(bool enable = true) override; virtual bool SetForegroundColour(const wxColour& colour) override; virtual wxVisualAttributes GetDefaultAttributes() const override; static wxVisualAttributes GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); protected: virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const override; virtual wxSize DoGetBestClientSize() const override; private: virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) override; bool MSWAreCustomColoursEnabled() const; void MSWEnableCustomColours(); // This is set to the previously used colour when the control is disabled, // to be able to restore it later when the control is enabled again. wxColour m_savedEnabledColour; wxDECLARE_DYNAMIC_CLASS( wxHyperlinkCtrl ); }; #endif // _WX_MSW_HYPERLINK_H_