WTL使用tooltip详解

    技术2022-05-18  31

    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隐藏起来。

     

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

     


    最新回复(0)