同样是CBrush类!为什么pOldBrush一定要是CBrush *呢?而NewBrush1就不用*CBrush NewBrush1(nBrushPattern[i],RGB(0,0,255));
CBrush *pOldBrush=pDC->SelectObject(&NewBrush1); pDC->Rectangle(100,20+i*60,600,70+i*60); 

pDC->SelectObject(pOldBrush);

解决方案 »

  1.   

    SelectObject函数返回的是CBrush的指针,因此也就要用CBrush *.
    SelectObject函数接受的也是一个CBrush地址,&NewBrush1,你在NewBrush1
    前面加了&取地址运算符,不就和指针一样了么。
      

  2.   

    NewBrush1是一个实例
    pOldBrush是一个实例指针
      

  3.   

    CDC::SelectObject函数族的一个成员选定GDI对象进入设备环境并且在处理过程中它对前面选定的对象(它在处理中被取消选定)返回一个指针。问题是,不能在没有选定新对象的情况下撤消旧对象的选定。跟踪对象一个简单的方法,即当选定自己的GDI对象时,"保存"最初的GDI对象,并且,当完成时,"恢复"最初的对象。这样,就可以删除自己的GDI对象了