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