Visual Studio 2008 中的MFC已经集成了BCG GUI库的很多功能,可以很容易的建立VS2005或者Office2007风格的界面。
今天写了一个测试程序,发现默认的CMFCToolBar没有tooltips。找了一些资料,解决如下:
在Toolbar所属的View中添加消息 :
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnNeedTipText)
在消息响应函数中加入代码:
BOOL CClassView::OnNeedTipText(UINT id, NMHDR* pNMHDR, LRESULT* pResult)
{
UINT_PTR nID = pNMHDR->idFrom - 1;
CMFCToolBarButton *pBtn = m_wndToolBar.GetButton(nID);
if (pBtn)
{
TCHAR szBuff[64];
::LoadString(AfxGetResourceHandle(), pBtn->m_nID, szBuff, sizeof(szBuff) / sizeof(TCHAR));
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
pTTT->lpszText = szBuff;
pTTT->hinst = AfxGetResourceHandle();
}
return TRUE;
}