SDI结构,我想实现这样的功能:在视图区每点一下鼠标就用CDC画一个东西(比如圆或者直线).请问这个视图是用什么View?在视图响应click消息然后Update可以做到么?

解决方案 »

  1.   

    你好,我们认识,
    在一般的视图就可以
    Cxxview
    处理mousemove
    mousedown
    mouseup
    消息,ONdraw()
      

  2.   

    你好!很高兴再见到你!
    CEditView也可以?我不明白,我的意思是,实现类似于powerpoint一样的功能,每点一下鼠标就多画一点东西,所以不能响应mousemove,mousedown,mouseup消息的吧?另外,ondraw()这个消息在什么情况下获得?请具体点行么?
      

  3.   

    CEditView也可以,是视图刷新的时候自动调用的ondraw(),
    以你的意思,你只要处理mousedown既可以了,鼠标点一下,就:
    cclient  dc(this);
    dc.Ellipse(10,10,40,40)就是一个半径位15的园
      

  4.   

    简单
    就基于CView
    拦LButtonDown消息
    CDC * pDC=GetDC();
    CPen pen(PS_SOLID, 1,RGB(255,0,0)),*oldpen;
    CBrush brush,*oldbrush;
    brush.CreateStockBrush(NULL_BURHS);
    oldpen=pDC->selectobject(&pen);
    oldbrush=pDC->selectobject(&brush);pDC->ellipse(point.x-10,point.y-10,point.x+10,point.y+10);pDC->selectobject(oldpen);
    pDC->selectobject(oldbrush);
    ok!!累死我了
      

  5.   

    arvid_gs(west) 的方法不行。
    原因:那个圆始终画在一个地方。用我的方法可以实现,在是在刷新后,画的圆就没有了,因为OnDraw()中没有重画。
    你可以做两个数组(简单的方法)保存第次按下的坐标,重画时使用。