WTL使用tooltip详解

wtl已经提供tooltip的控件,我们只需要在自己需要的地方加入即可。

下面简单的介绍了wtl中tooltip的使用。

1、声明一个CTooltipCtrl的对象

 

CTooltipCtrl m_toolTip;

 

2、在相应的地方创建CTooltipCtrl对象,一般是在OnCreate里面:


m_ctrlTip.Create(m_hWnd); //将自己的窗口创建为ToolTip的父窗口 m_ctrlTip.Activate(FALSE); //隐藏ToolTip m_ctrlTip.AddTool(m_hWnd); //添加自己到tool中 m_ctrlTip.SetMaxTipWidth(260); //设置最大字符数为260个 

 

3、处理鼠标消息:

在所有的鼠标消息里面对toolTip进行处理,最后让鼠标消息得到其他的处理,比如我们下面要处理的鼠标移动的消息。

 

LRESULT KYourClass::OnMouseMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { MSG msg = { m_hWnd, uMsg, wParam, lParam }; if (m_ctrlTip.IsWindow()) { m_ctrlTip.RelayEvent(&msg); } bHandled = FALSE; // 让其他的处理器能够处理 return 0; } 

 

4、处理鼠标移动的消息:

LRESULT KYourClass::OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { int xPos = GET_X_LPARAM(lParam); int yPos = GET_Y_LPARAM(lParam); POINT pt = { xPos, yPos }; BOOL bNeedTip = 1; //判断鼠标位置,需要显示的时候才显示 if (bNeedTip) { m_ctrlTip.UpdateTipText(_T("hello ToolTip"), m_hWnd); m_ctrlTip.Active(TRUE); } else { //不需要显示,隐藏 m_ctrlTip.Active(FALSE); } bHandled = FALSE; // Leave the message to next case return 0; } 

 

5、最好在鼠标leave的时候将tip隐藏起来。

 

希望能够带给您帮助,有什么问题可以留言进行讨论,祝您好运。

 

你可能感兴趣的:(程序--Windows)