Роджер Джек - Исчерпывающее руководство по написанию всплывающих подсказок

Тут можно читать онлайн Роджер Джек - Исчерпывающее руководство по написанию всплывающих подсказок - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Исчерпывающее руководство по написанию всплывающих подсказок
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Роджер Джек - Исчерпывающее руководство по написанию всплывающих подсказок краткое содержание

Исчерпывающее руководство по написанию всплывающих подсказок - описание и краткое содержание, автор Роджер Джек, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Исчерпывающее руководство по написанию всплывающих подсказок - читать онлайн бесплатно полную версию (весь текст целиком)

Исчерпывающее руководство по написанию всплывающих подсказок - читать книгу онлайн бесплатно, автор Роджер Джек
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Изменить строки подсказок после генерации приложения просто – найдите панель инструментов в списке ресурсов, откройте двойным щелчком по любой из кнопок на панели диалог свойств кнопки панели инструментов (Toolbar Button Properties) и отредактируйте строку "Prompt" после символа "\n". Например, на рис.2, текстом всплывающей подсказки является "Open". Строка до символа "\n" является текстом, который появляется в строке состояния при наведении на кнопку.

Рис.2. Свойства кнопки на панели инструментов

Как я уже упоминал, текст подсказки хранится в таблице строк. ID строки с текстом подсказки равен ID соответствующей кнопки на панели инструментов. Для рис.2 ID строки будет ID_FILE_OPEN. Добавлять подсказки к панели инструментов так просто, что ошибиться практически негде. Единственной проблемой в моей практике было случайное перезаписывание строк в таблице из другого участка кода.

Добавление подсказок к модальным диалоговым окнам

Вы, вероятно, видели диалоги с подсказками для каждого элемента управления на них. Это очень удобно, если предназначение элемента неочевидно из контекста. Статья Q141758 в базе знаний (Knowledge Base) подробно описывает, как реализовать подсказки в MFC-диалогах, поэтому здесь я лишь кратко перечислю основные пункты. Для MFC версии 4.0 и выше, вам придется выполнить следующие шаги (предполагаем, что диалоговое окно в вашем приложении уже существует):

• Добавить private или protected переменную типа CToolTipCtrl в класс вашего диалога.

• Добавить в класс управляющую переменную (control member variable), для каждого элемента, у которого будет подсказка. Это можно сделать с помощью ClassWizard (на закладке Member Variable).

• Переопределить CDialog::OnInitDialog и вызвать в нем CToolTipCtrl::Create. Затем вызвать CToolTipCtrl::AddTool для каждого элемента с подсказкой, передавая адрес управляющей переменной и текст подсказки в качестве параметров.

• Переопределить CDialog::PreTranslateMessage и вызвать в ней CToolTipCtrl::RelayEvent для каждого сообщения, передаваемого в функцию. Это нужно для того, чтобы элемент ToolTip получал все необходимые сообщения мыши.

В MFC версий ниже 4.0 из CDialog::DoModal не вызывается CDialog::PreTranslateMessage, поэтому придется выполнить дополнительные действия для передачи сообщений мыши элементу ToolTip. Нужно переопределить CWinApp::ProcessMessageFilter и в нем передавать сообщения элементу ToolTip. CWinApp::ProcessMessageFilter вызывается хуковой функцией MFC для реакции на определенные сообщения Windows. За деталями, а также рабочими примерами, обратитесь к статье в базе знаний.

Добавление подсказок к Web-страницам

Демонстрационный проект WebButton

Как и в приложениях, подсказки на Web-страницах могут быть очень полезны. Подсказки могут быть использованы в двух очевидных случаях: для картинок и элементов ActiveX. Я написал пример элемента "кнопка", чтобы продемонстрировать, как просто добавлять подсказки к элементам ActiveX. На рис.3 показаны и элемент ActiveX – кнопка с улыбающейся рожицей, и картинка – небольшое "художество" прямо под кнопкой.

Рис.3. Подсказки на Web-странице

Добавить подсказку к картинке проще простого, потому что эта функциональность встроена в язык HTML (см. рис.4). Эта строка:

задает имя и размер картинки. Подстрока "Image ToolTip" и есть текст подсказки, которая появляется при подведении курсора мыши к картинке. Также возможно задать для картинки несколько "активных зон" (HotSpots) и определить несколько подсказок, но это выходит за рамки статьи. Я только хочу показать, насколько просто добавлять подсказки на языке HTML.

Рис.4. HTML-код для подсказки


Sub WebButton1_Click()

MsgBox "WebButton was clicked"

end sub

-->

