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


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

См. также

Основные понятия

Всплывающие подсказки в окнах не производных от CFrameWnd