Операционная система Windows 95 для программиста

       

Сообщения для Toolbar


Посылая сообщения органу Toolbar , приложение может управлять кнопками, получать информацию о состоянии кнопок, вызывать на экран диалоговую панель для настройки Toolbar и выполнять множество других действий. Ниже мы приведем краткое описание сообщений, предназначенных для Toolbar. Полную информацию вы сможете найти в справочной системе SDK для Win32.

TB_ADDBITMAP

Добавление одного или нескольких изображений к списку изображений органа управления Toolbar .

Параметры сообщения:

wParam = (WPARAM) nButtons; // количество добавляемых // изображений lParam = (LPARAM) (LPTBADDBITMAP) lptbab; // указатель на // структуру TBADDBITMAP

Как мы уже говорили, для Toolbar вы должны подготовить изображение, содержащее несколько картинок, которые будут нарисованы на кнопках. Если вы создаете Toolbar функцией CreateWindowEx, для добавления изображений необходимо послать созданному окну сообщение TB_ADDBITMAP:

tbab.hInst = hInst; tbab.nID = IDB_TBBITMAP; SendMessage(hwndTb, TB_ADDBITMAP, (WPARAM)8, (LPARAM)&tbab);

TB_ADDBUTTONS

Добавление кнопок к органу управления Toolbar .

wParam = (WPARAM) (UINT) uNumButtons; // количество кнопок lParam = (LPARAM) (LPTBBUTTON) lpButtons; // указатель на // заполненный массив структур TBBUTTON

Это сообщение используется в процессе создания Toolbar , так же как и предыдущее:

SendMessage(hwndTb, TB_ADDBUTTONS, (WPARAM)11, (LPARAM)&tbButtons);

Количество кнопок задается с учетом промежутков между группами кнопок. Каждый промежуток при этом считается за одну кнопку, хотя вы можете создавать промежутки размером в несколько кнопок (например, чтобы разместить там другие органы управления).

TB_ADDSTRING

Добавление новых текстовых строк в список органа управления Toolbar .



wParam = (WPARAM) (HINSTANCE) hinst; // идентификатор модуля lParam = (LPARAM) MAKELONG(idString, 0); // идентификатор // строки

Вы можете добавлять текстовые строки не только из ресурсов приложения, но и из массива в оперативной памяти. В этом случае параметр hinst должен быть равен нулю, а через параметр lParam необходимо передать адрес массива строк. Каждая строка в массиве должна заканчиваться двоичным нулем, а последняя - двумя нулями.

TB_AUTOSIZE


Параметры этого сообщения должны быть равны нулю. Оно посылается органу управления Toolbar сразу после создания, а также при изменении количества или расположения кнопок.

TB_BUTTONCOUNT



После посылки этого сообщения органу управления Toolbar функция SendMessage возвращает количество кнопок, добавленных в него с момента создания. Параметры сообщения должны быть равны нулю.

TB_BUTTONSTRUCTSIZE



С помощью этого сообщения приложение, создавшее орган управления Toolbar , должно сообщить последнему размер структуры TBBUTTON.

wParam = (WPARAM) cb; // размер структуры TBBUTTON

Значение параметра lParam должно быть равно нулю.

Сообщение TB_BUTTONSTRUCTSIZE следует послать органу Toolbar сразу после его создания функцией CreateWindowEx:

SendMessage(hwndTb, TB_BUTTONSTRUCTSIZE, (WPARAM) sizeof(TBBUTTON), 0);

TB_CHANGEBITMAP



Замена изображения на поверхности кнопки.

wParam = (WPARAM) idButton; // идентификатор кнопки lParam = (LPARAM) MAKELPARAM(iBitmap, 0); // номер нового // изображения

TB_CHECKBUTTON



С помощью этого сообщения можно переключать кнопку из отжатого состояния в нажатое и обратно.

