目的:在对话框控件中绘制扇形区域!
设置全局变量ang1,ang2并初始化,在OnPaint()中调用绘图函数draw(),在OnTimer()中添加:
 pWnd->InvalidateRect(m_ClientRect,true);
 pWnd->UpdateWindow();
其中 
 pWnd=GetDlgItem(IDC_STATIC); //获取对话框控件窗口指针
 pWnd->GetClientRect(&m_ClientRect);
 pDC=pWnd->GetDC();//初始化CDC变量,以便在控件窗口内绘图
绘图函数如下:
DRAW()
{
……//其他绘图
……
    CPen sonar2Pen( PS_SOLID, 1, RGB( 0, 255, 0 ) );
    CBrush sonar2brush(RGB(0,255,0));
    CBrush *oldbrush;
    oldbrush=pDC->SelectObject(&sonar2brush);
    pDC->SelectObject( &sonar2Pen );

    r1=r/2;

//绘制扇形区域
x1=int(x+r1*cos(ang1));
y1=int(y-r1*sin(ang1));
x2=int(x+r1*cos(ang2));
y2=int(y-r1*sin(ang2));
pDC->.Pie(x-r1,y-r1,x+r1,y+r1,x1,y1,x2,y2); //输出距离信息
strDigits.Format( "%d", r1 );
x3=int(x+(r1+20)*cos((ang1+ang2)/2));
         y3=int(y-(r1+20)*sin((ang1+ang2)/2));
pDC->TextOut( x3, y3, strDigits );
   


    CPen sonar3Pen( PS_SOLID, 1, RGB( 0, 0, 255) );
    CBrush sonar3brush(RGB(0,0,255));
    p_DC->SelectObject(&sonar3brush);
    p_DC->SelectObject( &sonar3Pen );
         r1+=5;
ang1-=22.5/180*PI;
ang2-=22.5/180*PI;

//绘制扇形区域
x1=int(x+r1*cos(ang1));
y1=int(y-r1*sin(ang1));
x2=int(x+r1*cos(ang2));
y2=int(y-r1*sin(ang2));
pDC->Pie(x-r1,y-r1,x+r1,y+r1,x1,y1,x2,y2);
   
//输出距离信息
strDigits.Format( "%d", ang1 );
x3=int(x+(r1+20)*cos((ang1+ang2)/2));
         y3=int(y-(r1+20)*sin((ang1+ang2)/2));
pDC->TextOut( x3, y3, strDigits );
……
……
pDC->SelectObject(oldbrush);
pDC->SelectObject(oldpen);
}现在的问题是ang1和ang2根本就没有变化,应该是每次调用DRAW()就会响应增加的!
但当OnTimer()为
InvalidateRect(m_Rect,true);
UpdateWindow();
m_Rect为控件的屏幕坐标
这样ang1和ang2就会相应变化!
实在不知道什么原因,望高手指教!