为什么使用GetParent画线,鼠标指针与屏幕上的线隔一段距离?代码如下:/* CDC *hdc=GetDC();hdc->MoveTo(Mypoint.x,Mypoint.y);hdc->LineTo(point);ReleaseDC(hdc);*/CClientDC ccdc(GetParent());// CWindowDC ccdc(GetParent());;ccdc.MoveTo
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/30 23:55:18
为什么使用GetParent画线,鼠标指针与屏幕上的线隔一段距离?代码如下:/* CDC *hdc=GetDC();hdc->MoveTo(Mypoint.x,Mypoint.y);hdc->LineTo(point);ReleaseDC(hdc);*/CClientDC ccdc(GetParent());// CWindowDC ccdc(GetParent());;ccdc.MoveTo
为什么使用GetParent画线,鼠标指针与屏幕上的线隔一段距离?
代码如下:
/* CDC *hdc=GetDC();
hdc->MoveTo(Mypoint.x,Mypoint.y);
hdc->LineTo(point);
ReleaseDC(hdc);*/
CClientDC ccdc(GetParent());
// CWindowDC ccdc(GetParent());;
ccdc.MoveTo(Mypoint);
ccdc.LineTo(point.x,point.y);
上面的例子一个是没用,一个是用了的.
结果却不一样.鼠标指针与屏幕隔一段距离,当画线的时候,鼠标总在下面,而画的线总比鼠标高出一截.而最底下的却画不出来
为什么呢?我并没改什么啊.只有一个可能!GetParent
用GetDesktopWindow()也是一样.鼠标指针总是屏幕画线的下面一段距离..
为什么使用GetParent画线,鼠标指针与屏幕上的线隔一段距离?代码如下:/* CDC *hdc=GetDC();hdc->MoveTo(Mypoint.x,Mypoint.y);hdc->LineTo(point);ReleaseDC(hdc);*/CClientDC ccdc(GetParent());// CWindowDC ccdc(GetParent());;ccdc.MoveTo
首先我要说的是你的情况是正常的,而且确实是GetParent()做的怪,因为是指向父窗口的,但你捕获到的点的坐标是View类窗口的坐标,假设你捕获到的点是(10,10),那你画出来的线就是MainFrame窗口的(10,10)点(MainFrame窗口坐标的(0,0)点是工具栏的左上角的坐标).所以你总会看到画出来的线比鼠标要高出一点(就高出工具栏的高度).致于为什么下面的画不出来,道理是一样的,因为捕获不到那里的坐标.不知道你能不能明白呢!