Отправляет email-рассылки с помощью сервиса Sendsay

Статьи по Visual C++

  Все выпуски  

Статьи по Visual C++.NET Всплывающие подсказки (ToolTip)


Информационный Канал Subscribe.Ru

P-Lib - сайт по программированию Ozon.ru
  Главная | Новости | Статьи | Каталог | Софт | Регистрация | Поиск

Новые статьи

1. Использование Буфера обмена (Clipboard)
2. Как запустить одну программу из другой?
3. Как программно завершить другое приложение?
4. Как узнать имя exe-файла выполняемой программы?
5. Как проверить, имеет ли пользователь некоторую привилегию?
6. Как получить список запущенных процессов?
7. Как получить список запущенных приложений?
8. Как определить, что приложение не отвечает?
9. Что такое привилегии?
10. Пример простейшего сниффера для W2K/XP
11. Как использовать в своей программе горячие клавиши

Свежие компьютерные новости

16.12.2005 Honda представила новую модель робота ASIMO
16.12.2005 Всемирной паутине исполнилось 15 лет
16.12.2005 Широкоформатный ноутбук бизнес-класса Prestigio Visconte 1450W

Всплывающие подсказки (ToolTip)

В этой рассылке будет рассмотрен вопрос создания всплывающих подсказок (ToolTip) средствами MFC, а также рассмотрены некоторые возможности по управлению подсказками. В частности изменение цвета фона и текста подсказки, изменение времени инициализации и продолжительности, ширину полосы окружающий текст, ширину окна самой подсказки и т. д.

Создание всплывающей подсказки

В библиотеке MFC всплывающие подсказки создаются на основе класса CToolTipCtrl. Для создания используется метод Create. Вот его описание:

virtual BOOL Create(
   CWnd* pParentWnd,
   DWORD dwstyle="0" 
);

