Читать «Исчерпывающее руководство по написанию всплывающих подсказок» онлайн
Роджер Джек
Исчерпывающее руководство по написанию всплывающих подсказок
Поддержка подсказок MFC-классами
Простая реализация подсказок с помощью MFC
Добавление подсказок к модальным диалоговым окнам
Добавление подсказок к Web-страницам
Добавление DataTips
Подсказки домашнего изготовления: TitleTips
Заключение
Добавление задержек к подсказкам
Комментарии:
notes
1
2
3
4
5
Исчерпывающее руководство по написанию всплывающих подсказок
Всплывающие подсказки (ToolTips) облегчают использование приложений. Если вам неясно назначение кнопки на панели инструментов (ToolBar), вы просто наводите на нее курсор мыши и ждете появления подсказки. Конечно, с помощью строки состояния можно получить больше информации, но в случае с всплывающими подсказками вам не приходится опускать взгляд вниз окна.
Существуют также другие виды подсказок: TitleTips – для расширения заголовков элементов управления "список" и "древовидный список", и DataTips – для получения дополнительной информации о данных в окне, и всплывающие подсказки для Web-страниц. Эта статья является подробным учебником по использованию подсказок в ваших приложениях, начиная от добавления простых подсказок средствами MFC до написания своих собственных подсказок. По пути я покажу, как добавлять подсказки к вашим Web-страницам, включая всплывающие подсказки для простого ActiveX-элемента "кнопка". Но прежде чем приступать к обсуждению деталей, давайте посмотрим, какую поддержку всплывающих подсказок предоставляют классы MFC.
Поддержка подсказок MFC-классами
Класс CWnd представляет базовую поддержку добавления подсказок к окну. Рисунок 1 показывает методы CWnd для поддержки подсказок. CWnd::EnableToolTips разрешает или запрещает подсказки для окна, и должна быть вызвана до вызова других методов. Нужно заметить, что в работе CWnd::EnableToolTips есть недостаток: когда вы передаете CWnd::EnableToolTips значение FALSE, этот метод вызывает еще один метод, который посылает сообщение для деактивации элемента ToolTip. Когда же вы вызываете CWnd::EnableToolTip со значением TRUE, он не активирует ToolTip заново.
Рис.1. Поддержка подсказок классом CWnd
Метод Описание
BOOL EnableToolTips(BOOL bEnable)
Разрешает или запрещает подсказки для окна
virtual int CWnd::OnToolHitTest(CPoint point, TOOLINFO* pTI ) const
Вызывается библиотекой, чтобы определить, не находится ли курсор мыши над инструментом, имеющим подсказку
void FilterToolTipMessage(MSG* pMsg)
Проверяет, относится ли сообщение к выводу подсказок
static void PASCAL CancelToolTips(BOOL bKeys)
Прячет подсказку, если она показана на экране
CWnd::OnToolHitTest вызывается непосредственно библиотекой, и вы можете переопределить эту функцию для реализации собственного алгоритма определения контура инструмента. Первый аргумент, point, является координатами курсора в клиентских координатах. Используйте его для сравнения позиции курсора с координатами ваших инструментов (или кнопок). Второй параметр – это уже упоминавшаяся структура TOOLINFO. Далее я покажу, как переопределять функцию CWnd::OnToolHitTest.