more fixes to compilation warnings from HP-UX build log. About 30% more to go
[wxWidgets.git] / include / wx / msw / control.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: control.h
3 // Purpose: wxControl class
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 01/02/97
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_CONTROL_H_
13 #define _WX_CONTROL_H_
14
15 #ifdef __GNUG__
16 #pragma interface "control.h"
17 #endif
18
19 #include "wx/dynarray.h"
20
21 WXDLLEXPORT_DATA(extern const wxChar*) wxControlNameStr;
22
23 // General item class
24 class WXDLLEXPORT wxControl : public wxControlBase
25 {
26 DECLARE_ABSTRACT_CLASS(wxControl)
27
28 public:
29 wxControl();
30 wxControl(wxWindow *parent, wxWindowID id,
31 const wxPoint& pos = wxDefaultPosition,
32 const wxSize& size = wxDefaultSize, long style = 0,
33 #if wxUSE_VALIDATORS
34 const wxValidator& validator = wxDefaultValidator,
35 #endif
36 const wxString& name = wxControlNameStr)
37 {
38 Create(parent, id, pos, size, style, validator, name);
39 }
40
41 bool Create(wxWindow *parent, wxWindowID id,
42 const wxPoint& pos = wxDefaultPosition,
43 const wxSize& size = wxDefaultSize, long style = 0,
44 #if wxUSE_VALIDATORS
45 const wxValidator& validator = wxDefaultValidator,
46 #endif
47 const wxString& name = wxControlNameStr);
48
49 virtual ~wxControl();
50
51 // Simulates an event
52 virtual void Command(wxCommandEvent& event) { ProcessCommand(event); }
53
54 // implementation from now on
55 // --------------------------
56
57 // Calls the callback and appropriate event handlers
58 bool ProcessCommand(wxCommandEvent& event);
59
60 // MSW-specific
61 #ifdef __WIN95__
62 virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
63 #endif // Win95
64
65 // For ownerdraw items
66 virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *WXUNUSED(item)) { return FALSE; };
67 virtual bool MSWOnMeasure(WXMEASUREITEMSTRUCT *WXUNUSED(item)) { return FALSE; };
68
69 wxArrayLong GetSubcontrols() { return m_subControls; }
70
71 void OnEraseBackground(wxEraseEvent& event);
72
73 virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
74 WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
75
76 #if WXWIN_COMPATIBILITY
77 virtual void SetButtonColour(const wxColour& WXUNUSED(col)) { }
78 wxColour* GetButtonColour() const { return NULL; }
79
80 inline virtual void SetLabelFont(const wxFont& font);
81 inline virtual void SetButtonFont(const wxFont& font);
82 inline wxFont& GetLabelFont() const;
83 inline wxFont& GetButtonFont() const;
84
85 // Adds callback
86 inline void Callback(const wxFunction function);
87
88 wxFunction GetCallback() { return m_callback; }
89
90 protected:
91 wxFunction m_callback; // Callback associated with the window
92 #endif // WXWIN_COMPATIBILITY
93
94 protected:
95 // for controls like radiobuttons which are really composite this array
96 // holds the ids (not HWNDs!) of the sub controls
97 wxArrayLong m_subControls;
98
99 virtual wxSize DoGetBestSize() const;
100
101 // create the control of the given class with the given style, returns FALSE
102 // if creation failed
103 //
104 // All parameters except classname and style are optional, if the
105 // size/position are not given, they should be set later with SetSize() and,
106 // label (the title of the window), of course, is left empty. The extended
107 // style is determined from the style and the app 3D settings automatically
108 // if it's not specified explicitly.
109 bool MSWCreateControl(const wxChar *classname,
110 WXDWORD style,
111 const wxPoint& pos = wxDefaultPosition,
112 const wxSize& size = wxDefaultSize,
113 const wxString& label = wxEmptyString,
114 WXDWORD exstyle = (WXDWORD)-1);
115
116 // determine the extended styles combination for this window (may slightly
117 // modify style parameter, this is why it's non const)
118 WXDWORD GetExStyle(WXDWORD& style, bool *want3D) const;
119
120 private:
121 DECLARE_EVENT_TABLE()
122 };
123
124
125 #if WXWIN_COMPATIBILITY
126 inline void wxControl::Callback(const wxFunction f) { m_callback = f; };
127 inline wxFont& wxControl::GetLabelFont() const { return GetFont(); }
128 inline wxFont& wxControl::GetButtonFont() const { return GetFont(); }
129 inline void wxControl::SetLabelFont(const wxFont& font) { SetFont(font); }
130 inline void wxControl::SetButtonFont(const wxFont& font) { SetFont(font); }
131 #endif // WXWIN_COMPATIBILITY
132
133 #endif
134 // _WX_CONTROL_H_