neoWidgets
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
ControlTypes.h
1 #ifndef NEO_CONTROL_TYPES_H
2 #define NEO_CONTROL_TYPES_H
3 
4 namespace neo
5 {
6 
7 class Button : public Control
8 {
9 public:
10  Button() {}
11  Button(HWND parent, const tstring& text, const Rect& r, const ControlParam& p = ControlParam())
12  {
13  Create(parent, text, r, p);
14  }
15 
16  void Create(HWND parent, const tstring& text, const Rect& r, const ControlParam& p = ControlParam());
17 
18  void SimulateClick();
19  bool IsChecked() const;
20  void SetChecked(bool checked);
21  HBITMAP GetBitmap() const;
22  void SetBitmap(HBITMAP bitmap);
23  void Shrink();
24 };
25 
26 class RadioButton : public Button
27 {
28 public:
29  RadioButton() {}
30  RadioButton(HWND parent, const tstring& text, const Rect& r, const ControlParam& p = ControlParam())
31  {
32  Create(parent, text, r, p);
33  }
34 
35  void Create(HWND parent, const tstring& text, const Rect& r, const ControlParam& p = ControlParam());
36 };
37 
38 class CheckBox : public Button
39 {
40 public:
41  CheckBox() {}
42  CheckBox(HWND parent, const tstring& text, const Rect& r, const ControlParam& p = ControlParam())
43  {
44  Create(parent, text, r, p);
45  }
46 
47  void Create(HWND parent, const tstring& text, const Rect& r, const ControlParam& p = ControlParam());
48 };
49 
50 class GroupBox : public Button
51 {
52 public:
53  GroupBox() {}
54  GroupBox(HWND parent, const tstring& text, const Rect& r, const ControlParam& p = ControlParam())
55  {
56  Create(parent, text, r, p);
57  }
58 
59  void Create(HWND parent, const tstring& text, const Rect& r, const ControlParam& p = ControlParam());
60 };
61 
66 {
67 public:
68  virtual ~ScrollBarIF() {}
69 
70  virtual HWND GetScrollBarHWND() const = 0;
71  virtual int GetBarType() const = 0;
72 
73  int GetPos() const;
74  int SetPos(int pos, bool redraw = TRUE);
75 
76  bool GetRange(int* minPos, int* maxPos) const;
77  bool SetRange(int minPos, int maxPos, bool redraw = TRUE);
78 
79  bool GetScrollInfo(SCROLLINFO& info) const;
80  int SetScrollInfo(SCROLLINFO& info, bool redraw = TRUE);
81 };
82 
83 class ScrollBar : public Control, public ScrollBarIF
84 {
85 public:
86  ScrollBar() {}
87  ScrollBar(HWND parent, const Rect& r, const ControlParam& p = ControlParam())
88  {
89  Create(parent, r, p);
90  }
91 
92  void Create(HWND parent, const Rect& r, const ControlParam& p = ControlParam());
93 
94  // ScrollBarIF
95  virtual HWND GetScrollBarHWND() const override { return GetHandle(); }
96  virtual int GetBarType() const override { return SB_CTL; }
97 };
98 
105 {
106 public:
107  WindowScrollBar(HWND w, int scrollBarType);
108 
109  // ScrollBarIF
110  virtual HWND GetScrollBarHWND() const override { return window; }
111  virtual int GetBarType() const override { return bar; }
112 private:
113  HWND window;
114  int bar;
115 };
116 
121 {
122 public:
123  WindowScrollBarH(HWND w = 0) : WindowScrollBar(w, SB_HORZ) {}
124 };
125 
130 {
131 public:
132  WindowScrollBarV(HWND w = 0) : WindowScrollBar(w, SB_VERT) {}
133 };
134 
135 class StaticCtrl : public Control
136 {
137 public:
138  StaticCtrl() {}
139  StaticCtrl(HWND parent, const tstring& text, const Rect& r, const ControlParam& p = ControlParam())
140  {
141  Create(parent, text, r, p);
142  }
143 
144  void Create(HWND parent, const tstring& text, const Rect& r, const ControlParam& p = ControlParam());
145 
149  void Shrink();
150 
151  HBITMAP GetBitmap() const;
152  HBITMAP SetBitmap(HBITMAP bitmap);
153 
154  HCURSOR GetCursor() const;
155  HCURSOR SetCursor(HCURSOR cursor);
156 
157  HENHMETAFILE GetMetaFile() const;
158  HENHMETAFILE SetMetaFile(HENHMETAFILE metafile);
159 
160  HICON GetIcon() const;
161  HICON SetIcon(HICON icon);
162 };
163 
168 {
169 public:
170  virtual ~TextBoxIF() {}
171 
172  virtual HWND GetEditHWND() const = 0;
173 
174  virtual void Copy();
175  virtual void Cut();
176  virtual void Paste();
177 
178  virtual void Undo();
179  virtual void Redo();
180  virtual bool CanUndo();
181  virtual bool CanRedo();
182 
183  virtual void Replace(int from, int to, const tstring& text);
184  virtual int GetLastPosition() const;
185  virtual tstring GetTextRange(int from, int to);
186  virtual void GetSelection(int& from, int& to);
187  virtual void SetSelection(int from, int to);
188  virtual void SelectAll();
189  virtual void SelectNone();
190 
191  virtual void SetMaxLength(int len);
192 
193  virtual void SetHint(const tstring& hint);
194  virtual tstring GetHint() const;
195 
196  virtual void SetMargin(int x);
197  virtual int GetMargin() const;
198 
199  void Remove(int from, int to) { Replace(from, to, tstring()); }
200  void SetInsertionPoint(int pos) { SetSelection(pos, pos); }
201  void SetInsertionPointEnd() { SetInsertionPoint(GetLastPosition()); }
202  int GetInsertionPoint() { int f,t; GetSelection(f, t); return f; }
203  tstring GetTextSelection() { return GetTextRange(0, -1); }
204 };
205 
206 class TextBox : public Control, public TextBoxIF
207 {
208 public:
209  TextBox() {}
210  TextBox(HWND parent, const Rect& r, const ControlParam& p = ControlParam())
211  {
212  Create(parent, r, p);
213  }
214 
215  void Create(HWND parent, const Rect& r, const ControlParam& p = ControlParam());
216 
217  // TextBoxIF
218  virtual HWND GetEditHWND() const override { return GetHandle(); }
219  virtual int GetLastPosition() const override;
220 
221  int GetLineCount() const;
222  int XYToPosition(int x, int y) const;
223  bool PositionToXY(int pos, int& x, int& y);
224  int GetLineLength(int lineIndex);
225  tstring GetLineText(int lineIndex);
226 
227  bool IsReadOnly() const;
228  void SetReadOnly(bool readonly);
229 
230  bool IsMultiLine() const;
231 
232  TCHAR GetPasswordChar();
233  void SetPasswordChar(TCHAR c);
234 };
235 
240 {
241 public:
242  virtual ~ListBoxIF() {}
243 
244  virtual HWND GetListBoxHWND() const = 0;
245 
246  virtual void Clear();
247  virtual void Delete(int i);
248  virtual void SetItemData(int i, void* itemData);
249  virtual void* GetItemData(int i);
250  virtual int Append(const tstring& item);
251  virtual int Append(const tstring& item, void* itemData);
252  virtual int Insert(const tstring& item, int i);
253  virtual int Insert(const tstring& item, int i, void* itemData);
254  virtual void SetItem(const tstring& item, int i);
255  virtual tstring GetItem(int i);
256  virtual int GetItemCount();
257  virtual bool IsEmpty();
258  virtual int Find(const tstring& item);
259 
260  // single selection support
261  virtual void SelectItem(int i);
262  virtual void SelectNone();
263  virtual bool IsSelected(int i);
264  virtual int GetSelectedIndex();
265  virtual tstring GetSelectedString();
266 };
267 
268 class ListBox : public Control, public ListBoxIF
269 {
270 public:
271  ListBox() {}
272  ListBox(HWND parent, const Rect& r, const ControlParam& p = ControlParam())
273  {
274  Create(parent, r, p);
275  }
276 
277  void Create(HWND parent, const Rect& r, const ControlParam& p = ControlParam());
278 
279  // ListBoxIF
280  virtual HWND GetListBoxHWND() const override { return GetHandle(); }
281  // multi selection support
282  virtual void SelectItem(int i) override;
283  virtual bool IsSelected(int i) override;
284 
285  virtual std::vector<int> GetSelectedIndices();
286  bool SelectItem(int i, bool select);
287  bool HasMultiSelect();
288 };
289 
290 class ComboBox : public Control, public TextBoxIF, public ListBoxIF
291 {
292 public:
293  ComboBox() {}
294  ComboBox(HWND parent, const Rect& r, const ControlParam& p = ControlParam())
295  {
296  Create(parent, r, p);
297  }
298 
299  void Create(HWND parent, const Rect& r, const ControlParam& p = ControlParam());
300 
301  // TextBoxIF
302  virtual HWND GetEditHWND() const override;
303 
304  // ListBoxIF
305  virtual HWND GetListBoxHWND() const override;
306 };
307 
308 class ProgressBar : public Control
309 {
310 public:
311  ProgressBar() {}
312  ProgressBar(HWND parent, const Rect& r, const ControlParam& p = ControlParam())
313  {
314  Create(parent, r, p);
315  }
316 
317  void Create(HWND parent, const Rect& r, const ControlParam& p = ControlParam());
318 
319  void SetStepSize(int step);
320  int GetStepSize();
321  void Step();
322  void Advance(int delta);
323 
324  void SetRange(int min, int max);
325  int GetMin();
326  int GetMax();
327 
328  void SetPos(int pos);
329  int GetPos();
330 
331  void StateNormal();
332  void StateError();
333  void StatePaused();
334  bool IsNormal();
335  bool IsError();
336  bool IsPaused();
337 
338  void SetMarquee(bool marquee);
339  bool IsMarquee();
340 };
341 
342 class StatusBar : public Control
343 {
344 public:
345  StatusBar() {}
346  StatusBar(HWND parent, const ControlParam& p = ControlParam())
347  {
348  Create(parent, p);
349  }
350 
351  void Create(HWND parent, const ControlParam& p = ControlParam());
352 
353  Rect GetPaneRect(int i) const;
354  void SetPanes(const int* paneWidths, int numPanes);
355 
356  tstring GetPaneText(int i) const;
357  void SetPaneText(int i, const tstring& text, int drawingOperation = 0);
358 
359  HICON GetIcon(int i) const;
360  void SetIcon(int i, HICON icon);
361 
362  tstring GetHint(int i) const;
363  void SetHint(int i, const tstring& text);
364 };
365 
369 class HeaderCtrl : public Control
370 {
371 public:
372  HeaderCtrl() {}
373  HeaderCtrl(HWND parent, const Rect& r, const ControlParam& p = ControlParam())
374  {
375  Create(parent, r, p);
376  }
377 
378  void Create(HWND parent, const Rect& r, const ControlParam& p = ControlParam());
379 };
380 
384 class ListCtrl : public Control
385 {
386 public:
387  ListCtrl() {}
388  ListCtrl(HWND parent, const Rect& r, const ControlParam& p = ControlParam())
389  {
390  Create(parent, r, p);
391  }
392 
393  void Create(HWND parent, const Rect& r, const ControlParam& p = ControlParam());
394 
395  HeaderCtrl GetHeaderCtrl() const;
396 
400  struct ColumnData : public LVCOLUMN
401  {
402  ColumnData() { ZeroMemory(this, sizeof(ColumnData)); }
403 
404  ColumnData& GetFmt() { mask |= LVCF_FMT; return *this; }
405  ColumnData& SetFmt(int pFmt) { mask |= LVCF_FMT; fmt = pFmt; return *this; }
406  ColumnData& GetWidth() { mask |= LVCF_WIDTH; return *this; }
407  ColumnData& SetWidth(int width) { mask |= LVCF_WIDTH; cx = width; return *this; }
408  ColumnData& GetText(TCHAR* buffer, int bufferSize) { mask |= LVCF_TEXT; pszText = buffer; cchTextMax = bufferSize; return *this; }
409  ColumnData& SetText(const TCHAR* text) { mask |= LVCF_TEXT; pszText = const_cast<TCHAR*>(text); return *this; }
410  ColumnData& GetSubItem() { mask |= LVCF_SUBITEM; return *this; }
411  ColumnData& SetSubItem(int subitem) { mask |= LVCF_SUBITEM; iSubItem = subitem; return *this; }
412  };
413 
417  struct ItemData : public LVITEM
418  {
419  ItemData() { ZeroMemory(this, sizeof(ItemData)); }
420 
421  ItemData& Item(int item, int subItem) { iItem = item; iSubItem = subItem; return *this; }
422  ItemData& GetText(TCHAR* buffer, int bufferSize) { mask |= LVIF_TEXT; pszText = buffer; cchTextMax = bufferSize; return *this; }
423  ItemData& SetText(const TCHAR* text) { mask |= LVIF_TEXT; pszText = const_cast<TCHAR*>(text); return *this; }
424  ItemData& GetParam() { mask |= LVIF_PARAM; return *this; }
425  ItemData& SetParam(LPARAM param) { mask |= LVIF_PARAM; lParam = param; return *this; }
426  ItemData& GetState(UINT pStateMask) { mask |= LVIF_STATE; stateMask = pStateMask; return *this; }
427  ItemData& SetState(UINT pState, UINT pStateMask) { mask |= LVIF_STATE; state = pState; stateMask = pStateMask; return *this; }
428  };
429 
430  int GetColumnCount() const;
431 
432  void GetColumn(int index, ColumnData& data) const;
433  void SetColumn(int index, ColumnData& data);
434 
435  int InsertColumn(int index, ColumnData& data);
436  int InsertColumn(int index, const tstring& text, int format = LVCFMT_LEFT, int width = LVSCW_AUTOSIZE_USEHEADER);
437 
438  int AppendColumn(const tstring& text, int format = LVCFMT_LEFT, int width = LVSCW_AUTOSIZE_USEHEADER);
439 
440  void DeleteColumn(int index);
441 
447  void SetColumnWidth(int index, int width);
448  int GetColumnWidth(int index) const;
449 
453  void AutoSizeColumns(int col = -1);
454 
455  int GetItemCount() const;
456  void SetItemCount(int count);
457 
461  void GetItem(ItemData& data);
462 
466  void SetItem(ItemData& data);
467  void SetItem(int index, int column, const tstring& text);
468 
472  int InsertItem(ItemData& data);
473  int InsertItem(int index, const tstring& text);
474 
475  int AppendItem(const tstring& text);
476 
477  void DeleteItem(int index);
478 
479  UINT GetItemState(int index, LPARAM stateMask) const;
480  void SetItemState(int index, UINT state, UINT stateMask);
481 
482  tstring GetItemText(int index, int column = 0) const;
483  void SetItemText(const tstring& text, int index, int column = 0);
484 
485  bool IsItemSelected(int item) const;
486  void SelectItem(bool select, int item);
487 
488  HWND BeginEdit(int index);
489  void EndEdit();
490 
491  COLORREF GetBkColor() const;
492  void SetBkColor(COLORREF color);
493 
494  COLORREF GetTextColor() const;
495  void SetTextColor(COLORREF color);
496 
497  COLORREF GetTextBkColor() const;
498  void SetTextBkColor(COLORREF color);
499 
503  void EnsureVisible(int index, bool partialOk = false);
504 
505  DWORD GetExtendedListStyle() const;
506  void SetExtendedListStyle(DWORD style);
507 };
508 
509 class TabCtrl : public Control
510 {
511 public:
512  TabCtrl();
513  TabCtrl(HWND parent, const Rect& r, const ControlParam& p = ControlParam())
514  {
515  Create(parent, r, p);
516  }
517 
518  void Create(HWND parent, const Rect& r, const ControlParam& p = ControlParam());
519 
520  Rect CalculateDisplayArea(const RECT& windowRect) const;
521  Rect CurrentDisplayArea() const { return CalculateDisplayArea(GetRectOnParent()); }
522  Rect CalculateWindowRect(const RECT& displayArea) const;
523 
524  int GetItemCount() const;
525 
526  int InsertItem(int index, const TCITEM& item);
527  int InsertItem(int index, const tstring& text);
528 
529  int AppendItem(const tstring& text);
530 
531  void DeleteItem(int index);
532 
533  void DeleteAllItems();
534 
535  void GetItem(int index, TCITEM& item) const;
536 
537  void SetItem(int index, TCITEM& item);
538  void SetItem(int index, const tstring& text);
539 
543  Rect GetItemRect(int index) const;
544 
548  void SetItemSize(int width, int height);
549 
550  void SetMinTabWidth(int width);
551 
552  void SetPadding(int width, int height);
553 
557  int GetRowCount() const;
558 
559  int GetSelection() const;
560  int SetSelection(int index);
561 
565  int GetButtonFocus() const;
569  void SetButtonFocus(int index);
570 
571  void DeselectAll(bool excludeFocus = true);
572 };
573 
574 } // namespace neo
575 
576 #endif
void SetItem(ItemData &data)
Definition: ControlTypes.inl:978
void SetItemSize(int width, int height)
Set a fixed size for all tabs.
Definition: ControlTypes.inl:1189
Common interface for all scrollbars.
Definition: ControlTypes.h:65
Base class for standard Windows controls.
Definition: Control.h:73
Definition: ControlTypes.h:509
Definition: ControlTypes.h:290
void GetItem(ItemData &data)
Definition: ControlTypes.inl:973
void SetColumnWidth(int index, int width)
Definition: ControlTypes.inl:935
void Shrink()
Shrink the static so it has just enough room for it&#39;s text.
Definition: ControlTypes.inl:152
Common interface for ListBox and ComboBox.
Definition: ControlTypes.h:239
Definition: ControlTypes.h:38
Definition: ControlTypes.h:26
Horizontal window scrollbar.
Definition: ControlTypes.h:120
Represents the scrollbars attached to the sides of a window.
Definition: ControlTypes.h:104
TODO: needs methods.
Definition: ControlTypes.h:384
void EnsureVisible(int index, bool partialOk=false)
Definition: ControlTypes.inl:1091
Holds optional control parameters.
Definition: Control.h:10
Definition: ControlTypes.h:83
Rect GetRectOnParent() const
Definition: WindowBase.inl:416
Vertical window scrollbar.
Definition: ControlTypes.h:129
Common interface for TextBox and ComboBox.
Definition: ControlTypes.h:167
Definition: ControlTypes.h:7
Definition: ControlTypes.h:342
TODO: needs methods.
Definition: ControlTypes.h:369
Used to get or set values of a list item.
Definition: ControlTypes.h:417
void AutoSizeColumns(int col=-1)
Definition: ControlTypes.inl:945
int GetButtonFocus() const
In button mode (TCS_BUTTONS), the focused button may be different from the selected button...
Definition: ControlTypes.inl:1219
int GetRowCount() const
Only works with TCS_MULTILINE.
Definition: ControlTypes.inl:1204
Windows RECT structure with constructor.
Definition: Rect.h:108
Definition: ControlTypes.h:50
Definition: ControlTypes.h:135
Rect GetItemRect(int index) const
Definition: ControlTypes.inl:1182
int InsertItem(ItemData &data)
Definition: ControlTypes.inl:988
Definition: ControlTypes.h:206
void SetButtonFocus(int index)
Definition: ControlTypes.inl:1224
Used to get or set values of a list column.
Definition: ControlTypes.h:400
Definition: ControlTypes.h:308
Definition: ControlTypes.h:268