Поделиться через


Обработка уведомления 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