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


Обработка извещений от Toolbar - часть 3


return((nItem < sizeof(tbButtons)/sizeof(tbButtons[0]))? TRUE : FALSE); break;

case TBN_QUERYDELETE: lptbn = (LPTBNOTIFY)pnmhdr; nItem = lptbn->iItem; return (nItem == 0)? FALSE : TRUE; break;

case TBN_QUERYINSERT: lptbn = (LPTBNOTIFY)pnmhdr; nItem = lptbn->iItem; return (nItem == 0)? FALSE : TRUE; break;

case TBN_TOOLBARCHANGE: SendMessage(hwndTb, TB_AUTOSIZE, 0L, 0L); return TRUE; break;

default: break; } return FALSE; }

Рассмотрим особенности обработки отдельных извещений.

TTN_NEEDTEXT

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

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

Вот пример такой таблицы (мы привели сокращенный вариант из приложения Smart Application):

STRINGTABLE DISCARDABLE BEGIN ID_FILE_NEW "Creates a new document" ID_FILE_OPEN "Open an existing document" ID_FILE_CLOSE "Closes the active document" ID_FILE_SAVE "Save the active document" ID_FILE_PRINT "Prints the active document" END STRINGTABLE DISCARDABLE BEGIN ID_FILE_EXIT "Exit application" ID_FILE_SAVEAS "Saves the active document under" " a different name" ID_HELP_ABOUT "Displays information about application" END

Как вы увидите в дальнейшем, эта таблица пригодится нам для органа управления Statusbar.

Когда пользователь устанавливает курсор мыши на кнопку Toolbar и оставляет его в покое, окно, создавшее Toolbar, получает извещение TTN_NEEDTEXT.

Обработчик извещения TTN_NEEDTEXT должен извлечь идентификатор кнопки, загрузить из ресурсов приложения соответствующую текстовую строку и записать ее адрес в поле lpszText:




- Начало -  - Назад -  - Вперед -



Книжный магазин