X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/65bc172c9776514d64ced1317709202ee4123cd8..961dd75341aaa5083098fefd5c1074d8308b5732:/include/wx/msw/control.h diff --git a/include/wx/msw/control.h b/include/wx/msw/control.h index 8c2310844d..0856025577 100644 --- a/include/wx/msw/control.h +++ b/include/wx/msw/control.h @@ -12,7 +12,7 @@ #ifndef _WX_CONTROL_H_ #define _WX_CONTROL_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "control.h" #endif @@ -22,12 +22,13 @@ class WXDLLEXPORT wxControl : public wxControlBase { public: - wxControl(); - wxControl(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxControlNameStr) + wxControl() { } + + wxControl(wxWindow *parent, wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = 0, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxControlNameStr) { Create(parent, id, pos, size, style, validator, name); } @@ -43,9 +44,18 @@ public: // Simulates an event virtual void Command(wxCommandEvent& event) { ProcessCommand(event); } + // implementation from now on // -------------------------- + virtual wxVisualAttributes GetDefaultAttributes() const + { + return GetClassDefaultAttributes(GetWindowVariant()); + } + + static wxVisualAttributes + GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); + // Calls the callback and appropriate event handlers bool ProcessCommand(wxCommandEvent& event); @@ -58,27 +68,18 @@ public: virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *WXUNUSED(item)) { return FALSE; }; virtual bool MSWOnMeasure(WXMEASUREITEMSTRUCT *WXUNUSED(item)) { return FALSE; }; - wxArrayLong GetSubcontrols() { return m_subControls; } + const wxArrayLong& GetSubcontrols() const { return m_subControls; } void OnEraseBackground(wxEraseEvent& event); virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, WXUINT message, WXWPARAM wParam, WXLPARAM lParam); -#if WXWIN_COMPATIBILITY - virtual void SetButtonColour(const wxColour& WXUNUSED(col)) { } - wxColour* GetButtonColour() const { return NULL; } - - virtual void SetLabelFont(const wxFont& font); - virtual void SetButtonFont(const wxFont& font); - wxFont& GetLabelFont() const; - wxFont& GetButtonFont() const; -#endif // WXWIN_COMPATIBILITY - protected: // choose the default border for this window virtual wxBorder GetDefaultBorder() const; + // return default best size (doesn't really make any sense, override this) virtual wxSize DoGetBestSize() const; // create the control of the given Windows class: this is typically called @@ -114,22 +115,22 @@ protected: // default style for the control include WS_TABSTOP if it AcceptsFocus() virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const; + // this is a helper for the derived class GetClassDefaultAttributes() + // implementation: it returns the right colours for the classes which + // contain something else (e.g. wxListBox, wxTextCtrl, ...) instead of + // being simple controls (such as wxButton, wxCheckBox, ...) + static wxVisualAttributes + GetCompositeControlsDefaultAttributes(wxWindowVariant variant); + + // for controls like radiobuttons which are really composite this array // holds the ids (not HWNDs!) of the sub controls wxArrayLong m_subControls; private: - DECLARE_ABSTRACT_CLASS(wxControl) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxControl) DECLARE_EVENT_TABLE() }; - -#if WXWIN_COMPATIBILITY - inline wxFont& wxControl::GetLabelFont() const { return (wxFont &)GetFont(); } - inline wxFont& wxControl::GetButtonFont() const { return (wxFont &)GetFont(); } - inline void wxControl::SetLabelFont(const wxFont& font) { SetFont(font); } - inline void wxControl::SetButtonFont(const wxFont& font) { SetFont(font); } -#endif // WXWIN_COMPATIBILITY - #endif // _WX_CONTROL_H_