MFC在鼠标点击位置画实心圆

CPointpt;GetCursorPos(&pt);CClientDCClientDC(this);CBrushbrush,*oldbrush;brush.Create... CPoint pt;
GetCursorPos(&pt);

CClientDC ClientDC(this);
CBrush brush,*oldbrush;
brush.CreateSolidBrush(RGB(0,0,0));
oldbrush=ClientDC.SelectObject(&brush);
ClientDC.Ellipse(pt.x-15,pt.y-15,pt.x+15,pt.y+15);
ClientDC.SelectObject(oldbrush);

用这段代码画的圆跟鼠标点击位置相差很远很远,这是为什么?怎么改正?

我是新手,代码都是复制来的,希望说的浅显一点,先谢谢了。
展开
 我来答
直男救星来了
2011-05-13 · TA获得超过673个赞
知道小有建树答主
回答量:168
采纳率:100%
帮助的人:203万
展开全部
出现这个问题又两个原因:
1、你获取鼠标坐标的方法不对,不应该用GetCursorPos()方法,而是在响应鼠标按下事件的消息响应函数中有一个特定的参数记录的当前鼠标按下时的坐标。
2、就是一个客户区坐标和屏幕坐标的差别问题,两者因为使用了不同的坐标系,实际的位置会有差异。你需要使用ScreenToClient这样的函数将屏幕坐标转换为客户区坐标。
建议你去看一下这两节视频,看完后你的问题就迎刃而解:
孙鑫VC++由入门到精通:第4章 简单绘图
孙鑫VC++由入门到精通:第10章 绘图控制
hlm123yy
推荐于2017-12-16 · TA获得超过116个赞
知道答主
回答量:94
采纳率:0%
帮助的人:78.9万
展开全部
GetCursorPos(&pt);获取的是屏幕坐标
要获取鼠标点击位置 鼠标按下函数里记录点的位置就行
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梅格妮206
推荐于2018-03-23 · TA获得超过347个赞
知道答主
回答量:51
采纳率:100%
帮助的人:20.9万
展开全部
可以添鼠标单击的事件函数。
OnLButtonUp(UINT nFlags, CPoint point)
point即包涵鼠标点击的X,Y坐标。然后以此为圆心就OK了!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
scorpiodwy
2011-05-13 · TA获得超过262个赞
知道答主
回答量:151
采纳率:0%
帮助的人:106万
展开全部
GetCursorPos(&pt);这函数检取光标的位置,以屏幕坐标表示。
你应该是获取客户区坐标,用这个函数GetClientRect(LPRECT lpRect)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式