Обработка уведомления TTN_NEEDTEXT для всплывающих подсказок
В рамках включения подсказок инструментов вы обрабатываете сообщение TTN_NEEDTEXT , добавив следующую запись в карту сообщений вашего владельца:
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &CMyDialog::OnTtnNeedText)
memberFxn
Функция-член, вызываемая при необходимости текста для этой кнопки.
Обратите внимание, что идентификатор подсказки инструмента всегда равен 0.
Объявите функцию обработчика в определении класса следующим образом:
afx_msg BOOL OnTtnNeedText(UINT id, NMHDR* pNMHDR, LRESULT* pResult);
где курсивные параметры:
id
Идентификатор элемента управления, отправляющего уведомление. Не используется. Идентификатор элемента управления взят из структуры NMHDR .
pNMHDR
Указатель на структуру NMTTDISPINFO . Эта структура также рассматривается далее в структуре TOOLTIPTEXT.
pResult
Указатель на результирующий код, который можно задать перед возвратом. TTN_NEEDTEXT обработчики могут игнорировать параметр pResult.
Пример обработчика уведомлений представления формы:
BOOL CMyDialog::OnTtnNeedText(UINT id, NMHDR* pNMHDR, LRESULT* pResult)
{
UNREFERENCED_PARAMETER(id);
NMTTDISPINFO* pTTT = (NMTTDISPINFO*)pNMHDR;
UINT_PTR nID = pNMHDR->idFrom;
BOOL bRet = FALSE;
if (pTTT->uFlags & TTF_IDISHWND)
{
// idFrom is actually the HWND of the tool
nID = ::GetDlgCtrlID((HWND)nID);
if (nID)
{
_stprintf_s(pTTT->szText, sizeof(pTTT->szText) / sizeof(TCHAR),
_T("Control ID = %d"), nID);
pTTT->hinst = AfxGetResourceHandle();
bRet = TRUE;
}
}
*pResult = 0;
return bRet;
}
Вызов EnableToolTips
(этот фрагмент взят из OnInitDialog
):
EnableToolTips(TRUE);
См. также
Подсказки в Windows, не являющиеся производными от CFrameWnd