用StretchBlt贴图失真有关问题

用StretchBlt贴图失真问题
我是在OCX的OnDraw里面想给Static控件上面贴个图片,应经用SetStretchBltMode函数了,用上面的方法就没有问题,但是一想在控件上面贴图,用了SetStretchBltMode函数也一直失真,请问是我代码哪里写的不正确么,急,在线等!!

下面这样贴就没有问题

CDC dc;
dc.CreateCompatibleDC(pdc);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
dc.SelectObject(&bitmap);
pdc->SetStretchBltMode(STRETCH_HALFTONE);
pdc->StretchBlt(0,0,width,height,&dc,0,0,800,572,SRCCOPY);


我现在想在控件上面贴图下面这种情况这种情况就失真

        Static   m_StcVideo;
HDC hdcimage = CreateCompatibleDC(NULL);
HBITMAP hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),     MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);

m_StcVideo.ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
SelectObject(hdcimage, hBitmap);
SetStretchBltMode(m_StcVideo.GetDC()->GetSafeHdc(), STRETCH_HALFTONE);
StretchBlt(m_StcVideo.GetDC()->GetSafeHdc(), 0, 0, width, height, hdcimage, 0, 0, 800, 572, SRCCOPY);

------解决方案--------------------
连续调用两次:

p1=m_StcVideo.GetDC();//返回一个临时CDC对象指针
p2=m_StcVideo.GetDC();//是另一个临时CDC对象指针

p1和p2是不一样的