在学习《VC++深入详解》的时候,对着孙鑫老师的视频学习。刚开始学习画线,遇到了几个问题。
画线的时候,为什么我的电脑画线有些迟钝呢?鼠标点下去,然后拉开一段距离后松开,线还不显示出来,要等到再次点击松开之后才会显示。这是为什么呢?在别人的电脑上不会产生这类问题。
画线采用的方法是,在CTestView类里面定义CPoint变量m_ptOrigin,存放鼠标左键点击时的坐标。
在CTestView里面添加OnLButtonDown和OnLButtonUp函数。在OnLButtonUp函数里面添加代码
 CClientDC dc(this);
 dc.MoveTo(m_ptOriginal);
 dc.LineTo(point);
还有一个问题。孙鑫老师介绍一个CWindowDC dc(GetDesktopWindow())和CWindowDC dc(GetDesktopWindow())可以分别获取桌面窗口和CMainFrame窗口,我按照这个方法写,但是没能画出对应的线。还有一个疑问是,线的起点是通过CTestView里面的OnLButtonDown函数获取的,跟这个类相联系的是View窗口,但是如果那个起点都在view窗口外面的话,那起点怎么获取得到呢?
求解答啊,各位大神!

解决方案 »

  1.   

    你的代码放在OnLButtonUp里,当然需要在鼠标弹起才能显示啊。你应该放在MouseMove事件里
      

  2.   

    CClientDC dc(this);
    dc.MoveTo(m_ptOriginal);
    dc.LineTo(point);
    这样画的是直线,首先鼠标点下获得直线的起点,然后一直按着左键移动;当松开左键时,才画出一条从鼠标左键按下位置到鼠标左键松开位置的直线。如果画的是曲线,那就会立即显示出来,当然和话直线的方式也有些不一样的。这些问题都是一些细节的问题,如果你的鼠标在画线区域外面按下了,这样就不能画线了,如果想了解细节请参阅计算机图形学方面的知识。
      

  3.   

    我的也是一样的问题 不过在LineTo后添加m_ptOriginal=point后就可以比较顺利的划出线来了,不过速度还是有点迟缓 我的是win7 不晓得是不是跟系统有关系