一个简单的绘制直线的小程序,即鼠标点着不放可以绘制图线,问题是一移动窗口之后图
线就全不见了,我知道是由于调用了OnDraw()函数,而绘制图线在鼠标的Down()和Up()函
数里,我想问一下有没有类似InvalidateRect()之类的函数可以不让这些图象跑掉?

解决方案 »

  1.   

    问题是ValidateRect()调用的是OnDraw()函数,而我画的图形不在OnDraw()里面,所有每次改变窗口的时候图形就都不见了
      

  2.   

    你必须把你的画线数据放到文档中去,然后在OnDraw()函数中把数据调出来重绘。
    如果你要原码的话,我可以发给你相关代码。
      

  3.   

    那你就要作一个记录你线的起始位置的数祖了,在鼠标Down()和Up()中只向数祖添加点,在OnDraw中根据点数组画线
      

  4.   

    当你触发了WM_PAINT之后就会重画,你要在WM_PAINT消息中处理,用一个全局链表
      

  5.   

    用一个LIST把每个线段的起始和结束点存起来,OnDraw()的时候再从LIST里读出来
      

  6.   

    我现在已经有了一个CLine类型的数组CLineArray,我在鼠标的Down()和Up()函数里用CLineArray.Add(pLine);可是报错,不知道怎么回事
      

  7.   

    回复: Viconia() 
    现在的问题是这样的,我每画一根线,就往CLineArray里加一根,然后在OnDraw()里用一个循环把CLineArray里的线重新画出来,可是还是不行,当窗口改变的时候,线还是都不见了,不知怎么回事???
      

  8.   

    那一定是因为你并没有在OnDraw中画出来,(代码有问题)