MFC中,目的是要在状态栏中显示当前鼠标的位置,要求在MainFream中实现。

要求在mainframe中实现是因为我们课本就是这样显示时间的,现在我想用这样的方法来实现显示鼠标位置,先谢谢大家了。在MainFrm.cpp中添加如下代码:static... 要求在mainframe中实现是因为我们课本就是这样显示时间的,现在我想用这样的方法来实现显示鼠标位置,先谢谢大家了。
在MainFrm.cpp中添加如下代码:

static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
IDR_xx,//这个是添加的
};

在CMainFrame中添加函数OnMouseMove函数来获取鼠标位置,代码如下:

void CMainFrame::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
s=point.x;//s为int型,包含鼠标X值
t=point.y;//t为int型,包含鼠标Y值
CFrameWnd::OnMouseMove(nFlags, point);
}

还有Ontimer函数,代码如下:
void CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
CString k;
k.Format("%d,%d",s,t);
m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(IDR_xx),k,true);
CFrameWnd::OnTimer(nIDEvent);
}

OnCreat函数中包括代码如下:
在return 0;前面添加了代码:
SetTimer(1,1000,NULL);

好像就是全部了,结果是这样的:

数值非常大。我测试了好像是在OnMouseMove中的数字没有传递到s和t中。但是不知道为什么,求解。再次谢谢,我已经写得很详细了。。。
展开
 我来答
危献e3
2013-04-24 · TA获得超过2053个赞
知道大有可为答主
回答量:2738
采纳率:0%
帮助的人:1954万
展开全部
s和t的定义在哪里, 是single document么

这样思路不对 你的timer很难跟上mousemove消息的速度
追问
在classview的名称上点右键定义的。在MainFrm.h中定义的。
追答
如果是single document的话, Frame是无法接受mousemove消息的 断点看看 显示部分是view

void CMFCTestView::OnMouseMove(UINT nFlags, CPoint point)
{
CString strToPrint;

strToPrint.Format(TEXT("%d,%d"),point.x, point.y);

static_cast(theApp.m_pMainWnd)->SetStatusBarText(strToPrint);

CView::OnMouseMove(nFlags, point);
}

int CMainFrame::SetStatusBarText(CString strInfo)
{
m_wndStatusBar.SetPaneText(0, strInfo);
return 0;
}
ssilspro
2013-04-24 · TA获得超过2625个赞
知道大有可为答主
回答量:1148
采纳率:0%
帮助的人:1713万
展开全部
他没有收到消息,s和t还是未初始化的值,消息都跑上面的视图或子框架里去了
你直接在ontime里GetCursorPos吧,时间改短点,1000/30,每秒30次比较流畅
CPoint pt;
CRect rt;
GetCursorPos(&pt);
ScreenToClient(&pt);
GetClientRect(&rt);
if(rt.PtInRect(pt)){
CString str;
str.Format("%d,%d",pt.x,pt.y);
GetMessageBar()->SetWindowText(str);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式