Элемент ActiveX представляет собой кнопку с подсказкой. Для чего мне возиться с созданием кнопки, когда можно добавить на Web-страницу трехмерную картинку, которая будет выглядеть как кнопка? На это есть две причины. Во-первых, кнопка выглядит реалистичнее – она нажимается и отжимается по щелчку пользователя, как и положено настоящей кнопке. Во-вторых, я хотел показать добавление подсказок к элементам ActiveX, а кнопка – это простейший элемент, который я мог использовать в демонстрационных целях.

Для генерации кода я использовал AppWizard. Я установил флажок "Activate when visible" и отключил все остальные флажки. В опции "Which window class, if any, should this control subclass?" я выбрал BUTTON. AppWizard генерирует массу дополнительного кода, не относящегося к данной статье. В основном, я остановлюсь на коде, добавленном мной в класс CWebButtonCtrl (см. рис.5). Давайте для начала взглянем на пару переменных класса. CWebButtonCtrl::m_bToolTipEnabled устанавливается в TRUE, если подсказки разрешены. В CWebButtonCtrl::m_strToolTipText хранится текст подсказки. Я добавил обе переменные через ClassWizard и они представляют OLE-свойства, автоматические обновляемые библиотекой MFC при их изменении.

Рис.5. CWebButtonCtrl

// WebButtonCtl.cpp : Implementation of the CWebButtonCtrl OLE control class.

/////////////////////////////////////////////////////////////////////////////

// CWebButtonCtrl::RelayToolTipEvent – Pass mouse messages to ToolTip

void CWebButtonCtrl::RelayToolTipEvent(const MSG* pMsg) {

MSG MsgCopy;

::memcpy(&MsgCopy, pMsg, sizeof(MSG));

FilterToolTipMessage(&MsgCopy);

}

int CWebButtonCtrl::OnToolHitTest(CPoint point, TOOLINFO* pTI) const {

if (m_bToolTipEnabled && pTI != NULL && pTI->cbSize >= sizeof(TOOLINFO)) {

// setup the TOOLINFO structure

pTI->hwnd = m_hWnd;

pTI->uId = 0;

pTI->uFlags = 0;

GetClientRect(&(pTI->rect));

pTI->lpszText = LPSTR_TEXTCALLBACK;

}

return (m_bToolTipEnabled ? 1 : –1);

}

/////////////////////////////////////////////////////////////////////////////

// CWebButtonCtrl message handlers

int CWebButtonCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) {

if (COleControl::OnCreate(lpCreateStruct) == –1) {

return –1;

}

if (m_Bitmap.LoadBitmap(IDB_WEBBUTTON)) {

SendMessage(BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)m_Bitmap.GetSafeHandle());

} else {

TRACE("Unable to load bitmap for button.");

}

EnableToolTips(TRUE);

return 0;

}

void CWebButtonCtrl::OnMouseMove(UINT nFlags, CPoint point) {

RelayToolTipEvent(GetCurrentMessage());

COleControl::OnMouseMove(nFlags, point);

}

void CWebButtonCtrl::OnLButtonDown(UINT nFlags, CPoint point) {

RelayToolTipEvent(GetCurrentMessage());

COleControl::OnLButtonDown(nFlags, point);

}

void CWebButtonCtrl::OnLButtonUp(UINT nFlags, CPoint point) {

RelayToolTipEvent(GetCurrentMessage());

COleControl::OnLButtonUp(nFlags, point);

}

BOOL CWebButtonCtrl::OnToolNeedText(UINT id, NMHDR * pNMHDR, LRESULT * pResult) {

TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;

::strcpy(pTTT->szText, m_strToolTipText);

return TRUE;

}

/////////////////////////////////////////////////////////////////////////////

// Property changed handlers

void CWebButtonCtrl::OnToolTipEnabledChanged() {

SetModifiedFlag();

}

void CWebButtonCtrl::OnToolTipTextChanged() {

SetModifiedFlag();

}

CWebButtonCtrl::PreCreateWindow манипулирует передаваемой ему структурой CREATESTRUCT. Я задал для кнопки стиль пользовательской отрисовки (owner-draw) – BS_OWNERDRAW – для того, чтобы не рисовалась рамка фокуса (focus rect) при активизации кнопки. В противном случае, рамка была бы все время видна. Как побочный эффект задания такого стиля приходится переопределять функцию CWebButtonCtrl::OnOcmDrawItem для рисования кнопки. CWebButtonCtrl::OnCreate загружает и устанавливает картинку для кнопки посылкой сообщения BM_SETIMAGE. Она также вызывает CWebButton::EnableToolTips, чтобы задействовать поддержку подсказок классом CWnd.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Роджер Джек читать все книги автора по порядку

Роджер Джек - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Исчерпывающее руководство по написанию всплывающих подсказок отзывы


Отзывы читателей о книге Исчерпывающее руководство по написанию всплывающих подсказок, автор: Роджер Джек. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x