]> git.saurik.com Git - wxWidgets.git/blame - include/wx/msw/tbar95.h
Link with bufferoverflowu.lib for VC++ 8 and later
[wxWidgets.git] / include / wx / msw / tbar95.h
CommitLineData
2bda0e17 1/////////////////////////////////////////////////////////////////////////////
1c383dba 2// Name: wx/msw/tbar95.h
8a0681f9 3// Purpose: wxToolBar (Windows 95 toolbar) class
2bda0e17
KB
4// Author: Julian Smart
5// Modified by:
6// Created: 01/02/97
7// RCS-ID: $Id$
bbcdf8bc 8// Copyright: (c) Julian Smart
65571936 9// Licence: wxWindows licence
2bda0e17
KB
10/////////////////////////////////////////////////////////////////////////////
11
8d0a7b56
VZ
12#ifndef _WX_MSW_TBAR95_H_
13#define _WX_MSW_TBAR95_H_
2bda0e17 14
d427503c 15#if wxUSE_TOOLBAR
2bda0e17 16
bdc72a22 17#include "wx/dynarray.h"
8d0a7b56 18#include "wx/imaglist.h"
bdc72a22 19
8a0681f9 20class WXDLLEXPORT wxToolBar : public wxToolBarBase
2bda0e17 21{
1c383dba 22public:
8a0681f9
VZ
23 // ctors and dtor
24 wxToolBar() { Init(); }
2bda0e17 25
8a0681f9 26 wxToolBar(wxWindow *parent,
1c383dba
VZ
27 wxWindowID id,
28 const wxPoint& pos = wxDefaultPosition,
29 const wxSize& size = wxDefaultSize,
30 long style = wxNO_BORDER | wxTB_HORIZONTAL,
31 const wxString& name = wxToolBarNameStr)
32 {
33 Init();
2bda0e17 34
1c383dba
VZ
35 Create(parent, id, pos, size, style, name);
36 }
2bda0e17 37
1c383dba
VZ
38 bool Create(wxWindow *parent,
39 wxWindowID id,
40 const wxPoint& pos = wxDefaultPosition,
41 const wxSize& size = wxDefaultSize,
42 long style = wxNO_BORDER | wxTB_HORIZONTAL,
43 const wxString& name = wxToolBarNameStr);
2bda0e17 44
8a0681f9 45 virtual ~wxToolBar();
2bda0e17 46
8a0681f9
VZ
47 // override/implement base class virtuals
48 virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const;
2bda0e17 49
8a0681f9 50 virtual bool Realize();
4fabb575 51
1c383dba
VZ
52 virtual void SetToolBitmapSize(const wxSize& size);
53 virtual wxSize GetToolSize() const;
14b72bf5 54
1c383dba 55 virtual void SetRows(int nRows);
81d66cf3 56
8a0681f9
VZ
57 // implementation only from now on
58 // -------------------------------
59
c631abda
VZ
60 virtual void SetWindowStyleFlag(long style);
61
1c383dba
VZ
62 virtual bool MSWCommand(WXUINT param, WXWORD id);
63 virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
2bda0e17 64
1c383dba
VZ
65 void OnMouseEvent(wxMouseEvent& event);
66 void OnSysColourChanged(wxSysColourChangedEvent& event);
0090a153 67 void OnEraseBackground(wxEraseEvent& event);
2bda0e17 68
8a328874
RR
69 void SetFocus() {}
70
566fb299
VZ
71 static WXHBITMAP MapBitmap(WXHBITMAP bitmap, int width, int height);
72
2bda0e17 73protected:
1c383dba
VZ
74 // common part of all ctors
75 void Init();
76
278c927d
VZ
77 // create the native toolbar control
78 bool MSWCreateToolbar(const wxPoint& pos, const wxSize& size);
24998710
VZ
79
80 // recreate the control completely
81 void Recreate();
82
8a0681f9
VZ
83 // implement base class pure virtuals
84 virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
85 virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
bdc72a22 86
8a0681f9
VZ
87 virtual void DoEnableTool(wxToolBarToolBase *tool, bool enable);
88 virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle);
89 virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle);
bdc72a22 90
8a0681f9 91 virtual wxToolBarToolBase *CreateTool(int id,
a3399e6c
VZ
92 const wxString& label,
93 const wxBitmap& bmpNormal,
94 const wxBitmap& bmpDisabled,
95 wxItemKind kind,
8a0681f9 96 wxObject *clientData,
a3399e6c
VZ
97 const wxString& shortHelp,
98 const wxString& longHelp);
8a0681f9 99 virtual wxToolBarToolBase *CreateTool(wxControl *control);
2bda0e17 100
7509fa8c 101 // override WndProc mainly to process WM_SIZE
c140b7e7 102 virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
7c0ea335 103
24998710
VZ
104 // return the appropriate size and flags for the toolbar control
105 virtual wxSize DoGetBestSize() const;
106 virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
107
7509fa8c
VZ
108 // handlers for various events
109 bool HandleSize(WXWPARAM wParam, WXLPARAM lParam);
110 bool HandlePaint(WXWPARAM wParam, WXLPARAM lParam);
111 void HandleMouseMove(WXWPARAM wParam, WXLPARAM lParam);
112
24998710
VZ
113 // should be called whenever the toolbar size changes
114 void UpdateSize();
115
8d0a7b56
VZ
116 // create m_disabledImgList (but doesn't fill it), set it to NULL if it is
117 // unneeded
118 void CreateDisabledImageList();
119
120
8a0681f9
VZ
121 // the big bitmap containing all bitmaps of the toolbar buttons
122 WXHBITMAP m_hBitmap;
123
8d0a7b56
VZ
124 // the image list with disabled images, may be NULL if we use
125 // system-provided versions of them
126 wxImageList *m_disabledImgList;
127
8a0681f9
VZ
128 // the total number of toolbar elements
129 size_t m_nButtons;
7c0ea335 130
a8945eef
MB
131 // the tool the cursor is in
132 wxToolBarToolBase *m_pInTool;
133
7c0ea335 134private:
8a0681f9 135 DECLARE_EVENT_TABLE()
7c0ea335 136 DECLARE_DYNAMIC_CLASS(wxToolBar)
22f3361e 137 DECLARE_NO_COPY_CLASS(wxToolBar)
2bda0e17
KB
138};
139
d427503c
VZ
140#endif // wxUSE_TOOLBAR
141
8d0a7b56
VZ
142#endif // _WX_MSW_TBAR95_H_
143