工具栏按钮不显示提示信息解决思路

工具栏按钮不显示提示信息

我的工具栏用m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD     |WS_VISIBLE|CBRS_ALIGN_TOP|TBSTYLE_TOOLTIPS)创建                            
其中也使用了TBSTYLE_TOOLTIPS参数,但是就是不能显示提示信息                            
谁能教教我怎么做

------解决方案--------------------
为工具栏添加工具提示

[3.1] 在CDlgMenuToolbarDlg类定义中手工添加消息映射函数的定义,如下黑体部分
//{{AFX_MSG(CDlgMenuToolbarDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()

[3.2] 在CDlgMenuToolbarDlg.cpp添加函数的实现代码
//工具栏提示
BOOL CDlgMenuToolbarDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
ASSERT(pNMHDR-> code == TTN_NEEDTEXTA || pNMHDR-> code == TTN_NEEDTEXTW);

// UNICODE消息
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
//TCHAR szFullText[512];
CString strTipText;
UINT nID = pNMHDR-> idFrom;

if (pNMHDR-> code == TTN_NEEDTEXTA && (pTTTA-> uFlags & TTF_IDISHWND) ||
pNMHDR-> code == TTN_NEEDTEXTW && (pTTTW-> uFlags & TTF_IDISHWND))
{
// idFrom为工具条的HWND
nID = ::GetDlgCtrlID((HWND)nID);
}

if (nID != 0) //不为分隔符
{
strTipText.LoadString(nID);
strTipText = strTipText.Mid(strTipText.Find( '\n ',0)+1);

#ifndef _UNICODE
if (pNMHDR-> code == TTN_NEEDTEXTA)
{
lstrcpyn(pTTTA-> szText, strTipText, sizeof(pTTTA-> szText));
}
else
{
_mbstowcsz(pTTTW-> szText, strTipText, sizeof(pTTTW-> szText));
}
#else
if (pNMHDR-> code == TTN_NEEDTEXTA)
{
_wcstombsz(pTTTA-> szText, strTipText,sizeof(pTTTA-> szText));
}
else
{
lstrcpyn(pTTTW-> szText, strTipText, sizeof(pTTTW-> szText));
}
#endif

*pResult = 0;

// 使工具条提示窗口在最上面
::SetWindowPos(pNMHDR-> hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE|
SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);
return TRUE;
}
return TRUE;
}

[3.3] 在CDlgMenuToolbarDlg.cpp中添加消息映射,请看如下代码中的黑体部分
BEGIN_MESSAGE_MAP(CDlgMenuToolbarDlg, CDialog)
//{{AFX_MSG_MAP(CDlgMenuToolbarDlg)
ON_WM_PAINT()
ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText )
//}}AFX_MSG_MAP
END_MESSAGE_MAP()