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

单击按钮后不显示MFC按钮工具提示,mfc,windows-xp,tooltip,windows-messages,Mfc,Windows Xp,Tooltip,Windows Messages,我正在使用MFC CTOLTIPCTRL为按钮创建工具提示。现在,我在Windows XP中运行应用程序时遇到问题。当我将鼠标放在按钮上时,工具提示将弹出,但单击按钮后,不会显示工具提示。在Windows 7中,没有此类问题。我使用了以下代码来创建工具提示 pToolTip->Create(this); TOOLINFO ToolInfo; ToolInfo.cbSize = sizeof(TOOLINFO); ToolInfo.lpszText = const_cast&l

我正在使用MFC CTOLTIPCTRL为按钮创建工具提示。现在,我在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);
pToolTip->Create(这个);
工具信息工具信息;
ToolInfo.cbSize=sizeof(ToolInfo);
ToolInfo.lpszText=const_cast(szToolTiptText);
ToolInfo.hinst=AfxGetInstanceHandle();
ToolInfo.hwnd=pButton->m_hwnd;
ToolInfo.uFlags=TTF_子类| TTF_IDISHWND;
ToolInfo.uId=(UINT)pButton->m\u hWnd;
pToolTip->SendMessage(TTM_ADDTOOL,0,(LPRAM)和ToolInfo);

预翻译消息
功能中尝试call relayevent

从MSDN:

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

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


如果您使用的是上面提到的VS2010,您只需使用CMFCButton即可,它有一种设置工具提示的方法,使操作更加轻松。

请尝试使用
pretranslatemessage
函数中的call relayevent

从MSDN:

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

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

如果您使用的是上面提到的VS2010,您只需使用CMFCButton,它有一个设置工具提示的方法,使生活更加轻松

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

return CMyView::PreTranslateMessage(pMsg);