我在界面的顶部和底部要做位图拉伸(拉伸做背景色)!代码如下,但是显示的时候只有顶部的有显示,底部的没有显示,代码完全一样,不知道为什么?请高手帮忙看看!!!小弟先谢过了!
void MeetingPan::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
//铺窗体上面的底色
CDC *pDC = GetDlgItem(IDC_TOP_BG)->GetDC();
CDC MemDC; // 内存设备环境指针,在视的整个存在过程都将存在
CBitmap Bitmap;  
CRect Source; // 记录源位图尺寸和最终显示尺寸
BITMAP bm;
if(MemDC.GetSafeHdc ( ) == NULL)
{
//Bitmap.LoadBitmap (IDB_MEETPAN_TOPBG) ;
Bitmap.LoadBitmap (IDB_MEETPAN_TOPBG) ;
MemDC.CreateCompatibleDC ( pDC ) ;
MemDC.SelectObject( &Bitmap ) ;
Bitmap.GetObject ( sizeof ( bm ), &bm ) ;
Source.top = 0 ;
Source.left = 0 ;
Source.right= bm.bmWidth ;
Source.bottom = bm.bmHeight ;
}

pDC -> StretchBlt ( 0 , 0, 1024, Source.bottom-Source.top,
&MemDC, Source.left, Source.top, Source.right,Source.bottom, SRCCOPY ) ;
Bitmap.DeleteObject( ) ;
MemDC.DeleteDC( ) ;
//铺窗体下面状态栏的底色
CDC *pDC_state = GetDlgItem(IDC_STATEBG)->GetDC();
CDC MemDC_state; // 内存设备环境指针,在视的整个存在过程都将存在
CBitmap Bitmap_state;  
CRect Source_state; // 记录源位图尺寸和最终显示尺寸
BITMAP bm_state;
CRect rcMeetDlg;
    GetClientRect(rcMeetDlg);
if(MemDC_state.GetSafeHdc( ) == NULL)
{
Bitmap_state.LoadBitmap (IDB_MEETPAN_STATEBG) ;
MemDC_state.CreateCompatibleDC ( pDC_state ) ;
MemDC_state.SelectObject( &Bitmap_state ) ;
Bitmap_state.GetObject ( sizeof ( bm_state ), &bm_state ) ;
Source_state.top = rcMeetDlg.bottom - bm_state.bmHeight;
Source_state.left = 0 ;
Source_state.right= bm_state.bmWidth ;
Source_state.bottom = rcMeetDlg.bottom;
}

pDC_state -> StretchBlt ( 0 , 50, 1024, 42,//Source_state.top, 1024, 42,//Source_state.bottom-Source_state.top,
&MemDC_state, Source_state.left, Source_state.top, Source_state.right,Source_state.bottom, SRCCOPY ) ;
Bitmap_state.DeleteObject( ) ;
MemDC_state.DeleteDC( ) ;
}

解决方案 »

  1.   

    pDC_state -> StretchBlt ( 0 , 50, 1024, 42,//Source_state.top, 1024, 42,//Source_state.bottom-Source_state.top,
    原始的应该是这样的:
    pDC_state -> StretchBlt ( 0 , Source_state.top, 1024, 42,
      

  2.   

    pDC_state -> StretchBlt ( 0 , 50, 1024, 42,//Source_state.top, 1024, 42,//Source_state.bottom-Source_state.top,
    &MemDC_state, Source_state.left, Source_state.top, Source_state.right,Source_state.bottom, SRCCOPY ) ;
    少一条语句-
    pDC->BitBlt(  参数自己填      ,pDC_state, 参数自己填      SRCCOPY).
      

  3.   

    http://community.csdn.net/Expert/topic/3224/3224201.xml?temp=.7479822
      

  4.   

    pDC是定义顶部的啊!
    这里是底部的背景啊!
    而且我试过了,两种都不行!
      

  5.   

    StretchBlt  参数相对于PIC控件的位置的,不是屏幕的
    用同一个dc