处理工具提示的TTN_NEEDTEXT通知

作为 启用工具提示的一部分,可以通过将以下条目添加到所有者窗口的消息映射来处理 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);

另请参阅

Windows 中未派生自 CFrameWnd 的工具提示