【MFC中处理TTN_NEEDTEXT通知消息】
在MFC中,工具提示(tooltip)是一种常见的用户界面元素,用于在用户将鼠标悬停在控件上时提供相关信息。当工具提示控件需要显示文本时,它会发送TTN_NEEDTEXT
通知消息给父窗口,以便父窗口提供工具提示文本。
本篇博客将介绍如何处理TTN_NEEDTEXT
通知消息,以在MFC应用程序中为工具提示控件设置自定义的文本内容。
1. 定义消息处理函数
首先,在您的窗口类中定义一个消息处理函数,用于处理TTN_NEEDTEXT
通知消息。该函数将负责根据需要设置工具提示文本。
BOOL CMyWnd::OnToolTipText(UINT id, NMHDR* pNMHDR, LRESULT* pResult)
{TOOLTIPTEXT* pTTT = (TOOLTIPTEXT*)pNMHDR;// 根据需要设置工具提示文本if (pTTT->uFlags & TTF_IDISHWND){// 从HWND获取ID值,并设置对应的工具提示文本// 例如:UINT nID = ::GetDlgCtrlID((HWND)pTTT->hdr.idFrom);switch (nID){case IDC_MY_BUTTON:_tcscpy(pTTT->lpszText, _T("This is a button tooltip"));break;// 其他控件的工具提示设置}}*pResult = 0;return TRUE;
}
在上述示例代码中,我们使用TOOLTIPTEXT
结构来获取通知消息的详细信息。通过检查pTTT->uFlags
中的TTF_IDISHWND
标志,我们判断pTTT->hdr.idFrom
是否为控件的句柄。如果是,我们将其转换为控件的ID,并根据需要设置工具提示文本。
请注意,消息处理函数的返回值应为BOOL
类型,并且在函数结尾处将pResult
设置为0,以指示消息已被处理。
2. 添加消息映射条目
接下来,将消息处理函数与TTN_NEEDTEXT
通知消息关联起来,以便在收到通知消息时调用相应的处理函数。
在您的消息映射表(Message Map)中添加以下条目:
BEGIN_MESSAGE_MAP(CMyWnd, CWnd)// 其他消息映射表条目...ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &CMyWnd::OnToolTipText)
END_MESSAGE_MAP()
在上述代码中,我们使用ON_NOTIFY_EX
宏将TTN_NEEDTEXT
通知消息与名为OnToolTipText
的消息处理函数关联起来。这样,当工具提示控件需要显示文本时,将触
发该处理函数。
需要注意的是,这里的第二个参数传递的是0,表示不限定特定的控件ID,而是对所有控件的TTN_NEEDTEXT
通知消息进行处理。
3. 设置工具提示控件
最后,确保在您的窗口类中创建并设置工具提示控件,以便触发TTN_NEEDTEXT
通知消息。
在您的窗口类的适当位置,创建并设置工具提示控件。例如,如果您在OnInitDialog
函数中创建对话框,可以添加以下代码:
BOOL CMyDialog::OnInitDialog()
{CDialog::OnInitDialog();// 创建工具提示控件CToolTipCtrl* pToolTip = new CToolTipCtrl();pToolTip->Create(this);// 为工具提示控件设置相关属性// 例如,设置延迟时间、自动弹出等// 将工具提示控件与父窗口关联pToolTip->AddTool(this, _T("Tooltip for the window"));// 设置工具提示控件的父窗口为当前窗口pToolTip->SetParent(this);return TRUE;
}
在上述代码中,我们创建了一个CToolTipCtrl
对象,并为其设置相关属性,例如延迟时间和自动弹出等。然后,使用AddTool
函数将工具提示控件与父窗口关联,并使用SetParent
函数将工具提示控件的父窗口设置为当前窗口。
结论
通过处理TTN_NEEDTEXT
通知消息,您可以在MFC应用程序中为工具提示控件提供自定义的文本内容。通过定义消息处理函数,并与TTN_NEEDTEXT
通知消息关联,您可以根据需要设置工具提示文本。
【MFC中处理TTN_NEEDTEXT通知消息】相关推荐
- ASP.NET中实现MSN通知消息功能
MSN由个很好的功能,就是每当你的MSN好友上线时,MSN会自动在窗体托盘的右下角由下往上弹出消息框来通知你,这个功能十分实用,比如在论坛里,当有新回复你的帖子时,系统会自动弹出消息提示框,又或者在一 ...
- VC++中的通知消息
编辑框在发生某些事件的时候会向父窗口发送通知消息,我们可以为编辑框添加消息处理函数,现在我们看看编辑框部分消息通知函数: EN_CHANGE:编辑框的内容被用户改变了,与EN_UPDATE 不同,该消 ...
- MFC中的模态对话框与非模态对话框的消息循环及消息传递问题(都可以通过SendMessage传递消息)
注意:非模态和模态对话框都有自己的消息响应过程函数WindowPro,只不过他们的调用模态是自己的消息泵,非模态是由父窗体或父窗体的上一级的消息泵来调用.模态对话框和非模态对话框都可以通过SendMe ...
- MFC中如何让一个CStatic控件响应消息
在MFC中有时需要自己Create控件,如何写一个可以响应消息的控件呢,例如:CStatic 如下: CStatic test; test.Create("my static", ...
- MFC中的几个常用类——CWnd
2019独角兽企业重金招聘Python工程师标准>>> 1 窗口类 1.1 概述 CObject └CCmdTarget └CWnd CWnd是MFC窗口类的 基类,提供了微软基础类 ...
- mfc c语言 编辑器,语法高亮编辑控件Scintilla在MFC中的简单使用
项目中要使用代码编辑器,搜索之后,发现了强大的编辑器控件Scintilla. 1.简介 Scintilla是一款开源的语法高亮编辑器控件,官方网站:http://www.scintilla.org/. ...
- 详解Windows消息分类以及WM_COMMAND与WM_NOTIFY的区别,以及模拟发送控件通知消息
Windows消息的分类 1. 标准消息(队列消息) 除WM_COMMAND之外,所有以WM_开头的消息都是标准消息,如WM_MOUSEMOVE.WM_LBUTTONUP.WM_KEYDOWN.W ...
- MFC中的CAsyncSocket类实现网络通信
近年来,利用Internet进行网际间通讯,在WWW浏 览.FTP.Gopher这些常规服务,以及在网络电话.多媒体会议等这些对实时性要求严格 的应用中成为研究的热点,而且已经是必需的了.Window ...
- MFC添加自定义消息及重写消息过程
由于MFC中无法通过类向导来自定义消息,所以需要手动添加,主要过程如下: 本文基于vs2008下通过线程实现数据实时更新的对话框运用程序 1. 定义消息(Resource.h文件中): 由于很多新控件 ...
最新文章
- js 判断 是否为android
- [MySQL FAQ]系列 -- mysqldump出错一例:打开文件数太多
- python strip_Python3 strip()方法
- 知道第一章计算机基础知识作业答案,大学计算机基础作业答案
- 多线程锁,线程池,消费者生产者模型
- php 没有权限,PHP出现操作文件没有权限怎么办?
- python---之np.prod() 函数计算数组元素乘积等
- 关于各种考勤打卡软件破解的思路和比较
- vue+vuex+vur-router+ElementUI+axios +springboot打造响应式博客项目
- lol最新聊天服务器断开,lol聊天服务器断开 英雄联盟聊天服务器连不上解决办法...
- 黑盒测试与白盒测试的区别与方法
- 我是如何学习一门新技术的
- pmp效益管理计划和做题技巧
- linux c led 驱动程序,uclinux简单LED驱动程序
- Android音频剪辑裁剪自定义view
- vps mysql_vps mysql自动关闭
- 【STM32多级界面】-LCD结构体多级图形界面框架
- 红米手机5获取Root超级权限的步骤
- 浏览器兼容性工具 Spoon Browser Sandbox
- Cesium加载局部地区单张图片底图