作为 启用工具提示的一部分,可以通过将以下条目添加到所有者窗口的消息映射来处理 TTN_NEEDTEXT 消息:
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &CMyDialog::OnTtnNeedText)
memberFxn
此按钮需要文本时要调用的成员函数。
请注意,工具提示的 ID 始终为 0。
在类定义中声明处理程序函数,如下所示:
afx_msg BOOL OnTtnNeedText(UINT id, NMHDR* pNMHDR, LRESULT* pResult);
其中斜体参数为:
id
发送通知的控件的标识符。 未使用。 控件 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);