wParam = (WPARAM) idButton; // идентификатор кнопки lParam = (LPARAM) MAKELONG(fCheck, 0); // флаг

Если значение флага равно TRUE, кнопка переводится в нажатое состояние, если FALSE - в отжатое.

TB_COMMANDTOINDEX



Определение номера кнопки по ее идентификатору (нумерация кнопок начинается с нуля).

wParam = (WPARAM) idButton; // идентификатор кнопки

Значение параметра lParam должно быть равно нулю.

Номер кнопки возвращается функцией SendMessage после посылки с ее помощью сообщения TB_COMMANDTOINDEX.

TB_CUSTOMIZE



Если окну Toolbar послать сообщение TB_CUSTOMIZE и если при создании Toolbar был указан стиль CCS_ADJUSTABLE, на экране появляется диалоговая панель настройки. С помощью этой панели (которая будет описана ниже) пользователь может изменять внешний вид органа управления Toolbar.

Параметры сообщения должны быть равны нулю.

TB_DELETEBUTTON



С помощью этого сообщения приложение может удалить кнопку из окна Toolbar . Порядковый номер удаляемой кнопки передается через параметр wParam:



wParam = (WPARAM) iButton;

Параметр lParam должен быть равен нулю.

Отметим, что вы можете определить порядковый номер кнопки по ее идентификатору с помощью сообщения TB_COMMANDTOINDEX, описанного выше.

TB_ENABLEBUTTON



С помощью сообщения TB_ENABLEBUTTON приложение может заблокировать или разблокировать кнопку.

wParam = (WPARAM) idButton; // идентификатор кнопки lParam = (LPARAM) MAKELONG(fEnable, 0); // флаг блокировки

Если флаг равен TRUE, кнопка разблокируется, если FALSE - блокируется.

TB_GETBITMAP



Определение номера изображения по идентификатору кнопки.

wParam = (WPARAM) idButton; // идентификатор кнопки

Параметр lParam должен быть равен нулю.

Порядковый номер изображения возвращается функцией SendMessage.

TB_GETBITMAPFLAGS



С помощью этого сообщения можно определить способность монитора отображать картинки большого размера. Это возможно в том случае, если в одном логическом дюйме контекста отображения экрана помещается не менее 120 пикселов.

Если монитор может отображать большие картинки, в возвращаемом функцией SendMessage значении установлен флаг TBBF_LARGE.

TB_GETBUTTON



Получение информации о кнопке, заданной своим номером.

wParam = (WPARAM) iButton; // номер кнопки lParam = (LPARAM) (LPTBBUTTON) lpButton; // адрес структуры // TBBUTTON

TB_GETBUTTONTEXT



Получение текстовой строки, связанной с кнопкой, которая задана своим номером.

wParam = (WPARAM) idButton; // номер кнопки lParam = (LPARAM) (LPSTR) lpszText; // адрес буфера для строки

TB_GETITEMRECT



Определение координат области, занимаемой кнопкой, которая задана своим номером.

wParam = (WPARAM) iButton; // номер кнопки lParam = (LPARAM) (LPRECT) lprc; // адрес структуры RECT

TB_GETROWS



Определение количества строк в органе управления Toolbar , имеющим стиль TBSTYLE_WRAPABLE.

Параметры сообщения должны быть равны нулю.

TB_GETSTATE



Определение состояния кнопки, заданной своим идентификатором.

wParam = (WPARAM) idButton; // идентификатор кнопки

Приведем список возможных состояний кнопки.



Состояние Описание
TBSTATE_CHECKED Кнопка имеет стиль BSTYLE_CHECKED и нажата
TBSTATE_ENABLED Кнопка разблокирована и может быть нажата пользователем
TBSTATE_HIDDEN Кнопка скрыта
TBSTATE_INDETERMINATE Кнопка находится в неопределенном состоянии и отображается серым цветом
TBSTATE_PRESSED Кнопка нажата
TBSTATE_WRAP После этой кнопки начинается новая строка органа управления Toolbar

