关于MFC中HDC有关问题,图片可以显示在桌面,但是在控件中显示不了

关于MFC中HDC问题,图片可以显示在桌面,但是在控件中显示不了,求助
获取图片显示在桌面上可以,但是对话框和控件都不行
DEBUG下,HDC都是显示不可用,跟踪不到是否取得值,怎么办,这个取HDC的方法有错吗?
[code=C/C++][/code]

OLE_XSIZE_HIMETRIC hmwidth;
OLE_XSIZE_HIMETRIC hmheihgt;
CFile mFile;
long lLength;
if ( mFile.Open("E:\\800.jpg", CFile::modeRead | CFile::shareDenyNone )
&&( ( lLength = (long)mFile.GetLength() ) > 0 ) )


{
HGLOBAL hImageMemory = GlobalAlloc(GMEM_MOVEABLE,lLength);
LPVOID PVdata = NULL;
if (hImageMemory!=NULL)
{
if ((PVdata = GlobalLock(hImageMemory) )!= NULL)
{
mFile.Read(PVdata,lLength);
mFile.Close();
GlobalUnlock(hImageMemory);
IStream *pStream;
IPicture *pIpicture;
HRESULT ss = CreateStreamOnHGlobal(hImageMemory,false,&pStream);
HRESULT hr =OleLoadPicture(pStream,lLength,false,IID_IPicture,(LPVOID*)&(pIpicture));
pIpicture->get_Width(&hmwidth);
pIpicture->get_Height(&hmheihgt);

HDC hDC1 = ::GetDC(NULL);//桌面
CWindowDC dc(this);
HDC hDC2 = dc.GetSafeHdc();//对话框
CDC *pcdc = GetDlgItem(IDC_STATIC_PICTURE)->GetDC();//控件
HDC hDC3 = pcdc->GetSafeHdc();
pIpicture->Render(hDC2,300,300,200,200,0,hmheihgt,hmwidth,-hmheihgt,NULL);
pIpicture->Release();
pStream->Release();
}
}
}
[code=C/C++][/code]

------解决方案--------------------
hDC3等于几
------解决方案--------------------
代码是放到onpaint里面么?