TOOLTIPS 的相关用法
来源:互联网 发布:付费语音问答源码 编辑:程序博客网 时间:2024/06/06 17:10
首先 ,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.
- lParam
- TOOLINFO 结构体指针。
添加一个tooltips ,需要注意的是 TTF_IDISHWND 指令
TTM_DELTOOL
删除一个tooltips ,这里根据 uid 和hwnd 来制定删除的tooltips 。
TTM_GETTOOLINFO : 得到当前的TOOLINFO 信息。
TTM_SETTOOLINFO : 在 发送 这个命令之前一定先 发送TTM_GETTOOLINFO 消息得到 TOOLINFO 之后再进行 发送 set
TTM_UPDATETIPTEXT : 更新 tipstext 的信息 ,注意穿进去的
lpszText 必须已经申请好空间。
剩下的比较懒 ,有时间 补齐。
- TOOLTIPS 的相关用法
- tooltips
- tooltips
- tooltips
- Extjs4单元格的tooltips提示
- extjs的Tooltips与QuickTips
- 解决swt tooltips不断刷新的问题
- 给JTable 的每个单元格添加 tooltips
- 解决swt tooltips不断刷新的问题
- 用jquery 做自己的tooltips
- 学习VS2010 --------- 对话框的Tooltips提示编程
- CDockablePane上面的工具条CMFCToolBar加ToolTips
- 简单实现toolTips类似的提示功能
- 几款好用的Tooltips 提示框插件
- JTable的相关用法
- CtreeCtrl的相关用法
- string 的相关用法
- string 的相关用法
- sql查询不定参数生成where子句不定参数查询
- Json入门
- JavaScript的闭包问题
- 2014 android毕设代做 代做Android毕设 安卓毕设
- unity3d动画插件iTween-路径动画的制作
- TOOLTIPS 的相关用法
- 移动GIS开发之一 基于arcgis mobile10的开发环境的搭建
- 简单数据结构之栈模拟
- poj1324 Holedox Moving
- 基于ARM Contex-A8 Tiny210的简单室内人员数目监测系统实现(3)
- Laravel教程:laravel 4安装及入门
- conn.setAutoCommit()用法及作用
- GCD-semaphore(资源)-apply
- 美华裔男生入选美军预备军官 获25万美元奖学金