MFC位图显示有关问题

MFC位图显示问题
本帖最后由 u010075825 于 2013-08-10 14:24:34 编辑
请高手帮忙看一下这个程序,是把位图居中显示在客户区某一区域的问题,但是运行后第一次打开图片正常显示,再继续打开新的图片时还是显示第一张。发现可能是打开新图片时showpicture函数没有执行,求帮忙该怎么解决?
void CGraphicView::OnDraw(CDC* pDC)
{
CGraphicDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if (!pDoc)
        return;
CFont font;
    font.CreateFont(30,0,0,0,FW_NORMAL,FALSE,FALSE,0,GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
          DEFAULT_QUALITY,DEFAULT_PITCH | FF_DONTCARE, "宋体");                  
    CFont* plodfont = pDC->SelectObject(&font);
CString s;
s.Format("图片编辑");
pDC->SetTextColor(RGB(0,20,200));
    pDC->TextOut(180,470,s);
pDC->Rectangle(10,10,460,460);

if(state==1)
{
     CDC dcImage;
 dcImage.CreateCompatibleDC(pDC);
     BITMAP bm;
 m_bitmap.GetBitmap(&bm);
     dcImage.SelectObject(&m_bitmap);
  float Times=0;
      int Width;
  int Height;
  int SWidth;
  int SHeight;

        if(bm.bmWidth <450 && bm.bmHeight <450)

       pDC->BitBlt(225-bm.bmWidth/2,225-bm.bmHeight/2,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY);

     
else
if (bm.bmWidth>=bm.bmHeight&&bm.bmWidth>=450)
{
      Times=float(450.0/bm.bmWidth);
         Width=int(bm.bmWidth*Times);
  Height=int(bm.bmHeight*Times);
          SWidth=235-Width/2;
  SHeight=(343-int(Height/2.0))/2;
 pDC->StretchBlt(15,SHeight,Width-12,224+Height/4,&dcImage,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY); //图片伸缩显示
}
else if(bm.bmHeight >bm.bmWidth && bm.bmHeight >450)
{
  Times=float(450.0/bm.bmHeight);
          Width=int(bm.bmWidth*Times);
  Height=int(bm.bmHeight*Times);
          SWidth=235-Width/2;
  SHeight=235-Height/2;