1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/msw/combobox.h
3 // Purpose:     wxComboBox class
4 // Author:      Julian Smart
5 // Modified by:
6 // Created:     01/02/97
7 // RCS-ID:      $Id: combobox.h 45818 2007-05-05 13:15:47Z RR $
8 // Copyright:   (c) Julian Smart
9 // Licence:     wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_COMBOBOX_H_
13 #define _WX_COMBOBOX_H_
14 
15 #include "wx/choice.h"
16 
17 #if wxUSE_COMBOBOX
18 
19 // ----------------------------------------------------------------------------
20 // Combobox control
21 // ----------------------------------------------------------------------------
22 
23 class WXDLLEXPORT wxComboBox: public wxChoice
24 {
25 public:
wxComboBox()26     wxComboBox() { }
27 
28     wxComboBox(wxWindow *parent, wxWindowID id,
29             const wxString& value = wxEmptyString,
30             const wxPoint& pos = wxDefaultPosition,
31             const wxSize& size = wxDefaultSize,
32             int n = 0, const wxString choices[] = NULL,
33             long style = 0,
34             const wxValidator& validator = wxDefaultValidator,
35             const wxString& name = wxComboBoxNameStr)
36     {
37         Create(parent, id, value, pos, size, n, choices, style, validator, name);
38     }
39     wxComboBox(wxWindow *parent, wxWindowID id,
40             const wxString& value,
41             const wxPoint& pos,
42             const wxSize& size,
43             const wxArrayString& choices,
44             long style = 0,
45             const wxValidator& validator = wxDefaultValidator,
46             const wxString& name = wxComboBoxNameStr)
47     {
48         Create(parent, id, value, pos, size, choices, style, validator, name);
49     }
50 
51     bool Create(wxWindow *parent,
52                 wxWindowID id,
53                 const wxString& value = wxEmptyString,
54                 const wxPoint& pos = wxDefaultPosition,
55                 const wxSize& size = wxDefaultSize,
56                 int n = 0,
57                 const wxString choices[] = NULL,
58                 long style = 0,
59                 const wxValidator& validator = wxDefaultValidator,
60                 const wxString& name = wxComboBoxNameStr);
61     bool Create(wxWindow *parent,
62                 wxWindowID id,
63                 const wxString& value,
64                 const wxPoint& pos,
65                 const wxSize& size,
66                 const wxArrayString& choices,
67                 long style = 0,
68                 const wxValidator& validator = wxDefaultValidator,
69                 const wxString& name = wxComboBoxNameStr);
70 
71     // List functions: see wxChoice
72 
73     // Text field functions
74     virtual wxString GetValue() const;
75     virtual void SetValue(const wxString& value);
76 
77     // Clipboard operations
78     virtual void Copy();
79     virtual void Cut();
80     virtual void Paste();
81     virtual bool CanCopy() const;
82     virtual bool CanCut() const;
83     virtual bool CanPaste() const;
84     virtual void SetInsertionPoint(long pos);
85     virtual void SetInsertionPointEnd();
86     virtual long GetInsertionPoint() const;
87     virtual wxTextPos GetLastPosition() const;
88     virtual void Replace(long from, long to, const wxString& value);
89     virtual void Remove(long from, long to);
SetSelection(int n)90     virtual void SetSelection(int n) { wxChoice::SetSelection(n); }
91     virtual void SetSelection(long from, long to);
GetSelection()92     virtual int GetSelection() const { return wxChoice::GetSelection(); }
93     virtual void GetSelection(long* from, long* to) const;
94     virtual void SetEditable(bool editable);
95 
96     virtual void Undo();
97     virtual void Redo();
98     virtual bool CanUndo() const;
99     virtual bool CanRedo() const;
100     virtual void SelectAll();
101     virtual bool IsEditable() const;
102     virtual bool HasSelection() const;
103 
104     // implementation only from now on
105     virtual bool MSWCommand(WXUINT param, WXWORD id);
106     bool MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam);
107     virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
108     bool MSWShouldPreProcessMessage(WXMSG *pMsg);
109 
110     WXHWND GetEditHWND() const;
111 
112     // Standard event handling
113     void OnCut(wxCommandEvent& event);
114     void OnCopy(wxCommandEvent& event);
115     void OnPaste(wxCommandEvent& event);
116     void OnUndo(wxCommandEvent& event);
117     void OnRedo(wxCommandEvent& event);
118     void OnDelete(wxCommandEvent& event);
119     void OnSelectAll(wxCommandEvent& event);
120 
121     void OnUpdateCut(wxUpdateUIEvent& event);
122     void OnUpdateCopy(wxUpdateUIEvent& event);
123     void OnUpdatePaste(wxUpdateUIEvent& event);
124     void OnUpdateUndo(wxUpdateUIEvent& event);
125     void OnUpdateRedo(wxUpdateUIEvent& event);
126     void OnUpdateDelete(wxUpdateUIEvent& event);
127     void OnUpdateSelectAll(wxUpdateUIEvent& event);
128 
129     virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
130 
131 private:
132     DECLARE_DYNAMIC_CLASS_NO_COPY(wxComboBox)
133     DECLARE_EVENT_TABLE()
134 };
135 
136 #endif // wxUSE_COMBOBOX
137 #endif
138     // _WX_COMBOBOX_H_
139