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