1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     wxControl class 
   4 // Author:      Julian Smart 
   8 // Copyright:   (c) Julian Smart 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 #ifndef _WX_CONTROL_H_ 
  13 #define _WX_CONTROL_H_ 
  16     #pragma interface "control.h" 
  19 #include "wx/dynarray.h" 
  22 class WXDLLEXPORT wxControl 
: public wxControlBase
 
  26     wxControl(wxWindow 
*parent
, wxWindowID id
, 
  27               const wxPoint
& pos 
= wxDefaultPosition
, 
  28               const wxSize
& size 
= wxDefaultSize
, long style 
= 0, 
  29               const wxValidator
& validator 
= wxDefaultValidator
, 
  30               const wxString
& name 
= wxControlNameStr
) 
  32         Create(parent
, id
, pos
, size
, style
, validator
, name
); 
  35     bool Create(wxWindow 
*parent
, wxWindowID id
, 
  36             const wxPoint
& pos 
= wxDefaultPosition
, 
  37             const wxSize
& size 
= wxDefaultSize
, long style 
= 0, 
  38             const wxValidator
& validator 
= wxDefaultValidator
, 
  39             const wxString
& name 
= wxControlNameStr
); 
  44     virtual void Command(wxCommandEvent
& event
) { ProcessCommand(event
); } 
  46     // implementation from now on 
  47     // -------------------------- 
  49     // Calls the callback and appropriate event handlers 
  50     bool ProcessCommand(wxCommandEvent
& event
); 
  54     virtual bool MSWOnNotify(int idCtrl
, WXLPARAM lParam
, WXLPARAM 
*result
); 
  57     // For ownerdraw items 
  58     virtual bool MSWOnDraw(WXDRAWITEMSTRUCT 
*WXUNUSED(item
)) { return FALSE
; }; 
  59     virtual bool MSWOnMeasure(WXMEASUREITEMSTRUCT 
*WXUNUSED(item
)) { return FALSE
; }; 
  61     wxArrayLong 
GetSubcontrols() { return m_subControls
; } 
  63     void OnEraseBackground(wxEraseEvent
& event
); 
  65     virtual WXHBRUSH 
OnCtlColor(WXHDC pDC
, WXHWND pWnd
, WXUINT nCtlColor
, 
  66             WXUINT message
, WXWPARAM wParam
, WXLPARAM lParam
); 
  68 #if WXWIN_COMPATIBILITY 
  69     virtual void SetButtonColour(const wxColour
& WXUNUSED(col
)) { } 
  70     wxColour
* GetButtonColour() const { return NULL
; } 
  72     virtual void SetLabelFont(const wxFont
& font
); 
  73     virtual void SetButtonFont(const wxFont
& font
); 
  74     wxFont
& GetLabelFont() const; 
  75     wxFont
& GetButtonFont() const; 
  76 #endif // WXWIN_COMPATIBILITY 
  79     // choose the default border for this window 
  80     virtual wxBorder 
GetDefaultBorder() const; 
  82     virtual wxSize 
DoGetBestSize() const; 
  84     // create the control of the given Windows class: this is typically called 
  85     // from Create() method of the derived class passing its label, pos and 
  86     // size parameter (style parameter is not needed because m_windowStyle is 
  87     // supposed to had been already set and so is used instead when this 
  88     // function is called) 
  89     bool MSWCreateControl(const wxChar 
*classname
, 
  90                           const wxString
& label
, 
  94     // NB: the method below is deprecated now, with MSWGetStyle() the method 
  95     //     above should be used instead! Once all the controls are updated to 
  96     //     implement MSWGetStyle() this version will disappear. 
  98     // create the control of the given class with the given style (combination 
  99     // of WS_XXX flags, i.e. Windows style, not wxWindows one), returns 
 100     // FALSE if creation failed 
 102     // All parameters except classname and style are optional, if the 
 103     // size/position are not given, they should be set later with SetSize() 
 104     // and, label (the title of the window), of course, is left empty. The 
 105     // extended style is determined from the style and the app 3D settings 
 106     // automatically if it's not specified explicitly. 
 107     bool MSWCreateControl(const wxChar 
*classname
, 
 109                           const wxPoint
& pos 
= wxDefaultPosition
, 
 110                           const wxSize
& size 
= wxDefaultSize
, 
 111                           const wxString
& label 
= wxEmptyString
, 
 112                           WXDWORD exstyle 
= (WXDWORD
)-1); 
 114     // default style for the control include WS_TABSTOP if it AcceptsFocus() 
 115     virtual WXDWORD 
MSWGetStyle(long style
, WXDWORD 
*exstyle
) const; 
 117     // for controls like radiobuttons which are really composite this array 
 118     // holds the ids (not HWNDs!) of the sub controls 
 119     wxArrayLong m_subControls
; 
 122     DECLARE_DYNAMIC_CLASS_NO_COPY(wxControl
) 
 123     DECLARE_EVENT_TABLE() 
 127 #if WXWIN_COMPATIBILITY 
 128     inline wxFont
& wxControl::GetLabelFont() const { return (wxFont 
&)GetFont(); } 
 129     inline wxFont
& wxControl::GetButtonFont() const { return (wxFont 
&)GetFont(); } 
 130     inline void wxControl::SetLabelFont(const wxFont
& font
) { SetFont(font
); } 
 131     inline void wxControl::SetButtonFont(const wxFont
& font
) { SetFont(font
); } 
 132 #endif // WXWIN_COMPATIBILITY