set m_isBeingDeleted to true (only) in SendDestroyEvent(); call it as early as possib...
[wxWidgets.git] / include / wx / os2 / control.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/os2/control.h
3 // Purpose: wxControl class
4 // Author: David Webster
5 // Modified by:
6 // Created: 09/17/99
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 #include "wx/dynarray.h"
16
17 // General item class
18 class WXDLLIMPEXP_CORE wxControl : public wxControlBase
19 {
20 DECLARE_ABSTRACT_CLASS(wxControl)
21
22 public:
23 wxControl();
24 wxControl( wxWindow* pParent
25 ,wxWindowID vId
26 ,const wxPoint& rPos = wxDefaultPosition
27 ,const wxSize& rSize = wxDefaultSize
28 ,long lStyle = 0
29 ,const wxValidator& rValidator = wxDefaultValidator
30 ,const wxString& rsName = wxControlNameStr
31 )
32 {
33 Create( pParent, vId, rPos, rSize, lStyle, rValidator, rsName );
34 }
35
36 bool Create( wxWindow* pParent
37 ,wxWindowID vId
38 ,const wxPoint& rPos = wxDefaultPosition
39 ,const wxSize& rSize = wxDefaultSize
40 ,long lStyle = 0
41 ,const wxValidator& rValidator = wxDefaultValidator
42 ,const wxString& rsName = wxControlNameStr
43 );
44
45 virtual void SetLabel(const wxString& rsLabel);
46 virtual wxString GetLabel() const { return m_label; }
47
48 //
49 // Simulates an event
50 //
51 virtual void Command(wxCommandEvent& rEvent) { ProcessCommand(rEvent); }
52
53 //
54 // Implementation from now on
55 // --------------------------
56 //
57
58 //
59 // Calls the callback and appropriate event handlers
60 //
61 bool ProcessCommand(wxCommandEvent& rEvent);
62
63 //
64 // For ownerdraw items
65 //
66 virtual bool OS2OnDraw(WXDRAWITEMSTRUCT* WXUNUSED(pItem)) { return false; };
67 virtual long OS2OnMeasure(WXMEASUREITEMSTRUCT* WXUNUSED(pItem)) { return 0L; };
68
69 wxArrayLong& GetSubcontrols() { return m_aSubControls; }
70 void OnEraseBackground(wxEraseEvent& rEvent);
71 virtual WXHBRUSH OnCtlColor( WXHDC hDC
72 ,WXHWND pWnd
73 ,WXUINT nCtlColor
74 ,WXUINT uMessage
75 ,WXWPARAM wParam
76 ,WXLPARAM lParam
77 );
78
79 public:
80 //
81 // For controls like radiobuttons which are really composite
82 //
83 wxArrayLong m_aSubControls;
84
85 virtual wxSize DoGetBestSize(void) const;
86
87 //
88 // Create the control of the given PM class
89 //
90 bool OS2CreateControl( const wxChar* zClassname
91 ,const wxString& rsLabel
92 ,const wxPoint& rPos
93 ,const wxSize& rSize
94 ,long lStyle
95 );
96 //
97 // Create the control of the given class with the given style, returns false
98 // if creation failed.
99 //
100 bool OS2CreateControl( const wxChar* zClassname
101 ,WXDWORD dwStyle
102 ,const wxPoint& rPos = wxDefaultPosition
103 ,const wxSize& rSize = wxDefaultSize
104 ,const wxString& rsLabel = wxEmptyString
105 ,WXDWORD dwExstyle = (WXDWORD)-1
106 );
107
108 //
109 // Default style for the control include WS_TABSTOP if it AcceptsFocus()
110 //
111 virtual WXDWORD OS2GetStyle( long lStyle
112 ,WXDWORD* pdwExstyle
113 ) const;
114
115 inline int GetXComp(void) const {return m_nXComp;}
116 inline int GetYComp(void) const {return m_nYComp;}
117 inline void SetXComp(const int nXComp) {m_nXComp = nXComp;}
118 inline void SetYComp(const int nYComp) {m_nYComp = nYComp;}
119
120 private:
121 int m_nXComp;
122 int m_nYComp;
123
124 wxString m_label;
125 WXDWORD m_dwStyle;
126
127 DECLARE_EVENT_TABLE()
128 }; // end of wxControl
129
130 #endif // _WX_CONTROL_H_