MFC中控制Tips的显示 - lingyun1120
from: http://www.cnblogs.com/lingyun1120/archive/2011/11/09/2243279.html
MFC中为ToolTips生成了一个类CToolTipCtrl,一般使用步骤如下:
1、 添加CToolTipCtrl成员变量
2、在父窗口中调用EnableToolTips(TRUE);
3、在窗口的OnCreate或者Dlg的OnInitialDlg中向ToolTip中添加需要显示Tip的子窗口,并同时指定相应的显示字串
CToolTipCtrl::AddTool()
4、 重载父窗口的 BOOL PreTranslateMessage(MSG* pMsg) ,在函数中调用CToolTipCtrl成员变量的RelayEvent()
正常情况下,经过上面的四步,当鼠标移动到窗口上时自动显示tips信息。如果想控制tips在满足一定条件下显示,该如何处理呢?可以通过以下方式实现:
m_toolTipsCtrl.UpdateTipText(_T("大写锁定打开可能造成密码设置错误"), pFocusWnd);
CToolInfo sTinfo; // 提示信息
m_toolTipsCtrl.GetToolInfo(sTinfo, pFocusWnd);
sTinfo.uFlags = TTF_TRACK; // 显示方式设置
m_toolTipsCtrl.SetToolInfo(&sTinfo);
// 下面是关键两步
m_toolTipsCtrl.SendMessage(TTM_TRACKPOSITION, 0, (LPARAM)MAKELONG(rect.left, rect.bottom));
m_toolTipsCtrl.SendMessage(TTM_TRACKACTIVATE, TRUE, (LPARAM)&sTinfo ); // tips显示
另外,通过Activate控制tips的有效性,这样就可以完全控制tips的显示,比如大写提示信息等。
列子:
case WM_RBUTTONDOWN:
GetCursorPos(¤tposition);
// Prepare TOOLINFO structure for use as tracking ToolTip.
ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = TTF_IDISHWND | TTF_TRACK | TTF_ABSOLUTE;
ti.hwnd = m_thiswnd;
ti.uId = (UINT)m_thiswnd;
ti.hinst = ghinst;
ti.lpszText = "右健 ";
ti.rect.left = ti.rect.top = ti.rect.bottom = ti.rect.right = 0; // Add the tool to the control, displaying an error if needed.
SendMessage(ToolTipWnd,TTM_ADDTOOL,0,(LPARAM)&ti);
SendMessage(ToolTipWnd,TTM_TRACKPOSITION,0,
(LPARAM)MAKELPARAM(currentposition.x+15,currentposition.y+15));
SendMessage(ToolTipWnd,TTM_UPDATETIPTEXT,0,(LPARAM)&ti);
SendMessage(ToolTipWnd,TTM_TRACKACTIVATE,(WPARAM)TRUE,(LPARAM)&ti);
SendMessage(ToolTipWnd,TTM_SETDELAYTIME,TTDT_AUTOPOP, (LPARAM)(INT) MAKELONG(1000,0));
MFC中控制Tips的显示 - lingyun1120的更多相关文章
- js中控制小数点的显示位数的技术整理
js中自带方法控制小数点的显示位数(四舍五入) alert((12.9299).toFixed(2)); //12.93 alert((12.9243).toFixed(2)); //12.92 小数 ...
- Confluence 6 在编辑器中控制参数的显示
你可以决定宏参数在 Confluence 编辑器中如何进行显示的. 在默认的情况下,在宏占位符下尽可能显示能显示的所有参数: 你可以控制这里显示的参数数量,通过这种控制你可能尽量的为编辑者提供有效的信 ...
- react中控制元素的显示与隐藏
1.通过 state 变量来控制是否渲染元素 类似于 vue 的 v-if 方法是通过变量来控制是否加载元素的,如果变量为false,内容就直接不会渲染的. class Demo extends Re ...
- 微软BI 之SSRS 系列 - 解决Pie Chart 中控制标签外部显示与标签重叠的问题
当 Pie Chart 页面标签过多的时候,往往数字标签内容挤做一团.我们要做的是:第一,让标签在饼图外部显示:第二,不让标签重叠. 一种做法是通过修改数字标签属性 - Series Label Pr ...
- MFC中控制COMBOBOX控件的下拉框高度
这是使用Visual Stiduo的小技巧哦.今天上网找来的.在界面设计面板上,点击ComboBox的下拉箭头,会另外出现一个虚边框.可以调整其大小.这个就是实现运行的时候下拉边框的默认值啦.
- Android中如何控制元素的显示隐藏?
在Android程序中,有时需要程序开启时默认隐藏某个控件,当单击某个按钮时才触发显示控件的内容.比如在查询员工资料时,提交查询后再显示查询到的表格内容: Android中控制元素的隐藏参考以下代码. ...
- MFC中状态栏显示鼠标坐标位置
原文:MFC中状态栏显示鼠标坐标位置,蝈蝈 1,利用MFC向导创建一个应用工程ewq. 2,打开ResourceView,右击Menu菜单,插入Menu,在空白处双击,Caption中填入Point. ...
- GridControl 控制列中的控件显示
一.需求描述 根据条件判断Checkbox的显示,先上个图,, 类似Demo中的这个,因为不能控制文本的显示,所以需对该列的其它事件做些处理, 二.解决方案 1.添加GridControl上需要的控 ...
- 简简单单,jquery中,使用checkbox控制div的显示与隐藏
今天开发代码时,发现好久不用jquery就生疏了. 所以作这个记录, 使用checkbox控制div的显示与隐藏. 一,html代码处: <input type="checkbox&q ...
随机推荐
- PL/SQL编程—控制语句
SQL> create or replace procedure sp_pro5(id_in varchar2) is v_sal mytest.salary%type; begin sel ...
- html-3,table 表格标签 tr th td caption thead tbody tfoot 的简单使用
<!-- table border='1' style="border-collapse:collapse;" border 表格的像素宽度 border-collapse: ...
- docker内域名无法解析问题
进入 Docker 容器后,在 hosts 文件中,配置域名解析. # 进入 docker 容器 docker exec -it my_web /bin/bash # 修改 hosts 文件 vi / ...
- 【Head First Servlets and JSP】笔记24:include指令与include动作 & param动作 & foward动作
include指令与include动作 1.样例代码 <%@ page contentType="text/html;charset=UTF-8" language=&quo ...
- 【Java Web】把逻辑名映射到servlet文件
Ⅰ.请求URL Ⅱ.容器搜索DD,查找servlet-mapping <?xml version="1.0" encoding="ISO-8859-1" ...
- Java学习笔记之Java 继承中的构造方法
参考
- JMeter并发性测试
JMeter并发性测试 一.JMeter简介 JMeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因为jmet ...
- Sybase:delete与truncate、drop区别
Sybase:delete与truncate.drop区别 区别: TRUNCATE TABLE TABLENAME:删除内容.释放空间但不删除定义. DELETE FROM TABLENAME:删除 ...
- ASP.NET MVC jQuery 树插件在项目中使用方法(一)
jsTree是一个 基于jQuery的Tree控件.支持XML,JSON,Html三种数据源.提供创建,重命名,移动,删除,拖"放节点操作.可以自己自定义创建,删 除,嵌套,重命名,选择节点 ...
- ES6 实现阶乘
// 实现一个5的阶乘function factorial(n, acc = 1) { console.log(`n=${n};acc=${acc}`) if(n <= 1) return ac ...