添加与显示工具栏提示信息

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC添加与显示工具栏提示信息
(2010-04-14 17:37:06)
转载
标签:
分类:编程技术
vc
添加
显示
工具栏
toolbar
提示信息
it
对于包含在 CFrameWnd 派生的父窗口中的按钮或其他控件,工具提示会自动显示。

这是因为 CFrameWnd 有一个用于 TTN_GETDISPINFO 通知的默认处理程序,该程序处理来自与控件关联的工具提示 (ToolTip) 控件的 TTN_NEEDTEXT 通知。

但是,当 TTN_NEEDTEXT 通知从一个与非 CFrameWnd 窗口中的控件(如对话框或者窗体视图上的控件)关联的工具提示 (ToolTip) 控件中发出时,该默认处理程序并不被调用。

因此,有必要为 TTN_NEEDTEXT 通知消息提供一个处理函数,以便为子控件显示工具提示。

由 CWnd::EnableToolTips 为窗口提供的默认工具提示并不包含与窗口关联的文本。

为检索要显示的工具提示文本,在即将显示工具提示窗口之前,TTN_NEEDTEXT 通知被发送到工具提示(ToolTip) 控件的父窗口。

如果这条消息的处理程序没有将一些值分配给 TOOLTIPTEXT 结构的 pszText 成员,工具将没文本可显示。

添加工具提示的具体步骤如下:
1.在类(如对话框)的.h头文件中
BOOL OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult);
2、在消息映射中添加如下代码:
BEGIN_MESSAGE_MAP()
/// 以下是控件响应工具信息提示响应函数,范围为“0~无穷大”
ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
/// 以下是有控件范围限制的响应工具信息提示响应函数,范围为“0~0xFFFF”//ON_NOTIFY_EX_RANGE(TTN_NEEDTEXT, 0, 0xFFFF, OnToolTipNotify)
END_MESSAGE_MAP()
3.在类的.cpp文件中添加函数的实现:
BOOL **::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult ) {
BOOL bResult = TRUE;
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
UINT_PTR uID =pNMHDR->idFrom;
if (pTTT->uFlags & TTF_IDISHWND)
{
/// uID 其实是控件在窗口中的句柄
int nID = ::GetDlgCtrlID((HWND)nID);
CString strToolTips(_TEXT(""));
///判断控件ID
switch (nID)
{
case ID_BUTTON1:
strToolTips.Format(_TEXT("%s"),_TEXT("Tip Info1"));
break;
case ID_BUTTON2:
strToolTips.Format(_TEXT("%s"),_TEXT("Tip Info2"));
break;
case ID_BUTTON3:
strToolTips.Format(_TEXT("%s"),_TEXT("Tip Info3"));
break;
default:
bResult = FALSE;
}
if(TRUE == bResult)
{
*pResult = 0;
_tcscpy(pTTT->lpszText, strToolTips);
pTTT->hinst = NULL;
}
}
return bResult;
}
4.启用工具提示:
/// 在类的初始化函数中添加工具栏提示的启用代码,不一定要在OnInitialDialog函数中添加
BOOL **::OnInitialDialog()
{
CDialog::OnInitialUpdate();
//添加工具栏提示的启用代码
EnableToolTips(TRUE);
return TRUE;
}。

相关文档
最新文档