TB_GETTOOLTIPS



Определение идентификатора органа управления Tool Tip, связанного с данным органом управления Toolbar .

Параметры сообщения должны быть равны нулю.

TB_HIDEBUTTON



С помощью этого сообщения можно отобразить или скрыть кнопку, заданную своим идентификатором.

wParam = (WPARAM) idButton; // идентификатор кнопки lParam = (LPARAM) MAKELONG(fShow, 0); // флаг

Если флаг равен TRUE, кнопка становится скрытой, если FALSE - отображается.

TB_INDETERMINATE



С помощью этого сообщения можно установить или отменить для кнопки неопределенное состояние, когда кнопка отображается серым цветом.

wParam = (WPARAM) idButton; // идентификатор кнопки lParam = (LPARAM) MAKELONG(fIndeterminate, 0); // флаг

Если флаг равен TRUE, неопределенное состояние устанавливается, если FALSE - отменяется.

TB_INSERTBUTTON



Вставка кнопки в Toolbar .

wParam = (WPARAM) iButton; // номер кнопки lParam = (LPARAM)(LPTBBUTTON)lpButton; // указатель на // структуру TBBUTTON

Если кнопка была вставлена успешно, функция SendMessage вернет значение TRUE, в противном случае - FALSE.

TB_ISBUTTONCHECKED



С помощью этого сообщения приложение может проверить состояние кнопки - нажата кнопка или нет.

wParam = (WPARAM) idButton; // идентификатор кнопки

Значение параметра lParam должно быть равно нулю.

Если кнопка нажата, функция SendMessage вернет значение TRUE, в противном случае - FALSE.

TB_ISBUTTONENABLED



С помощью этого сообщения приложение может проверить состояние блокировки кнопки - заблокирована кнопка или нет.

wParam = (WPARAM) idButton; // идентификатор кнопки

Значение параметра lParam должно быть равно нулю.



Если кнопка разблокирована, функция SendMessage вернет значение TRUE, в противном случае - FALSE.

TB_ISBUTTONHIDDEN



С помощью этого сообщения приложение может проверить, скрыта кнопка или нет.

wParam = (WPARAM) idButton; // идентификатор кнопки

Значение параметра lParam должно быть равно нулю.

Если кнопка скрыта, функция SendMessage вернет значение TRUE, в противном случае - FALSE.

TB_ISBUTTONINDETERMINATE



С помощью этого сообщения приложение может проверить, находится ли кнопка в неопределенном состоянии, когда она отображается серым цветом.

wParam = (WPARAM) idButton; // идентификатор кнопки

Значение параметра lParam должно быть равно нулю.

Если кнопка находится в неопределенном состоянии, функция SendMessage вернет значение TRUE, в противном случае - FALSE.

TB_ISBUTTONPRESSED



С помощью этого сообщения приложение может проверить, находится ли кнопка в нажатом состоянии.

wParam = (WPARAM) idButton; // идентификатор кнопки

Значение параметра lParam должно быть равно нулю.

Если кнопка находится в нажатом состоянии, функция SendMessage вернет значение TRUE, в противном случае - FALSE.

TB_PRESSBUTTON



С помощью этого сообщения приложение может установить кнопку в нажатое или отжатое состояние.

wParam = (WPARAM) idButton; // идентификатор кнопки lParam = (LPARAM) MAKELONG(fPress, 0); // флаг

Для того чтобы перевести кнопку в нажатое состояние, необходимо установить значение флага fPress равным TRUE, а для того чтобы перевести кнопку в отжатое состояние - равным FALSE.

Если состояние кнопки было изменено успешно, функция SendMessage вернет значение TRUE, в противном случае - FALSE.

TB_SAVERESTORE



Посылая органу управления Toolbar сообщение TB_SAVERESTORE, приложение может сохранить или восстановить состояние Toolbar. Для хранения состояния Toolbar используется системная регистрационная база данных.

