wtl已經提供tooltip的控制項,我們只需要在自己需要的地方加入即可。
下面簡單的介紹了wtl中tooltip的使用。
1、聲明一個CTooltipCtrl的對象:
CTooltipCtrl m_toolTip;
2、在相應的地方建立CTooltipCtrl對象,一般是在OnCreate裡面:
m_ctrlTip.Create(m_hWnd);//將自己的視窗建立為ToolTip的父視窗<br /> m_ctrlTip.Activate(FALSE);//隱藏ToolTip<br /> m_ctrlTip.AddTool(m_hWnd);//添加自己到tool中<br /> m_ctrlTip.SetMaxTipWidth(260); //設定最大字元數為260個
3、處理滑鼠訊息:
在所有的滑鼠訊息裡面對toolTip進行處理,最後讓滑鼠訊息得到其他的處理,比如我們下面要處理的滑鼠移動的訊息。
LRESULT KYourClass::OnMouseMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)<br />{<br /> MSG msg = { m_hWnd, uMsg, wParam, lParam };<br /> if (m_ctrlTip.IsWindow())<br /> {<br /> m_ctrlTip.RelayEvent(&msg);<br /> }<br /> bHandled = FALSE; // 讓其他的處理器能夠處理<br /> return 0;<br />}
4、處理滑鼠移動的訊息:
LRESULT KYourClass::OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)<br />{<br /> int xPos = GET_X_LPARAM(lParam);<br /> int yPos = GET_Y_LPARAM(lParam);<br /> POINT pt = { xPos, yPos };<br /> BOOL bNeedTip = 1; //判斷滑鼠位置,需要顯示的時候才顯示</p><p> if (bNeedTip)<br /> {<br /> m_ctrlTip.UpdateTipText(_T("hello ToolTip"), m_hWnd);<br /> m_ctrlTip.Active(TRUE);<br /> }<br /> else<br /> {<br /> //不需要顯示,隱藏<br /> m_ctrlTip.Active(FALSE);<br /> }<br /> bHandled = FALSE; // Leave the message to next case<br /> return 0;<br />}
5、最好在滑鼠leave的時候將tip隱藏起來。
希望能夠帶給您協助,有什麼問題可以留言進行討論,祝您好運。