单击按钮后MFC按钮工具提示不显示

时间:2012-08-10 09:08:13

标签: mfc windows-xp tooltip windows-messages

我正在使用MFC CToolTipCtrl为按钮创建工具提示。现在我在Windows XP中运行应用程序时遇到问题。当我将鼠标放在按钮上时,工具提示会弹出但单击按钮后没有显示工具提示。在Windows 7中没有这样的问题。我使用以下代码创建工具提示

pToolTip->Create(this);

TOOLINFO ToolInfo;
ToolInfo.cbSize     = sizeof(TOOLINFO);
ToolInfo.lpszText   = const_cast<LPTSTR>(szToolTipText);
ToolInfo.hinst      = AfxGetInstanceHandle();
ToolInfo.hwnd       = pButton->m_hWnd;
ToolInfo.uFlags     = TTF_SUBCLASS | TTF_IDISHWND;
ToolInfo.uId        = (UINT)pButton->m_hWnd;

pToolTip->SendMessage(TTM_ADDTOOL, 0, (LPARAM) &ToolInfo);

1 个答案:

答案 0 :(得分:1)

尝试在preTanslateMessage函数中调用relayevent。

来自MSDN:http://msdn.microsoft.com/en-US/library/x61cthdf(v=vs.80).aspx

为了向工具提示控件通知重要消息,例如WM_LBUTTONXXX消息,您必须将消息转发到工具提示控件。此中继的最佳方法是在所有者窗口的PreTranslateMessage函数中调用CToolTipCtrl :: RelayEvent。

以下示例说明了一种可能的方法(假设工具提示控件名为m_ToolTip):

if(pMsg->message== WM_LBUTTONDOWN ||
        pMsg->message== WM_LBUTTONUP ||
        pMsg->message== WM_MOUSEMOVE)
m_ToolTip.RelayEvent(pMsg);

return CMyView::PreTranslateMessage(pMsg);

如果你正在使用上面的VS2010,你可以使用CMFCButton,它有一个设置工具提示的方法,让生活更轻松。