用AppWizard新建一SDI工程(无Doc/View),将其CChildView改为继承CScrollView,再在其OnInitialUpdate中设置SetScrollSize(MM_TEXT,CSize(2000,1000))用来显示一张2000*1000的图片,现在发现问题就是只能在CChildView的OnDraw中对pDC操作才能画整幅图,如果在其他消息处理中比如OnLButtonDown中先pDC=GetDC(),再对pDC操作却不能显示整幅图,也就是说这个GetDC得到的只能是当前窗口Client区域的DC,而不是整个800*600的DC,怎么解决这个问题???

解决方案 »

  1.   

    而不是整个2000*1000的DC,说错了。
    各位老大帮帮忙,周一要交差啊。急死我了,各位帮忙up也会有分!!
      

  2.   

    如果不行的话,再试试OnPaint里的办法:CPaintDC dc(this);
      

  3.   

    GetWindowDC不行,和GetDC效果差不多,只是把滚动条也算里面了。
      

  4.   

    只有client区域内的东西才是当前可见的啊。你要改变当前不可见的部分,似乎应该直接改变图片数据,而不是直接在屏幕上画。另外,对于有滚动条的窗口,调用绘图函数之前应该调用OnPrepareDC(pDC).
      

  5.   

    我的目的是将图片显示出来后,用滚动条滚动可以看到整幅图片,而现在是只能看到client区域内的一块,滚动条滚动后其他地方都是白的,没有画出来。
      

  6.   

    拖动滚动条画一次.把画图的函数写到OnPaint里边试试看
      

  7.   

    我认为你应该自己构造一个类存储着幅度图片,然后在OnDraw函数里画出,给你个例子 :
    CMyPicture: public CObject
    {
    private
      CBitmap m_bitmap;
    public
      void Draw(CDC *pDC);
    }
    CChildView::OnDraw(CDC *pDC)
    {
       CMyPicture MyPicture;
       MyPicture.Draw(pDC);
    }其余的你可以自己写了,我建议你看看VC60从入门到精通这本书