CWnd* pWnd = GetDlgItem(IDC_PICTURE);
        pWnd->GetClientRect(&rect);  此句是获得客户区的大小范围
        CDC *pDC->Rectangle(&rect);  这句获得的是什么?看MSDN没太懂,是能在里面画图这个意思么?此外在后面的程序中:
CPen* pPenGreen = new CPen;
        pPenGreen->CreatePen(PS_DOT,1,RGB(0,255,0));
        CGdiObject* pOldPen = pDC->SelectObject(pPenGreen); 表示选中的是绿色的画笔。但后面需要换画笔时就直接用pDC->SelectObject(pPenRed);来使用,那么CGdiObject* pOldPen是用来干吗的呢??而且程序到最后还有一句:
pDC->SelectObject(pOldPen);  附带的说明表示这句是恢复以前的画笔  为什么要恢复以前的画笔呢?以前的画笔是什么呢?多问些为什么不是坏事,还请高手指点一下,谢谢!
 

解决方案 »

  1.   

    [b]pDC- >SelectObject(pOldPen);
    此句的含义:恢复先前设备描述中的画笔,原因在于:你在画你所说的这个图时需要使用你所创建的新的画笔,将其选进设备描述表后使用该画笔,但在程序的其他的地方可能会使用到先前的画笔,所以每次使用新的画笔完成对应绘图功能之后,都要恢复先前的那个画笔。
      

  2.   

    那么CGdiObject* pOldPen是用来干吗的呢?? 
    pOldPen是用来保存先前的画笔(函数SelectObject实现两个功能:一方面将新的画笔选进设备描述表中,另一方面返回设备表中将要被替换的画笔,即老的画笔),以便在使用新的画笔完成对应绘图功能之后能够恢复先前的那个画笔。
      

  3.   

     CDC *pDC- >Rectangle(&rect);  这句获得的是什么?看MSDN没太懂,是能在里面画图这个意思么? 
    函数Rectangle是类CDC的成员函数,是用来绘制矩形区域的,