MFC中如何时刻显示鼠标在对话框客户区上的位置信息

Fairchild_Lhy 2014-09-10 06:30:59
如题,就是说当我在对话框的客户区里移动鼠标的时候,就以CToolTip来时刻显示当前鼠标所在的坐标。
问题就在于我看MSDN研究了半天的CToolTipCtrl还是没能弄懂该怎么写代码。
求大大给个代码的示例,以及主要在OnMouseMove()这个消息响应函数里,该写些什么内容,最好在重点处有注释,谢谢了~
...全文
556 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nick_Wang94 2016-03-05
  • 打赏
  • 举报
回复
引用 3 楼 hubo86915531 的回复:

CToolTipCtrl  m_tip;//定义成员变量

//初始化
m_tip.Create(this,TTS_ALWAYSTIP);  //创建CToolTipCtrl
m_tip.AddTool(this);                          //将CToolTipCtrl与相应的控件对应起来
m_tip.SetFont(&m_Font);                  //设置字体 可以默认不设置

m_tip.ShowWindow(SW_HIDE);//不需要显示的地方
m_tip.UpdateTipText(str,this);//OnMouseMove() str 为需要显示的

PreTranslateMessage(MSG* pMsg) 
if(m_tip.m_hWnd != NULL)m_tip.RelayEvent(pMsg);

这个写在哪里?
hubo86915531 2014-09-26
  • 打赏
  • 举报
回复
引用 6 楼 Fairchild_Lhy 的回复:
[quote=引用 3 楼 hubo86915531 的回复:]

CToolTipCtrl  m_tip;//定义成员变量

//初始化
m_tip.Create(this,TTS_ALWAYSTIP);  //创建CToolTipCtrl
m_tip.AddTool(this);                          //将CToolTipCtrl与相应的控件对应起来
m_tip.SetFont(&m_Font);                  //设置字体 可以默认不设置

m_tip.ShowWindow(SW_HIDE);//不需要显示的地方
m_tip.UpdateTipText(str,this);//OnMouseMove() str 为需要显示的

PreTranslateMessage(MSG* pMsg) 
if(m_tip.m_hWnd != NULL)m_tip.RelayEvent(pMsg);

非常感谢,能不能顺便问一下,怎么样控制这个tooltip显示的时间,比如我鼠标放在那里不动了,此时持续显示着Tip,能不能设置比如显示3秒后,如果期间鼠标没有移动的话,就让tip自动消失掉呢[/quote] 做个定时器 调用m_tip.ShowWindow(SW_HIDE); 就可以隐藏了
Fairchild_Lhy 2014-09-16
  • 打赏
  • 举报
回复
引用 3 楼 hubo86915531 的回复:

CToolTipCtrl  m_tip;//定义成员变量

//初始化
m_tip.Create(this,TTS_ALWAYSTIP);  //创建CToolTipCtrl
m_tip.AddTool(this);                          //将CToolTipCtrl与相应的控件对应起来
m_tip.SetFont(&m_Font);                  //设置字体 可以默认不设置

m_tip.ShowWindow(SW_HIDE);//不需要显示的地方
m_tip.UpdateTipText(str,this);//OnMouseMove() str 为需要显示的

PreTranslateMessage(MSG* pMsg) 
if(m_tip.m_hWnd != NULL)m_tip.RelayEvent(pMsg);

非常感谢,能不能顺便问一下,怎么样控制这个tooltip显示的时间,比如我鼠标放在那里不动了,此时持续显示着Tip,能不能设置比如显示3秒后,如果期间鼠标没有移动的话,就让tip自动消失掉呢
昨夜无风 2014-09-14
  • 打赏
  • 举报
回复
直接在状态栏显示就可以啊!
凌乱哥 2014-09-14
  • 打赏
  • 举报
回复
2楼正解,1楼说了啥
hubo86915531 2014-09-13
  • 打赏
  • 举报
回复

CToolTipCtrl  m_tip;//定义成员变量

//初始化
m_tip.Create(this,TTS_ALWAYSTIP);  //创建CToolTipCtrl
m_tip.AddTool(this);                          //将CToolTipCtrl与相应的控件对应起来
m_tip.SetFont(&m_Font);                  //设置字体 可以默认不设置

m_tip.ShowWindow(SW_HIDE);//不需要显示的地方
m_tip.UpdateTipText(str,this);//OnMouseMove() str 为需要显示的

PreTranslateMessage(MSG* pMsg) 
if(m_tip.m_hWnd != NULL)m_tip.RelayEvent(pMsg);

pipi20091001 2014-09-13
  • 打赏
  • 举报
回复
在视图或者对话框所在类里,声明两个private变量:
CPoint m_pt; //保存鼠标坐标
CString strPosition; //用来保存输出的内容
在其构造函数中,初始化变量
m_pt.x = 0; 
m_pt.y = 0;

OnDraw函数如下:
void CMyView::OnDraw(CDC* pDC) 
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
strPosition.Format("当前鼠标坐标:%d,%d", m_pt.x,m_pt.y);
pDC->TextOut(m_pt.x,m_pt.y,strPosition);
}
添加MouseMove消息,消息处理函数OnMouseMove如下:
void CMyView::OnMouseMove(UINT nFlags, CPoint point) 
{
m_pt.x = point.x;
m_pt.y = point.y;
Invalidate();
CView::OnMouseMove(nFlags, point);
}
仅供参考。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