BtnST.cpp中
SetTooltipText函数内有如下代码
if (m_ToolTip.GetToolCount() == 0)
{
CRect rectBtn;
GetClientRect(rectBtn);
m_ToolTip.AddTool(this, lpszText, rectBtn, 1);
}
可以看出rectBtn为(0,0,0,0),而AddTool的lpRectTool解释如下
lpRectTool
Pointer to a RECT structure containing coordinates of the tool's bounding rectangle. The coordinates are relative to the upper-left corner of the client area of the window identified bypWnd.
所以,原因为虽然设置了ToolTip,但ToolTip的产生前提是在鼠标挪到范围在(0,0,0,0)的位置内才显示tootip,所以不显示。
一种改法:
步骤一:修改CButtonST::SetTooltipText函数,改后如下:
CRect rectBtn;
GetClientRect(rectBtn);
if (m_ToolTip.GetToolCount() == 0)
{
m_ToolTip.AddTool(this, lpszText, rectBtn, 1);
} // if
m_ToolTip.SetToolRect(this, 1, rectBtn);
步骤二:
增加OnSize处理函数
void CButtonST::OnSize(UINT nType, int cx, int cy)
{
CButton::OnSize(nType, cx, cy);
if ((m_ToolTip.GetSafeHwnd() != NULL)
&& (m_ToolTip.GetToolCount() >= 1))
{
m_ToolTip.SetToolRect(this, 1, CRect(0, 0, cx, cy));
}
}