当我们用VC的MFC大框架编程时,在单文档和多文档的程序中,当我们将鼠标放到系统提供的工具栏按钮,或菜单上时,系统会自动弹出一个小的提示框,给出此项功能的帮助或提示,非常友好,那在我们自己的程序中,如何实现此功能呢?本文将给出一个简单的编程实例。
其实VC有一个ActiveX的控件:Tooltip,正是为实现此功能而设计。具体编程实现:
一。用VC6.0生成一个基于对话框的工程。在对话框上放置以下控件,ID和字符如下:
控件类型 ID TEXT
静态文本 CStatic ID_LABEL1 "Label"
单选按钮 CRadio ID_RADIO1 "Radio1"
复选按钮 CCheck ID_CHECK1 "Check1"
二。选择菜单 Project——Add To Project——Components and Controls ,
在打开文件对话框中,选择 Visual C++ Components目录,
选择添加Tooltips Support控件,
注意:在下面需要选择要把此控件加入的对话框,正确选择要加入的对话框,点击插入。完成。系统自动生成如下的消息响应函数和代码。
在OnInitDialog()函数中系统自动添加下面代码
m_tooltip.Create(this);
m_tooltip.Activate(TRUE);
添加PreTranslateMessage(MSG* pMsg)消息响应函数,和代码
BOOL CXv003Dlg::PreTranslateMessage(MSG* pMsg)
{
m_tooltip.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
以上都是系统自动生成的,编译执行程序,当我们把鼠标放到控件上时,并没有出现想要的提示框。别着急,还需要手动加入如下代码在OnInitDialog()中,在m_tooltip.Activate(TRUE);的后面。代码书写完整后的函数如下:
BOOL CXv003Dlg::PreTranslateMessage(MSG* pMsg)
{
m_tooltip.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
BOOL CXv003Dlg::OnInitDialog()
{
m_tooltip.Create(this);
m_tooltip.Activate(TRUE);
CWnd* pW;
pW = GetDlgItem(IDC_CHECK1);
m_tooltip.AddTool(pW,"Check1");
pW = GetDlgItem(IDC_RADIO1);
m_tooltip.AddTool(pW,"Radio1");
pW = GetDlgItem(IDC_BUTTON1);
m_tooltip.AddTool(pW,"Button1");
pW = GetDlgItem(IDC_LABEL1);
m_tooltip.AddTool(pW,"Label1");
return TRUE;
}
编译执行,当把鼠标放到控件上时,就可以看到我们设定的提示字符了。
此程序在VC6.0,winxp系统下调试通过。