Параметры функции:

  • Первый параметр pParentWnd, указатель на окно, которое содержит элемент. Этот параметр не может быть пустым.
  • Второй параметр dwStyle, определяет стиль всплывающей подсказки. Этим параметром может быть любая комбинация стандартных стилей окна. Кроме того есть ещё два стиля определённых классом элемента, TTS_ALWAYSTIP и TTS_NOPREFIX. В таблице приведено их описание.


  • Стиль Значение
    TTS_ALWAYSTIP Определяет, что всплывающая подсказка будет появляться, когда курсор будет над элементом, независимо от того является ли окно-владелец подсказки активным или не активным. Без этого стиля подсказка появляется, когда окно-владелец активно, и не появляется когда неактивно.
    TTS_NOPREFIX Этот стиль запрещает системе удалять символ амперсанд(&) из строки. Если всплывающая подсказка не имеет стиля TTS_NOPREFIX, система автоматически удаляет символ амперсанд, позволяя приложению использовать одинаковые строки, как для элементов меню, так и для текста подсказки.

    Для включения, выключения всплывающей подсказки есть функция Activate.

    void Activate(
       BOOL bActivate 
    );

    Если значение bActivate - TRUE, элемент включается; если FALSE, выключается. Когда ToolTip включен, информация ToolTip'а появляется, когда курсор находиться над элементом, зарегистрированным за ToolTip'ом; когда он выключен - информация ToolTip 'а не появляется когда курсор проходит над элементом.

    Функция AddTool

    Функция AddTool предназначена для регистрации элемента в ToolTip’е. В случае успешного выполнения функция возвратит 1, а в случае неудачного 0. При вызове вся указанная информация будет сохранена и при наведении курсора на зарегистрированный элемент появится подсказка.

    BOOL AddTool(
       CWnd* pWnd,
       UINT nIDText,
       LPCRECT lpRectTool = NULL,
       UINT_PTR nIDTool = 0 
    );
    BOOL AddTool(
       CWnd* pWnd,
       LPCTSTR lpszText = LPSTR_TEXTCALLBACK,
       LPCRECT lpRectTool = NULL,
       UINT_PTR nIDTool = 0 
    ); 

    Вот описание функции AddTool.

  • pWnd – указатель на окно которое содержит элемент.
  • nIDText – ID строкового ресурса который содержит текст.
  • nIDTool – ID элемента.
  • lpszText - Указатель на текст для элемента. Если этот параметр содержит значение LPSTR_TEXTCALLBACK - TTN_NEEDTEXT сообщение передается окну владельцу, на которое указывает pWnd.
  • lpRectTool - Указатель на структуру RECT, содержащую координаты прямоугольника ограничивающего подсказку. Координаты - относительно верхнего левого угла области самой подсказки.
  • Вот описание структуры RECT:

    typedef struct _RECT { 
      LONG left; 
      LONG top; 
      LONG right; 
      LONG bottom; 
    } RECT, *PRECT;
  • left - Расстояние между левой границей и левым краем текста подсказки в пикселях.
  • top - Расстояние между верхней границей и верхнем краем текста подсказки в пикселях.
  • right - Расстояние между правой границей и правым краем текста подсказки в пикселях.
  • bottom - Расстояние между нижней границей и нижнем краем текста подсказки в пикселях.
  • Смена цвета фона и текста

    Для смены цвета фона и текста всплывающей подсказки используются функции SetTipTextColor и SetTipBkColor. Вот их описание:

    void SetTipBkColor(
       COLORREF clr 
    );
    
    void SetTipTextColor(
       COLORREF clr 
    );

    У этих функции есть единственный параметр, который задаёт цвет. Для получения цвета, который сейчас использован, применяются функции GetTipTextColor и GetTipBkColor. Они возвращают цвет текста или фона подсказки.

    Установка полей и размера

    Для установки полей подсказки используют функцию SetMargin. Эта функция реализует выполнение Win32 сообщения TTM_SETMARGIN.

    void SetMargin(
       LPRECT lprc 
    );
  • lprc - Адрес структуры RECT которая содержит информацию для установки полей. Члены структуры RECT не определяют окружающий прямоугольник.
  • Для возвращения данных установок полей используют обратную функцию GetMargin. Эта функция реализует выполнение Win32 сообщения TTM_GETMARGIN. Для задания максимальной ширины окна подсказки используют функцию SetMaxTipWidth.

    int SetMaxTipWidth(
       int iWidth 
    );

    Параметр iWidth задаёт новую максимальную ширину подсказки. При успешном выполнении возвращает значение предыдущей ширины. Функция GetMaxTipWidth возвращает текущее значение максимальной ширины.

    Для установки новой окружающей рамки подсказки используется функция SetToolRect.

    void SetToolRect(
       CWnd* pWnd,
       UINT_PTR nIDTool,
       LPCRECT lpRect 
    );
  • pWnd – Указатель на окно, содержащий элемент
  • nIDTool – ID элемента
  • lpRect - Указатель на структуру RECT, которая определяет новый окружающий прямоугольник.
  • Функция SetDelayTime и GetDelayTime

    Функция SetDelayTime задаёт новое время задержки перед появлением всплывающей подсказки. По умолчанию оно равно 500 миллисекунд.

    void SetDelayTime(
       UINT nDelay 
    );
    void SetDelayTime(
       DWORD dwDuration,
       int iTime 
    );
  • nDelay – Определяет новое время задержки в миллисекундах.
  • dwDuration – Флаг, определяющий, значение какой задержки нужно изменить.
  • iTime - Определяет время задержки в миллисекундах.
  • Параметр dwDuration указывает на флаг, определяющий, значение изменяемой задержки. Значения этого параметра описаны в таблице.

    TTDT_AUTOPOP Возвращает продолжительность времени в течении которого окно ToolTip'а остается видимым если курсор находится в окружающей рамке элемента.
    TTDT_INITIAL Возвращает продолжительность времени в течении которого курсор должен оставаться в окружающей рамке элемента, для того чтобы появилось окно ToolTip'а.
    TTDT_RESHOW Возвращает продолжительность времени необходимую для следующего появления окна ToolTip'а когда курсор перемещается с одного элемента на другой.

    Для получения текущей задержки подсказки используется функция GetDelayTime.

    int GetDelayTime(
       DWORD dwDuration 
    ) const;

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

    Вот небольшой исходник к статье, который в общем показывает, как создавать всплывающие подсказки и управлять ими.




    Subscribe.Ru
    Поддержка подписчиков
    Другие рассылки этой тематики
    Другие рассылки этого автора
    Подписан адрес:
    Код этой рассылки: comp.soft.prog.visualc
    Архив рассылки
    Отписаться
    Вспомнить пароль

    В избранное