Udostępnij za pośrednictwem


Obsługa powiadomienia TTN_NEEDTEXT w przypadku etykietek narzędzi

W ramach włączania porad dotyczących narzędzi można obsługiwać komunikat TTN_NEEDTEXT , dodając następujący wpis do mapy komunikatów okna właściciela:

ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &CMyDialog::OnTtnNeedText)

memberFxn
Funkcja składowa, która ma być wywoływana, gdy potrzebny jest tekst dla tego przycisku.

Należy pamiętać, że identyfikator porady narzędzia to zawsze 0.

Zadeklaruj funkcję obsługi w definicji klasy w następujący sposób:

afx_msg BOOL OnTtnNeedText(UINT id, NMHDR* pNMHDR, LRESULT* pResult);

gdzie parametry kursywy to:

id
Identyfikator kontrolki, która wysłała powiadomienie. Nie używany. Identyfikator kontrolki jest pobierany ze struktury NMHDR .

pNMHDR
Wskaźnik do struktury NMTTDISPINFO . Ta struktura została również omówiona w temacie Struktura TOOLTIPTEXT.

Presult
Wskaźnik do kodu wynikowego, który można ustawić przed zwróceniem. TTN_NEEDTEXT programy obsługi mogą ignorować parametr pResult.

Przykładem procedury obsługi powiadomień widoku formularza:

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;
}

Wywołanie EnableToolTips (ten fragment pobrany z OnInitDialogelementu ):

EnableToolTips(TRUE);

Zobacz też

Etykietki narzędzi w systemie Windows niepochodzące od obiektu CFrameWnd