2012-08-10 144 views
1

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

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

尝试呼叫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,它必须设置一个方法工具提示,让生活变得更容易。