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