我有个简单的功能想实现:
在C++的单文档程序里画了几条线,想创建一个按钮,用它来改变这几条线的颜色虽然简单,可我还是没做出来
我是这样做的:先定义了static COLORREF color;
然后在OnDraw里写如下代码:
color=RGB(255,0,0);
CPen pen;  
pen.CreatePen(PS_SOLID,2,color);
CPen* pOldPen=(CPen*)pDC->SelectObject(&pen);
pDC->MoveTo(30,30);
pDC->LineTo(500,500);
pDC->Rectangle(CRect(20,20,100,100));又在自己创建的按钮里写如下代码:
CColorDialog dlg; if(dlg.DoModal()==IDOK)
color=dlg.GetColor();
else
MessageBox("Fail"); CView myView;
myView.OnUpdate();这样对么,后面的选择颜色后如何更新视图的线的颜色呢

解决方案 »

  1.   

    把color变量作为类成员,感觉会好一些。
    没有看出明显的问题。
    Invalidate函数。
      

  2.   

    使用Invalidate()对屏幕进行刷新。
      

  3.   

    可是 CView myView;这个定义就会出错了, cannot access protected member declared in class 'CView'然后还有3个warning:CView' : cannot instantiate abstract class due to following members:
            d:\forth\microsoft visual studio\vc98\mfc\include\afxwin.h(3542) 这个Invalidate函数如何使用呢
      

  4.   

    我明白了,hehe
    除了这个invalidate函数,还有我开始的那个color=RGB(255,0,0);,不应该在
    OnDraw函数里面定义呀,放在外面了,OK,谢谢大家
      

  5.   

    to liquanle:
    把color作为类成员如何做,能稍微提示下么
      

  6.   

    在VIEW类定义中声明即可,static COLORREF color;