我看有的帖子说在OnDraw()重画是必须得!
但是我不会,不知该怎样重画图形!
能不能提供代码!
谢谢!

解决方案 »

  1.   

    原因应该是DC的映射模式的问题。
    默认的是MM_TEXT方式,这是以像素点为标准的,你应该改成逻辑单位与设备无关
      

  2.   

    在你的程序里应该有坐标图的数据吧?
    那么在OnDraw里也根据当前的数据画一遍。
      

  3.   

    但是若在OnDraw中有重画的代码,那么程序一开始就画图.
    而我只是响应菜单消息,才画图并保持视图的完整!
    我该怎么办!
      

  4.   

    可以在onDraw中控制第一次不要画嘛!
    程序开始int flag=0
    void CMyView::OnDraw(CDC *pDC)
    {
    .......
    if(flag)
    {
      //画图
    }
    }
    在单击菜单函数中flag=1
      

  5.   

    把你在菜单响应方法中的代码搬到CMyView::OnDraw()方法中,在菜单响应方法中将一个BOOL量置成TRUE,然后在OnDraw()方法一开始判断一下该BOOL量的值,如果是TRUE就画,否则就什么都不作就可以了。
      

  6.   

    我试过!但是程序说我有未定义的bool变量!
    to sniper
    该怎么声明bool变量??
      

  7.   

    BOOL不是bool
    为什么非要用BOOL,int不是一样吗.....