我正在寻找一种方法来获取与给定 HWND 关联的工具提示控件(如果有)。工具提示控件的文本也足够了。我发现的最接近的是 TTM_GETTEXT消息,但它应该发送到工具提示控件本身,而不是发送到与其关联的工具。但我没有工具提示控件的句柄。有人知道该怎么做吗?
所有这些都是使用 C++ 中的普通 Windows API 完成的。
最佳答案
似乎没有从控件获取提示或其文本的特定消息,但这就是 MFC 的 CWnd 类实现 OnToolHitTest() 的方式,您应该能够适应 Win32:
INT_PTR SomeFunction(HWND hWndChild, TOOLINFO *pTI)
{
if (hWndChild != NULL) // Your HWND being tested
{
// return positive hit if control ID isn't -1
INT_PTR nHit = _AfxGetDlgCtrlID(hWndChild);
// Replace with GetDlgCtrlID().
// hits against child windows always center the tip
if (pTI != NULL && pTI->cbSize >= sizeof(AFX_OLDTOOLINFO))
{
// setup the TOOLINFO structure
pTI->hwnd = m_hWnd;
pTI->uId = (UINT_PTR)hWndChild;
pTI->uFlags |= TTF_IDISHWND;
pTI->lpszText = LPSTR_TEXTCALLBACK;
// set TTF_NOTBUTTON and TTF_CENTERTIP if it isn't a button
if (!(::SendMessage(hWndChild, WM_GETDLGCODE, 0, 0) & DLGC_BUTTON))
pTI->uFlags |= TTF_NOTBUTTON|TTF_CENTERTIP;
}
return nHit;
}
return -1; // not found
}
希望这会有用。
关于c++ - 如何获取给定 HWND 的工具提示文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22848278/