前面虽然可以显示信息提示,但是,还是不能显示状态栏提示,以下实现:
class CViewClientToolBar : public CMFCToolBar
{
virtual void OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL bDisableIfNoHndler)
{
CMFCToolBar::OnUpdateCmdUI((CFrameWnd*) GetOwner(), bDisableIfNoHndler);
}
virtual BOOL AllowShowOnList() const { return FALSE; }
virtual BOOL OnUserToolTip(
CMFCToolBarButton* pButton,
CString& strTTText
) const;
public:
CViewClientToolBar();
protected:
int m_tips_id;
public:
DECLARE_MESSAGE_MAP()
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnMouseLeave();
};
///
BEGIN_MESSAGE_MAP(CViewClientToolBar, CMFCToolBar)
ON_WM_MOUSEMOVE()
ON_WM_MOUSELEAVE()
END_MESSAGE_MAP()
CViewClientToolBar::CViewClientToolBar()
{
m_tips_id=-1;
}
BOOL CViewClientToolBar::OnUserToolTip(
CMFCToolBarButton* pButton,
CString& strTTText
) const
{
switch(pButton->m_nID)
{
case ID_BUTTON_REFRESH:
strTTText=g_LoadLanguageString(IDS_STRING_CONSOLE_MENU_REFRESH);
break;
}
return TRUE;
}
void CViewClientToolBar::OnMouseMove(UINT nFlags, CPoint point)
{
int id=HitTest(point);
if (id!=m_tips_id)
{
m_tips_id=id;
CString strTTText;
CMFCToolBarButton * pButton=GetButton(id);
if (pButton!=NULL)
{
switch(pButton->m_nID)
{
case ID_BUTTON_REFRESH:
strTTText=g_LoadLanguageString(IDS_STRING_CONSOLE_MENU_REFRESH);
break;
}
}
AfxGetMainWnd()->SendMessage(WM_SETMESSAGESTRING, 0, (LPARAM)strTTText.GetBuffer(0));
}
CMFCToolBar::OnMouseMove(nFlags, point);
}
void CViewClientToolBar::OnMouseLeave()
{
m_tips_id=-1;
AfxGetMainWnd()->SendMessage(WM_SETMESSAGESTRING, AFX_IDS_IDLEMESSAGE, 0);
CMFCToolBar::OnMouseLeave(0, 0);
}
class CViewClientToolBar : public CMFCToolBar
{
virtual void OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL bDisableIfNoHndler)
{
CMFCToolBar::OnUpdateCmdUI((CFrameWnd*) GetOwner(), bDisableIfNoHndler);
}
virtual BOOL AllowShowOnList() const { return FALSE; }
virtual BOOL OnUserToolTip(
CMFCToolBarButton* pButton,
CString& strTTText
) const;
public:
CViewClientToolBar();
protected:
int m_tips_id;
public:
DECLARE_MESSAGE_MAP()
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnMouseLeave();
};
///
BEGIN_MESSAGE_MAP(CViewClientToolBar, CMFCToolBar)
ON_WM_MOUSEMOVE()
ON_WM_MOUSELEAVE()
END_MESSAGE_MAP()
CViewClientToolBar::CViewClientToolBar()
{
m_tips_id=-1;
}
BOOL CViewClientToolBar::OnUserToolTip(
CMFCToolBarButton* pButton,
CString& strTTText
) const
{
switch(pButton->m_nID)
{
case ID_BUTTON_REFRESH:
strTTText=g_LoadLanguageString(IDS_STRING_CONSOLE_MENU_REFRESH);
break;
}
return TRUE;
}
void CViewClientToolBar::OnMouseMove(UINT nFlags, CPoint point)
{
int id=HitTest(point);
if (id!=m_tips_id)
{
m_tips_id=id;
CString strTTText;
CMFCToolBarButton * pButton=GetButton(id);
if (pButton!=NULL)
{
switch(pButton->m_nID)
{
case ID_BUTTON_REFRESH:
strTTText=g_LoadLanguageString(IDS_STRING_CONSOLE_MENU_REFRESH);
break;
}
}
AfxGetMainWnd()->SendMessage(WM_SETMESSAGESTRING, 0, (LPARAM)strTTText.GetBuffer(0));
}
CMFCToolBar::OnMouseMove(nFlags, point);
}
void CViewClientToolBar::OnMouseLeave()
{
m_tips_id=-1;
AfxGetMainWnd()->SendMessage(WM_SETMESSAGESTRING, AFX_IDS_IDLEMESSAGE, 0);
CMFCToolBar::OnMouseLeave(0, 0);
}