Tooltip for disabled controls (2)

As an alternative to the method
suggested by Ran Almog, you can replicate MFCs fix in the dialog’s PreTranslateMessage override.

The MFC code to look at is in the function RelayToolTipMessage in the
file TOOLTIP.CPP.

This method has the advantage that it uses the tooltip itself to find
the child window, the relevant CToolTipCtrl function is
CToolTipCtrl::OnWindowFromPoint() – which has other fixes for special
cases as well as the disabled control case.

Example: if using the DeveloperStudio Tooltip component, change the
block it adds in PreTranslateMessage from:


// CG: The following block was added by the ToolTips component.
{
// Let the ToolTip process this message.
m_tooltip.RelayEvent(pMsg);
}

to:


// CG: The following block was added by the ToolTips component.
{
// transate the message based on TTM_WINDOWFROMPOINT
MSG msg = *pMsg;
msg.hwnd = (HWND)m_tooltip.SendMessage(TTM_WINDOWFROMPOINT, 0, (LPARAM)&msg.pt);
CPoint pt = pMsg->pt;
if (msg.message >= WM_MOUSEFIRST && msg.message <= WM_MOUSELAST) ::ScreenToClient(msg.hwnd, &pt); msg.lParam = MAKELONG(pt.x, pt.y); // Let the ToolTip process this message. m_tooltip.RelayEvent(&msg); }

Last updated: 22 June 1998

More by Author

Must Read