各位高手,我初学MFC,想在对话框的静态控件上对确定路径的图像进行显示,可是不知道程序哪里出的问题,只能显示图像的左上角部分,但是我已经用的是StretchBlt函数了,这个函数不是本身就实现缩放显示的吗?究竟是哪里错了?
程序如下:void Cplat1Dlg::OnPaint()
{
        CPaintDC dc(GetDlgItem(IDC_STATIC)); //用此句,得到picture控件的DC,图像将被绘制在控件上  
        CBitmap m_bmp; HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), _T("D:\\pic.bmp"), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE); if( hbmp == NULL ) return FALSE;//将window GDI句柄加载到CGdiObject类对象上
m_bmp.Attach( hbmp );              
      CDC memdc;
      CStatic* pStac=(CStatic*)GetDlgItem(IDC_STATIC);
pStac->Invalidate();
pStac->UpdateWindow(); //获得CDC类对象
CDC* pDC=pStac->GetDC();
//获得静态控件的客户区域
CRect rc;
pStac->GetClientRect(&rc); memdc.CreateCompatibleDC(&dc);   CBitmap bitmap; bitmap.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height()); memdc.SelectObject( &bitmap ); BITMAP BitInfo;
m_bmp.GetBitmap(&BitInfo);
int x=BitInfo.bmWidth;
int y=BitInfo.bmHeight;////////////下面这一段的作用是什么?去掉后的影响是什么?/////////// CWnd::DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0); CDC maskdc; maskdc.CreateCompatibleDC(&dc); CBitmap maskbitmap; maskbitmap.CreateBitmap(rc.Width(), rc.Height(), 1, 1, NULL); maskdc.SelectObject( &maskbitmap ); maskdc.BitBlt( 0, 0, rc.Width(), rc.Height(), &memdc, rc.left, rc.top, SRCCOPY);////////////////////////////////////////////////////////////////////////// CBrush brush; brush.CreatePatternBrush(&m_bmp); dc.FillRect(rc, &brush);   dc.StretchBlt(rc.left,rc.top,rc.Width(),rc.Height(),&memdc,rc.left,rc.top,x,y,SRCPAINT); brush.DeleteObject();
}