用Visual C++实现窗口的工具提示
摘要: 本文介绍了工具提示的原理及用法,并给出其在对话框和框架窗口中的两种不同的实现方法。
关键词: 工具提示 对话框 框架窗口 Visual C++
1.前言
工具提示是一个小的弹出窗口,在窗口中显示一行文本用以描述工具的用途或其他信息。工具提示在多数情况下是隐藏的,只有当鼠标的光标放在工具上并停留大约500毫秒时才出现在光标附近,而当用户按下鼠标或光标离开工具时又重新隐藏起来。工具提示是Windows 95提供的一个新的特性,它使程序的用户界面更为美观,使用更为方便。Visual C++ 4.0为此提供了一个控件类CToolTipCtrl,由它来管理工具提示控件。
2.工具提示的原理及编程实现
工具提示控件要显示提示文本时,会发出TTN_NEEDTEXT消息以获取该文本,因此通过处理该消息我们可以为各个不同的工具提供它们所需的提示。但是,对于基于对话框的程序(从CDialog类派生)和基于框架窗口的程序(从CFrameWnd派生),它们对TTN_NEEDTEXT消息的处理是不同的。对于从CFrameWnd派生的窗口,它具有一个缺省的消息处理方法可以自动显示与工具相联系的提示文本;而对于从CDialog派生的窗口,这一缺省消息处理器并没有被调用,因此需要我们自己提供消息处理方法来处理这个消息。下面将根据这两种不同的情况来讨论。
2.1在对话框中显示工具提示
为了在对话框中显示工具提示,可以按照以下步骤进行:
(1)调用CWnd::EnableToolTips(BOOL bEnable),传人参数为TRUE,使该窗口支持工具提示的显示。
(2)加入消息映射项如下:
ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTip)
其中,TTN_NEEDTEXT为消息名,0表示工具提示控件的标识符,它始终是0,OnToolTip为TTN_NEEDTEXT消息的处理函数名。
(3)在对话框类的声明中加入如下处理函数的原型说明:
afx_msg BOOL OnToolTip(UINT id,NMHDR *pNMHDR,LRESULT *pResult);
其中,id是发出消息的工具标识符,在本函数中不用,因为可以通过NMHDR这一结构获得。NMHDR结构包含了有关通知消息的信息,其定义如下:
typedef struct tagNMHDR {
HWND hwndFrom;
UINT idFrom;
UINT code;
} NMHDR;
- 上一篇:vc中显示bmp常用的几个函数介绍
- 下一篇:VC读取dat文件