Sdílet prostřednictvím


Zpracování oznámení TTN_NEEDTEXT u popisů tlačítek

Jako součást povolení popisů nástrojů zpracujete TTN_NEEDTEXT zprávu přidáním následující položky do mapy zpráv okna vlastníka:

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

memberFxn
Členová funkce, která se má volat, když je pro toto tlačítko potřeba text.

Všimněte si, že ID popisku nástroje je vždy 0.

Deklarujte funkci obslužné rutiny v definici třídy následujícím způsobem:

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

kde jsou kurzíva parametry:

id
Identifikátor ovládacího prvku, který oznámení odeslal. Nepoužívá se. ID ovládacího prvku je převzato ze struktury NMHDR .

pNMHDR
Ukazatel na strukturu NMTTDISPINFO . Tato struktura je také popsána dále v TOOLTIPTEXT Struktury.

pResult
Ukazatel na kód výsledku, který můžete nastavit před vrácením. TTN_NEEDTEXT obslužné rutiny mohou ignorovat parametr pResult.

Příklad obslužné rutiny oznámení zobrazení formuláře:

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

Volání EnableToolTips (tento fragment převzatý z OnInitDialog):

EnableToolTips(TRUE);

Viz také

Popisy tlačítek v oknech neodvozených ze třídy CFrameWnd