解决方案 »

  1.   

    代码逻辑混乱,View2的DC传给View1去绘制!OnDraw不要人为去调用,那是触发WM_PAINT消息时系统调用的。
    所以,你在View2中发消息给View1通知它刷新不就是的,Invalidate\InvalidateRect,不要调用OnDraw也就不存在传参的问题了。
      

  2.   

    代码逻辑混乱,View2的DC传给View1去绘制!OnDraw不要人为去调用,那是触发WM_PAINT消息时系统调用的。
    所以,你在View2中发消息给View1通知它刷新不就是的,Invalidate\InvalidateRect,不要调用OnDraw也就不存在传参的问题了。
    我要画两个东西,希望view自动生成的时候画一个,点击按钮时再画两一个
      

  3.   

    每个View对应一个自己的DC,你硬要它用别人DC当然不行,但你可以通过消息和内存方式将内容进行交换。
      

  4.   

    不要直接调用OnDraw
    代之调用View1的Invalidate函数
      

  5.   

    利用View指针调用,调用Invalidate/InvalidateRect()即可。
    如pView->Invalidate/InvalidateRect();
      

  6.   

    楼上说的都对,哥帮你总结一下:
    方法一:
    自定义消息映射。当在view2中需要调用view1中函数时,采用SendMessage()的方法通知view1重绘,即给view1窗口发消息;
    方法二:
    在view1和view2中分别添加一个静态成员变量:
    static CView1* pCView1;
    static CView2* pCView2;
    然后在OnInitialUpdate()函数中对其赋值:
    pCView1= (CView1*)FromHandle(GetSafeHwnd());
    pCView2= (CView2*)FromHandle(GetSafeHwnd());
    最后,行了,随便用:
    CView1::pCView1->Invalidate();
    或者
    CView2::pCView2->Invalidate();