MFC中,我能过GetCursorPos()来获取鼠标当前的屏幕坐标,但是我想获取当前窗口的坐标。
答案:3 悬赏:60 手机版
解决时间 2021-03-25 10:41
- 提问者网友:趣果有间
- 2021-03-24 20:30
MFC中,我能过GetCursorPos()来获取鼠标当前的屏幕坐标,但是我想获取当前窗口的坐标。
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-03-24 21:31
有现成的ScreenToClient函数,你可以百度搜一下。
例:
void CTest25Dlg::OnButton1()
{
CRect r(0,0,100,100);
CPoint pt(0,0);
ScreenToClient(&r);
ScreenToClient(&pt);
}
执行下面的两行后,r,pt的值变成了相对对话框左上角的值追问嗯,谢谢了,有才!就是要这样转换的。
例:
void CTest25Dlg::OnButton1()
{
CRect r(0,0,100,100);
CPoint pt(0,0);
ScreenToClient(&r);
ScreenToClient(&pt);
}
执行下面的两行后,r,pt的值变成了相对对话框左上角的值追问嗯,谢谢了,有才!就是要这样转换的。
全部回答
- 1楼网友:第幾種人
- 2021-03-24 22:42
如果是本身程序,把你取的坐标减去窗体的left和top值即可
如果是别的程序的,得需要得到窗体的HWND,然后就能得到窗体的left和top值,原理同上追问嗯,说的很对。我改了,还是不太对,你说的别的程序是什么意思?追答就是操作别的软件啊,比如qq啦,浏览器啦等等
如果是别的程序的,得需要得到窗体的HWND,然后就能得到窗体的left和top值,原理同上追问嗯,说的很对。我改了,还是不太对,你说的别的程序是什么意思?追答就是操作别的软件啊,比如qq啦,浏览器啦等等
- 2楼网友:酒醒三更
- 2021-03-24 22:17
因为你使用的这个函数并没有在窗口中定义,要实现这个功能的话你只只有通过一个消息,那就是添加消息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函数,我记得不清了,因为我做的时候都是用这个方法。
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函数,我记得不清了,因为我做的时候都是用这个方法。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