aboutsummaryrefslogtreecommitdiffstats
path: root/win/rfb_win32/ToolBar.h
blob: f256c99945771a952907a101178a53119835eaa6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/* Copyright (C) 2004 TightVNC Team.  All Rights Reserved.
 *    
 * This is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this software; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
 * USA.
 */

// -=- ToolBar control class.

#include <windows.h>
#include <commctrl.h>
#include <assert.h>

namespace rfb {

  namespace win32 {

    class ToolBar {
    public:
      ToolBar();
      virtual ~ToolBar();

      // create() creates a windows toolbar. dwStyle is a combination of 
      // the toolbar control and button styles. It returns TRUE if successful,
      // or FALSE otherwise.
      bool create(int tbID, HWND parentHwnd, 
                  DWORD dwStyle = WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT);

      // -=- Button images operations

      // addBitmap() adds one or more images from resources to
      // the list of button images available for a toolbar.
      // Returns the index of the first new image if successful,
      // or -1 otherwise.
      int addBitmap(int nButtons, UINT bitmapID);

      // addSystemBitmap() adds the system-defined button bitmaps to the list
      // of the toolbar button specifying by stdBitmapID. Returns the index of 
      // the first new image if successful, or -1 otherwise.
      int addSystemBitmap(UINT stdBitmapID);

      // setBitmapSize() sets the size of the bitmapped images to be added
      // to a toolbar. It returns TRUE if successful, or FALSE otherwise.
      // You must call it before addBitmap().
      bool setBitmapSize(int width, int height);

      // -=- Button operations

      // addButton() adds one button.
      bool addButton(int iBitmap, int idCommand, BYTE state=TBSTATE_ENABLED, 
                     BYTE style=TBSTYLE_BUTTON,  UINT dwData=0, int iString=0);

      // addNButton() adds nButtons buttons to a toolbar.
      bool addNButton(int nButtons, LPTBBUTTON tbb);

      // deleteButton() removes a button from the toolbar.
      bool deleteButton(int nIndex);

      // insertButton() inserts a button in a toolbar control by index.
      bool insertButton(int nIndex, LPTBBUTTON tbb);

      // getButtonInfo() retrieves extended information about a toolbar's 
      // button. It returns index of the button if successful, or -1 otherwise.
      int getButtonInfo(int idButton, TBBUTTONINFO *btnInfo);

      // getButtonsHeight() retrieves the height of the toolbar buttons.
      int getButtonsHeight();

      // getButtonsWidth() retrieves the width of the toolbar buttons.
      int getButtonsWidth();

      // setButtonInfo() sets the information for an existing button 
      // in a toolbar.
      bool setButtonInfo(int idButton, TBBUTTONINFO* ptbbi);

      // checkButton() checks or unchecks a given button in a toolbar control.
      bool checkButton(int idButton, bool check);

      // enableButton() enables or disables the specified button 
      // in the toolbar.
      bool enableButton(int idButton, bool enable);

      // pressButton() presses or releases the specified button in the toolbar.
      bool pressButton(int idButton, bool press);

      // getButtonRect() gets the bounding rectangle of a button in a toolbar.
      bool getButtonRect(int nIndex, LPRECT buttonRect);
  
      // setButtonSize() sets the size of the buttons to be added to a toolbar.
      // Button size must be largen the button bitmap.
      bool setButtonSize(int width, int height);

      // -=- ToolBar operations

      // autoSize() resizes the toolbar window.
      void autoSize();

      // getHandle() returns handle to a toolbar window.
      HWND getHandle() { return hwndToolBar; }

      // getHeight() returns the toolbar window height.
      int getHeight();

      // getTotalWidth() returns the total size of all buttons and 
      // separators in the toolbar.
      int getTotalWidth();

      // show() displays the toolbar window.
      void show();

      // hide() hides the toolbar window.
      void hide();

      // isVisible() check the toolbar window on visible.
      bool isVisible();

    protected:
      HWND hwndToolBar;
      HWND parentHwnd;
      int tbID;
    };

  }; // win32

}; // rfb