为什么使用GetParent画线,鼠标指针与屏幕上的线隔一段距离?代码如下:/* CDC *hdc=GetDC();hdc->MoveTo(Mypoint.x,Mypoint.y);hdc->LineTo(point);ReleaseDC(hdc);*/CClientDC ccdc(GetParent());// CWindowDC ccdc(GetParent());;ccdc.MoveTo
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/30 12:39:55
![为什么使用GetParent画线,鼠标指针与屏幕上的线隔一段距离?代码如下:/* CDC *hdc=GetDC();hdc->MoveTo(Mypoint.x,Mypoint.y);hdc->LineTo(point);ReleaseDC(hdc);*/CClientDC ccdc(GetParent());// CWindowDC ccdc(GetParent());;ccdc.MoveTo](/uploads/image/z/14233826-2-6.jpg?t=%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A8GetParent%E7%94%BB%E7%BA%BF%2C%E9%BC%A0%E6%A0%87%E6%8C%87%E9%92%88%E4%B8%8E%E5%B1%8F%E5%B9%95%E4%B8%8A%E7%9A%84%E7%BA%BF%E9%9A%94%E4%B8%80%E6%AE%B5%E8%B7%9D%E7%A6%BB%3F%E4%BB%A3%E7%A0%81%E5%A6%82%E4%B8%8B%3A%2F%2A+CDC+%2Ahdc%3DGetDC%28%29%3Bhdc-%3EMoveTo%28Mypoint.x%2CMypoint.y%29%3Bhdc-%3ELineTo%28point%29%3BReleaseDC%28hdc%29%3B%2A%2FCClientDC+ccdc%28GetParent%28%29%29%3B%2F%2F+CWindowDC+ccdc%28GetParent%28%29%29%3B%3Bccdc.MoveTo)
为什么使用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)点是工具栏的左上角的坐标).所以你总会看到画出来的线比鼠标要高出一点(就高出工具栏的高度).致于为什么下面的画不出来,道理是一样的,因为捕获不到那里的坐标.不知道你能不能明白呢!