TOOLTIPS 的相关用法
首先 ,tooltips的创建:
HWND CDlgXXX::CreateToolTip(int toolID, PTSTR pszText)
{if (!toolID || !pszText){return FALSE;}HINSTANCE hinst = AfxGetInstanceHandle();
HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,WS_POPUP |TTS_ALWAYSTIP | TTS_BALLOON,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,GetParent()->m_hWnd, NULL, hinst, NULL);if (!hwndTool || !hwndTip){return (HWND)NULL;} TOOLINFO toolInfo = { 0 };toolInfo.cbSize = sizeof(toolInfo);toolInfo.hwnd = this->m_hWnd;toolInfo.uFlags = TTF_SUBCLASS;toolInfo.uId = toolID;toolInfo.lpszText = pszText;SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo);return hwndTip;
}
这里说明一下, CreateWindowEx 的参数,第二个参数代表这个CWND 是个 tooltips ,第四个参数设置了tooltips的几个情况,TTS_ALWAYSTIP 说明tooltips是经常显示(也就是鼠标移动到上面的时候,就进行显示),TTS_BALLOON 说明了提示框是个 泡泡形状 (语言难以描述,各位看客可以试下)。至于其他的参数可以忽略 。都是默认值.
填充TOOLINFO 结构体,通过 发送TTM_ADDTOOL这个消息进行添加tootips。
这里需要注意的是 TTF_SUBCLASS 这个参数,这个值是说,不用自己进行处理,系统会自动根据鼠标移动情况进行动态的显示TOOLTIPS 。
在这里另外一个比较重要的参数是 : TTF_IDISHWND
说这个参数之前先说两种 tooltips:
第一种: 控件tooltips ,通俗点说,就是给控件添加tooltips,tooltips 覆盖了整个控件。这种tooltips 是根据控件的句柄进行区分,TOOLINFO 中的rect 可以不用填写。
第二种: 区域tooltips,通俗点说,就是给某个特定的区域添加tooltips,tooltips覆盖了这个区域。这种tooltips 是根据填写的ID 进行区分,TOOLINFO 中的rect 可以必须进行填写。此时的uID 可以是定义的任意值,例:#define TOOLTIPS_ID 30000 ,但是要保证唯一性。
TTF_IDISHWND "ID is hWnd".
如果你指定了这个标志,就意味着你要使用第一种tooltips,则你必须用控件的句柄填充uId成员,
如果你不指定这个成员,就意味着你要使用第二种tooltips,客户区窗口的一方形区域.在这种情况下,你就必须以方形区域的大小填充rect成员.
之后 再说一下 TOOLINFO 中的lpszText 参数 。 这个参数 可以 填写 LPSTR_TEXTCALLBACK 这个值,用来进行实时更新tooltips 要显示的文字信息 。
填写LPSTR_TEXTCALLBACK之后,每次tooltips 需要显示的时候都会发送一个TTN_NEEDTEXT消息。 在TTN_NEEDTEXT 消息中可以进行修改显示的文字信息。
TTN_NEEDTEXT 的使用方法:
ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTip)
afx_msg BOOL OnToolTip(UINT id,NMHDR * pNMHDR,LRESULT * pResult);
BOOL CDlgxxxx::OnToolTip(UINT id,NMHDR * pNMHDR,LRESULT * pResult)
{
TOOLTIPTEXT * pTTT = (TOOLTIPTEXT *)pNMHDR;
UINT uID = pNMHDR->idFrom;
HWND hWnd = pNMHDR->hwndFrom;
if(uID == NULL) return FALSE;
switch(uID)
{
case xxx:
break;
}
return TRUE;
}
这里可以根据 hwnd 和uid 的不同进行 区分不同的tooltips;
另外在说说 其他的几个常用的指令 :
所有的指令中 cbSize 是必须填写的,填写后,在SendMessage 。否则会失败。
TTM_ADDTOOL
- wParam
- 0.
- lParamTOOLINFO 结构体指针。
添加一个tooltips ,需要注意的是 TTF_IDISHWND 指令
TTM_DELTOOL
wParam
lParamTOOLINFO 结构体指针。
删除一个tooltips ,这里根据 uid 和hwnd 来制定删除的tooltips 。
TTM_GETTOOLINFO : 得到当前的TOOLINFO 信息。
TTM_SETTOOLINFO : 在 发送 这个命令之前一定先 发送TTM_GETTOOLINFO 消息得到 TOOLINFO 之后再进行 发送 set
TTM_UPDATETIPTEXT : 更新 tipstext 的信息 ,注意穿进去的
lpszText 必须已经申请好空间。
剩下的比较懒 ,有时间 补齐。
TOOLTIPS 的相关用法相关推荐
- Java中Date各种相关用法
Java中Date各种相关用法 本文主要介绍Java中Date各种相关用法. AD: Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=C ...
- 【c++】14.编译proto和proto相关用法
编译proto和proto相关用法 关于proto相关的知识可以参考系列博客 https://blog.csdn.net/daaikuaichuan/category_9869251.html [xx ...
- $.extend 的相关用法
$.extend 的相关用法 1.1 $.extend(result,item1,item2-..) 将所有的参数项都合并result中,返回result,会破坏result的结构. 1.2 $.ex ...
- boost::mpl::always相关用法的测试程序
boost::mpl::always相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::always相关用法的测试程序 C++实现代码 #include <boost ...
- boost::mpl::advance相关用法的测试程序
boost::mpl::advance相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::advance相关用法的测试程序 C++实现代码 #include <boo ...
- boost::mpl::aux::template_arity相关用法的测试程序
boost::mpl::aux::template_arity相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::aux::template_arity相关用法的测试程序 ...
- boost::mpl::aux::msvc_is_class相关用法的测试程序
boost::mpl::aux::msvc_is_class相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::aux::msvc_is_class相关用法的测试程序 C+ ...
- boost::mpl::aux::largest_int相关用法的测试程序
boost::mpl::aux::largest_int相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::aux::largest_int相关用法的测试程序 C++实现代 ...
- boost::mpl::inherit_linearly相关用法的测试程序
boost::mpl::inherit_linearly相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::inherit_linearly相关用法的测试程序 C++实现代 ...
- boost::mpi::wait_any相关用法的测试程序
boost::mpi::wait_any相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mpi::wait_any相关用法的测试程序 C++实现代码 #include <s ...
最新文章
- mysql数据库映射到内存_基于共享内存的数据库映射
- express 的 middleware 设计
- MySQL 的 binlog 编号竟然可以这么大!
- Kattis之旅——Prime Reduction
- ios 调试的相关内容收集
- 最新Visual Studio 2010 下载及学习资料
- WINCE6.0+S3C6410主要时钟控制
- 关键字—修饰方法、类、属性和变量的关键字(共9个)
- sqlquerystress
- exit()和_exit()的区别
- EASE-Grid投影
- 移动端---媒体查询
- 九种NPP\GPP数据集介绍和下载
- 面试必备 | 带你彻底搞懂 Python 生成器。
- R语言 Kmeans聚类、PAM聚类、层次聚类、EM聚类
- Linux的进程管理,ssh创建远程连接与免密操作,文件传输,虚拟机联网
- C语言编程的双大于号,VC 双小于 双大于号
- UE4如何实现裸眼3D效果 3D立体效果
- Check It Again: Progressive Visual Question Answeringvia Visual Entailment(SAR)
- 少儿编程让孩子玩出智慧