在头文件中定义如下变量:
         int m_nSLen;           //秒针长度
int m_nMLen;           //分针长度
int m_nHLen ;         //时针长度
CDC m_dcMem;
CDC m_dcClock;
CRect m_rcFace;
我使用一下代码在ONDRAW()函数中实现画出时钟的表盘 ,怎么执行一点反应都没有啊!!! CRect rc;
 GetClientRect(&rc);
 m_rcFace=rc;
 CClientDC dc(this); CBitmap bmpDum1,bmpDum2; m_dcMem.CreateCompatibleDC(&dc); m_dcClock.CreateCompatibleDC(&dc); bmpDum1.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height()); bmpDum2.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height()); m_dcMem.SelectObject(&bmpDum1); m_dcClock.SelectObject(&bmpDum2); m_dcClock.FillSolidRect(0,0,rc.Width(),rc.Height(),RGB(200,200,200)); m_dcClock.SetBkMode(TRANSPARENT); //定义画笔,用于绘出时钟的表针
CPen penGry(PS_SOLID,7,RGB(0,0,0));
CPen penBlk(PS_SOLID,4,RGB(90,90,90));
CPen *pOldpen=m_dcClock.SelectObject(&penGry);//计算表针长度int nTokenLen=28;
int nClockW;
CFont ftclock;
nClockW=min(rc.Width(),rc.Height());POINT ptcent;
ptcent.x=(rc.left+rc.right)/2;ptcent.y=(rc.top+rc.bottom)/2;m_nSLen=nClockW/2-3;m_nMLen=nClockW/3-3;m_nHLen=nClockW/4-3;//根据显示方式,绘出时钟
m_Style=1;   if(m_Style==0)  //模拟显示方式{
POINT ptBegin,ptEnd;    ptcent.x=(rc.left+rc.right)/2;    ptcent.y=(rc.top+rc.bottom)/2;                 //绘图中心点
for(int i=0;i<12;i++)             //依次画出钟点 {
ptBegin.x=ptcent.x+(long)(nClockW*sin(i*PI*2.0/12.0)/2); ptBegin.y=ptcent.y-(long)(nClockW*cos(i*PI*2.0/12.0)/2); ptEnd.x=ptcent.x+(long)((nClockW-nTokenLen)*sin(i*PI*2.0/12.0)/2); ptEnd.y=ptcent.y+(long)((nClockW-nTokenLen)*cos(i*PI*2.0/12.0)/2);        if(i%3==0)
{
m_dcClock.SelectObject(&penGry);
ptEnd.x=ptcent.x+(long)((nClockW-nTokenLen-10)*sin(i*PI*2.0/12.0)/2);
ptEnd.y=ptcent.y-(long)((nClockW-nTokenLen-10)*sin(i*PI*2.0/12.0)/2); }
else
m_dcClock.SelectObject(&penBlk);

m_dcClock.MoveTo(ptBegin);
        m_dcClock.LineTo(ptEnd);
}
}
else if(m_Style==1)         //数字显示方式{
int nFontW=rc.Width()/10;
int nFontH=(int)(2.5*nFontW);
ftclock.CreateFont(
nFontH,
nFontW,
0,
0,
FW_BOLD,
0,
0,
0,
0,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH,
"Arial");
CFont *pOldFont=m_dcClock.SelectObject(&ftclock);   //初始化时显示“00:00:00”
CString str="00:00:00";
m_dcClock.SetTextAlign(TA_CENTER);
m_dcClock.SetTextColor(RGB(0,0,0));
m_dcClock.TextOut(ptcent.x,ptcent.y-nFontH/2,str);
m_dcClock.SetTextColor(RGB(192,192,192));
m_dcClock.TextOut(ptcent.x,ptcent.y-nFontH/2+2,str);
m_dcClock.SelectObject(pOldFont);
ftclock.DeleteObject();
   
}//保存时钟面盘,在需要时刷新屏幕使用
  
m_dcMem.BitBlt(0,0,rc.Width(),rc.Height(),&m_dcClock,0,0,SRCCOPY);
m_dcClock.SelectObject(pOldpen);
bmpDum1.DeleteObject();
bmpDum2.DeleteObject();
请各位大侠明示。