Handling TTN_NEEDTEXT Notification for Tool Tips
As part of enabling tool tips, you handle the TTN_NEEDTEXT message by adding the following entry to your owner window's message map:
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &CMyDialog::OnTtnNeedText)
- memberFxn
The member function to be called when text is needed for this button.
Note that the ID of a tool tip is always 0.
Declare your handler function in the class definition as follows:
afx_msg BOOL OnTtnNeedText(UINT id, NMHDR *pNMHDR, LRESULT *pResult);
where the italicized parameters are:
id
Identifier of the control that sent the notification. Not used. The control id is taken from the NMHDR structure.pNMHDR
A pointer to the NMTTDISPINFO structure. This structure is also discussed further in The TOOLTIPTEXT Structure.pResult
A pointer to result code you can set before you return. TTN_NEEDTEXT handlers can ignore the pResult parameter.
As an example of a form-view notification handler:
BOOL CMyDialog::OnTtnNeedText(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{
UNREFERENCED_PARAMETER(id);
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)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)
{
TCHAR szBuff[64];
_stprintf_s(szBuff, sizeof(szBuff) / sizeof(TCHAR),
_T("Control ID = %d"), nID);
pTTT->lpszText = szBuff;
pTTT->hinst = AfxGetResourceHandle();
bRet = TRUE;
}
}
*pResult = 0;
return bRet;
}
Call EnableToolTips (this fragment taken from OnInitDialog):
EnableToolTips(TRUE);