MFC 给非控件添加ToolTip
界面上有一个CStatic控件,在这个控件上绘制了有文本,按钮等图形,共同构成了这个CStatic控件的背景,如图,"ON AIR"并不是一个真正的CButton按钮,而是一个假的按钮,现在要给这个按钮添加ToolTip.
思路如下,先给CStatic控件添加ToolTip,然后获取按钮的位置,通过鼠标是否在按钮上来判断是否显示tooltip.
步骤:
1. 在CStatic父窗体类中添加CToolTipCtrl类型的成员变量。
1 | CToolTipCtrl m_pContentTip; |
2. 重载虚函数BOOL PreTranslateMessage( MSG* pMsg );
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | BOOL CDlgNew::PreTranslateMessage( MSG* pMsg ) { if (pMsg->message== WM_LBUTTONDOWN || pMsg->message== WM_LBUTTONUP || pMsg->message== WM_MOUSEMOVE) {
if (airBtnRect.PtInRect(pMsg->pt)) // 在这里判断鼠标是否在按钮中。 { if (!m_pContentTip.IsWindowVisible()) // 判断tooltip是否已经显示,如果已经显示则不执行下面的显示操作,避免重复刷新。 { m_pContentTip.Activate(TRUE); m_pContentTip.UpdateTipText(_T( "Click to me." ),GetDlgItem(IDC_STATIC_ALL)); //IDC_STATIC_ALL为CStatic控件ID。 m_pContentTip.RelayEvent(pMsg); } } else { m_pContentTip.Activate(FALSE); } } return CDialog::PreTranslateMessage(pMsg); } |