VC++在状态栏上显示鼠标的位置

在线等单文档做的voidCTmView::OnMouseMove(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandler... 在线等
单文档做的
void CTmView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CStatusBar*pFrame=(CStatusBar*)AfxGetMainWnd();
CStatusBar*pStatusBar=(CStatusBar*)pFrame->GetDescendantWindow(AFX_IDW_STATUS_BAR);
CString strMousePoint;
strMousePoint.Format("%3d,%3d",point.x,point.y);
pStatusBar->SetPaneText(pStatusBar->CommandToIndex(IDS_INDICATOR_MOUSE),strMousePoint);
CView::OnMouseMove(nFlags, point);
}
展开
 我来答
百度网友1d8e8b9
2007-10-29 · TA获得超过913个赞
知道小有建树答主
回答量:589
采纳率:60%
帮助的人:316万
展开全部
楼上说的有一定的局限性,就是只有鼠标在本窗口中的时候有效,移出本窗口的时候,就不起作用了。如果想跟踪鼠标在屏幕的任何位置,那就要用到3中方法:

★简单一种:
设定一个定时器,然后在里面使用GetCurrentPos(好像是这个函数,反正有个能获得鼠标指针当前位置的函数,查阅一下MSDN能确定一下吧),这个函数能得到鼠标在屏幕的位置,不是某个窗口的。

★稍微复杂点的方法:
使用鼠标钩子,截获鼠标移动的消息,然后分离出鼠标的位置,显示在要显示的地方。

★基于DirectInput的方法:
创建一个DirectInput对象,创建一个鼠标设备,设置协作级别为非独占和后台属性,这样就能获得鼠标在屏幕上的任意位置了。
stone_dongdong
2007-10-29 · TA获得超过2853个赞
知道大有可为答主
回答量:1636
采纳率:0%
帮助的人:999万
展开全部
哈哈,我抢先了,分给我吧

万能方法。

直接拦截app(也就是程序主线程)中的消息。
先在xxxApp.cpp文件上面定义一个全局变量(或者CxxxApp的成员变量):HWND hStatusBarWnd;保存要显示鼠标坐标的窗口,(这步你通过在CMainWnd里面实现也可以)。在InitInstance里面初始化。
重载 CxxxApp 的PretranslateMessage成员函数:加如下这段:
if ( pMsg ->message == WM_MOUSEMOVE )
{
......CString strPos;
.......lParam 里面保存的是鼠标座标,低自己x,高字节y,为相对于 pMsg->hwnd的相对座标。
......SetWindowText(hStatusWnd,。。。
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
皇家救星1985
2007-10-29 · TA获得超过1131个赞
知道大有可为答主
回答量:1579
采纳率:0%
帮助的人:1646万
展开全部
直接添加WM_MOUSEMOVE消息应该就可以了啊

将获得的鼠标信息用CString的Format函数转成字符串

再写到状态栏里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ec167ac34
2007-10-30 · TA获得超过1788个赞
知道小有建树答主
回答量:1312
采纳率:0%
帮助的人:1148万
展开全部
..拙笔
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式