wParam = (WPARAM) (BOOL) fSave; // флаг lParam = (LPARAM) (TBSAVEPARAMS *)ptbsp; // указатель на // структуру TBSAVEPARAMS

Если значение флага fSave равно TRUE, будет выполнено сохранение состояния Toolbar , а если FALSE - восстановление.



Через параметр ptbsp передается указатель на структуру типа TBSAVEPARAMS , приведенную ниже:

typedef struct { HKEY hkr; // идентификатор ключа регистрации LPCTSTR pszSubKey; // имя ключа LPCTSTR pszValueName; // значение ключа } TBSAVEPARAMS;

Работа с системной регистрационной базой данных Microsoft Windows 95 будет описана в одном из следующих томов "Библиотеки системного программиста".

TB_SETBITMAPSIZE



С помощью сообщения TB_SETBITMAPSIZE приложение может установить размер картинки, изображенной на поверхности кнопки.

lParam = (LPARAM) MAKELONG(dxBitmap, dyBitmap); // размеры

Значение параметра wParam должно быть равно нулю.

Через параметры dxBitmap и dyBitmap передается, соответственно, ширина и высота изображения.

TB_SETBUTTONSIZE



С помощью сообщения TB_SETBUTTONSIZE приложение может установить размер кнопки.

Param = (LPARAM) MAKELONG(dxButton, dyButton); // размеры

Значение параметра wParam должно быть равно нулю.

Через параметры dxButton и dyButton передается, соответственно, ширина и высота кнопки.

TB_SETCMDID



С помощью этого сообщения можно присвоить кнопке с заданным номером командный идентификатор.

wParam = (WPARAM) (UINT) index; // номер кнопки lParam = (WPARAM) (UINT) cmdId; // идентификатор

TB_SETPARENT



С помощью сообщения TB_SETPARENT приложение может назначить для органа управления Toolbar родительское окно.

wParam = (WPARAM) (HWND) hwndParent; // идентификатор // родительского окна

Значение параметра lParam должно быть равно нулю.

TB_SETROWS



Установка количества строк кнопок в органе управления Toolbar .

wParam = (WPARAM) MAKEWPARAM(cRows, fLarger); lParam = (LPARAM) (LPRECT) lprc;

Через параметр cRows передается количество строк. Минимальное значение параметра равно одной строке, максимальное - количеству кнопок в окне Toolbar .

Если параметр fLarger равен TRUE, при недостатке места для размещения всех кнопок в cRows строках будет создана дополнительная строка. Если же параметр fLarger равен FALSE, дополнительная строка не создается.



Перед тем как послать окну Toolbar сообщение TB_SETROWS, вы должны подготовить структуру типа RECT. Ее адрес нужно передать через параметр lprc. После обработки сообщения в эту структуру будут записаны новые размеры окна Toolbar.

TB_SETSTATE



Установка кнопки с заданным идентификатором в новое состояние.

wParam = (WPARAM) idButton; // идентификатор кнопки lParam = (LPARAM) MAKELONG(fState, 0); // состояние кнопки

Список возможных состояний кнопки приведен выше в описании сообщения TB_GETSTATE.

TB_SETTOOLTIPS



С помощью сообщения TB_SETTOOLTIPS приложение может назначить для Toolbar орган управления Tool Tip.

wParam = (WPARAM)(HWND)hwndToolTip; // идентификатор Tool Tip

Значение параметра lParam должно быть равно нулю.

Заметим, что при создании Toolbar со стилем TBSTYLE_TOOLTIPS для него автоматически создается орган Tool Tip , поэтому вам не нужно посылать окну Toolbar дополнительное сообщение TB_SETTOOLTIPS. Однако если вы посылаете такое сообщение, в Tool Tip будут зарегистрированы только те кнопки, которые были добавлены в Toolbar до момента посылки сообщения TB_SETTOOLTIPS.


Содержание раздела