Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ch-12_1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
456.7 Кб
Скачать

Пример создания панели инструментов

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

HWND hwndToolBar = CreateToolbarEx ( hwndParent,

WS_CHILD | WS_VISIBLE |

WS_CLIPSIBLINGS | CCS_TOP |

TBSTYLE_TOOLTIPS,

1, 0,

HINST_COMMCTRL,

IDB_STD_SMALL_COLOR,

tbb,

5, 0, 0, 0, 0,

sizeof (TBBUTTON) ) ;

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

Ниже приведен массив TBBUTTON, необходимый для определения атрибутов конкретных кнопок панели инструментов:

TBBUTTON tbb[] =

{

STD_FILENEW, 1, TBSTATE_ENABLED, TBSTYLE_BUTTON,0, 0, 0, 0,

STD_FILEOPEN, 2, TBSTATE_ENABLED, TBSTYLE_BUTTON,0, 0, 0, 0,

STD_FILESAVE, 3, TBSTATE_ENABLED, TBSTYLE_BUTTON,0, 0, 0, 0,

STD_PRINT, 4, TBSTATE_ENABLED, TBSTYLE_BUTTON,0, 0, 0, 0,

STD_PRINTPRE, 5, TBSTATE_ENABLED, TBSTYLE_BUTTON,0, 0, 0, 0

} ;

Альтернативой вызову функции CreateToolbarEx для создания панели инструментов может быть вызов функции CreateWindow и последующая посылка сообщений для инициализации различных аспектов панели инструментов. Ниже приведен код, который выполняет действия, аналогичные приведенному выше вызову функции CreateToolbarEx.

HWND hwndToolBar = CreateWindow ( TOOLBARCLASSNAME,

NULL,

WS_CHILD | WS_VISIBLE |

WS_CLIPSIBLINGS | CCS_TOP |

TBSTYLE_TOOLTIPS,

0, 0, 0, 0,

hwndParent,

(HMENU) 1,

hInst,

0 ) ;

// устанавливаем версию как размер структуры TBBUTTON

ToolBar_ButtonStructSize ( hwndToolBar ) ;

ToolBar_AddBitmap ( hwndToolBar, 1, &tbbitmap ) ;

// создаем кнопки

ToolBar_AddButtons ( hwndToolBar, 5, tbb ) ;

Требуется дополнительное определение данных типа структуры TBADDBITMAP, которые задают описатель экземпляра и идентификатор ресурса битового образа панели инструментов:

TBADDBITMAP tbbitmap =

{

HINST_COMMCTRL, IDB_STD_SMALL_COLOR

} ;

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

Перемещение и изменение размеров панели инструментов

Свойства панели инструментов автоматического изменения размеров и автоматического размещения начинают работать, когда панели инструментов посылается сообщение TB_AUTOSIZE. Обычно, это сообщение посылается тогда, когда родительское окно панели инструментов изменяет размер, т. е. получает сообщение WM_SIZE:

SendMessage ( hwndToolBar, TB_AUTOSIZE, 0, 0L ) ;

Вместо этого возможно использование макроса, определенного в файле COMCTHLP.H на прилагающемся компакт-диске:

ToolBar_AutoSize ( hwndToolBar ) ;

Реакция панели инструментов на это сообщение определяется флагами ее стиля. Например, панель инструментов стиля CCS_TOP или ССS_BOTTOM устанавливает свое местоположение и размеры. С другой стороны, панель инструментов стиля CCS_NORESIZE игнорирует это сообщение, и требует явной установки ее местоположения и размеров.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]