CToolTipCtrl的使用(Using CToolTipCtrl--VS2010)

来源:互联网 发布:波士顿矩阵法 编辑:程序博客网 时间:2024/05/29 03:19
CToolTipCtrl类封装了ToolTip控件的功能,是一个显示单行文字用来描述应用程序里一个工具的用途的小弹出式窗口。ToolTip窗口是隐藏的,只有当光标放在一个工具上并且停留大约1.5秒才会显示出来。ToolTip出现在光标附近,用户点击了鼠标键或者移动了光标,工具提示窗口就会消失。
  • 创建工具提示的方法
        MS提供了三个类用于创建和管理ToolTip控件,CWnd,CToolBarCtrl,CToolBarCtrl和CMFCToolTipCtrl。这些类中的工具提示成员函数隐藏了Windows通用控件API,CToolBarCtrl和CToolBarCtrl类继承于Cwnd.
        CWnd提供了四个成员函数用于创建和管理ToolTip: EnableToolTipsCancelToolTipsFilterToolTipMessageOnToolHitTest。想了解更多ToolTips是如何实现的,可以查看这几个成员函数。
        如果你用CToolBarCtrl创建了一个工具栏,你可以使用下面的成员函数直接实现这个工具栏的ToolTips:GetToolTips和SetToolTips。想了解更多ToolTips是如何实现的,可以查看这几个成员函数和工具提示通告消息的处理。
        CToolTipCtrl类提供了Windows通用ToolTip控件的功能,一个ToolTip控件可以给一个或者更多工具提供信息。一个ToolTip也是一个窗口,就像一个子窗口、一个控件或者是一个由程序在窗口客户区定义的一个矩形区域。CMFCToolTipCtrl继承自CToolTipCtrl,提供了更多的视觉风格和功能。
  • ToolTip控件的设置
    ToolTip控件激活或者不激活。当你设置它激活时,ToolTip控件在光标放在工具上时就会显示。设置为非激活状态时,ToolTip控件不会出现即使光标放在了一个工具上。调用Activate()激活或关闭一个TooTip控件。

通过设置TTS_ALWAYSTIP风格,你可以让一个激活的ToolTip控件在光标放在一个工具上时显示工具提示,不用理会拥有ToolTip控件的窗口是否处于激活状态。如果你没有使用这个风格,toolTip控件只会在父窗口激活的时候出现,没有激活时则不会出现。

大多数的应用程序包含对应于菜单命令的包含一些工具的工具栏。对这些工具,ToolTip控件显示和菜单项相一致的内容,这无疑会很方便。系统自动从传递给ToolTip控件的所有字符串中分离&加速字符,除非你使用了TTS_NOPREFIX风格(无前缀)。


  • 使用CToolTipCtrl创建和控制一个CToolTipCtrl对象
  1. 构造一个CToolTipCtrl对象。
  2. 调用Create创建窗口工具提示通用控件并附加到创建的CToolTipCtrl对象。
  3. 调用AddTool给工具提示控件控件注册一个工具,这样当光标移动到这个工具上时就会显示存储在工具提示里的信息。
  4. 调用SetToolInfo设置工具提示为某个工具保存的信息。
  5. 调用SetToolRect为工具设置新的矩形边界。
  6. 调用HitTest测试一个点是否在给定工具的矩形边界内,如果是则返回工具的信息。
  7. 调用GetToolCount获取已注册到工具提示的工具数量。
  •     控制工具提示控件
    CToolTipCtrl类提供了一组成员函数用来控制CToolTipCtrl对象的各种属性和工具提示窗口。
可以调用GetDelayTime和SetDelayTime获取和设置工具提示窗口的初始化、弹出、重画间隔。使用以下的函数改变工具提示窗口的外观。
                GetMargin和SetMargin  获取和设置工具提示边框与提示文本的间隔宽度。
                GetMaxTipWidth和SetMaxTipWidth 获取和设置工具提示窗口的最大宽度
                GetTipBkColor和SetTipBkColor 获取和设置工具提示窗口的背景颜色
                GetTipTextColor和SetTipTextColor 获取和设置工具提示窗口文本颜色
    为 了使工具提示控件接收到重要的消息,例如WM_LBUTTONXXX消息,你必须把消息传递给工具提示控件。最好的方法是在所有者窗口的PreTranslateMessage函数中调用CToolTipCtrl::RelayEvent,下面的例子阐述了一个可用的方法(假设工具提示控件为m_ToolTip)。
C++
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)
{
    if(pMsg->message== WM_LBUTTONDOWN ||
          pMsg->message== WM_LBUTTONUP ||
          pMsg->message== WM_MOUSEMOVE)
       {
          m_ToolTipCtrl.RelayEvent(pMsg);
       }
 
    return  CDialog::PreTranslateMessage(pMsg);
}
调用Pop成员函数,立即移除一个视图里的工具提示窗口。
原创粉丝点击