MFC中,我能过GetCursorPos()来获取鼠标当前的屏幕坐标,但是我想获取当前窗口的坐标。

请问有什么函数能把这个屏幕坐标转换成当前的窗口坐标吗?急求,谢了!... 请问有什么函数能把这个屏幕坐标转换成当前的窗口坐标吗?急求,谢了! 展开
 我来答
wildkey
推荐于2017-09-29 · TA获得超过195个赞
知道答主
回答量:74
采纳率:100%
帮助的人:114万
展开全部
有现成的ScreenToClient函数,你可以百度搜一下。

例:
void CTest25Dlg::OnButton1()
{
CRect r(0,0,100,100);
CPoint pt(0,0);
ScreenToClient(&r);
ScreenToClient(&pt);
}
执行下面的两行后,r,pt的值变成了相对对话框左上角的值
追问
嗯,谢谢了,有才!就是要这样转换的。
百度网友f4a2718
2011-08-29 · 超过30用户采纳过TA的回答
知道答主
回答量:177
采纳率:0%
帮助的人:95.4万
展开全部
因为你使用的这个函数并没有在窗口中定义,要实现这个功能的话你只只有通过一个消息,那就是添加消息WM_NCHITTEST .得到如下的代码。
UINT CServerAddrDlg::OnNcHitTest(CPoint point)
{
// TODO: Add your message handler code here and/or call default

return CDialog::OnNcHitTest(point);
}

void CServerAddrDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CDialog::OnActivate(nState, pWndOther, bMinimized);

// TODO: Add your message handler code here

}
OnNcHitTest函数中的point就是你需要的点的坐标了。还有就是一个全局的API函数,我记得不清了,因为我做的时候都是用这个方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-08-29
展开全部
如果是本身程序,把你取的坐标减去窗体的left和top值即可

如果是别的程序的,得需要得到窗体的HWND,然后就能得到窗体的left和top值,原理同上
追问
嗯,说的很对。我改了,还是不太对,你说的别的程序是什么意思?
追答
就是操作别的软件啊,比如qq啦,浏览器啦等等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式