将bmp图像绘制到多个picture上出现有关问题,为什么呢

将bmp图像绘制到多个picture上出现问题,为什么呢?
我是用下面的函数来绘制bmp图像的,代码有点乱,当这段代码放在OnPaint()中绘制时,是不会出现问题的,
目前的情况是这样的,我建立了二个窗口,一个父窗口,一个子窗口(模式窗口),首先在父窗口会显示一个图片,然后模式建立子窗口,然后在子窗口用同样的绘图代码显示另一个图片,但问题出现了:
(1)父窗口我是在OnPaint()中绘制的,没什么问题,但在子窗口中先没有在OnPaint()中绘制,发现需要重绘,就放在OnPaint()中实现,这个问题基本上解决;
(2)但基本上子窗口显示不出图像来,有时候偶尔显示,还是存在问题的,比如图像缩放有问题,总感觉受到父窗口的影响;
(3)如果只打开父窗口,从不打开子窗口,则父窗口绘图没有问题,但打开父窗口后再打开过子窗口,回到父窗口后,父窗口上绘图就消失了,不知道为什么。

我估计是内存泄漏问题,但不知道该怎么处理,总感觉二个窗口的绘图会相互影响,但两个窗口又是独立的,不明白为什么?
还请大家给解释一下,如何解决内存泄漏问题?哪些变量和对象需要用后销毁,哪些可以不用管?
void PlatFormNewOrEdit::ShowPicturePF(CString strFile)
{
CPaintDC dc(this); //绘制图象用
//判断.bmp是否存在,如果不存在,则不再加载显示该图片

CFileStatus status; 
  if(!CFile::GetStatus(strFile,status))  
{
//MessageBox("文件 " + strFile + " 不存在!");
return;


//以下代码用来绘制图象
HBITMAP bmpHandle = (HBITMAP)LoadImage(NULL,strFile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
CBitmap bmpPicture;
CDC mdcPicture;
CBitmap *bmpFromHandle = bmpPicture.FromHandle(bmpHandle);

CRect rctPicture;
m_PicPF.GetWindowRect(&rctPicture);

mdcPicture.CreateCompatibleDC(&dc);
CBitmap * bmpPrevious = mdcPicture.SelectObject(bmpFromHandle);

ScreenToClient(&rctPicture);

//正常显示
//dc.BitBlt(rctPicture.left, rctPicture.top,
// rctPicture.Width(), rctPicture.Height(),
// &mdcPicture, 0, 0, SRCCOPY);
//缩放显示
BITMAP bm;
  bmpFromHandle->GetBitmap(&bm);
//下面代码可以实现缩放,
int iOldMode = SetStretchBltMode(dc, COLORONCOLOR); //该语句可以解决失真问题

dc.StretchBlt(rctPicture.left, rctPicture.top,
rctPicture.Width(), rctPicture.Height(),
&mdcPicture,rctPicture.left, rctPicture.top,
rctPicture.Width(), rctPicture.Height(),SRCCOPY);

SetStretchBltMode(dc, iOldMode);
dc.SelectObject(bmpPrevious);
DeleteObject(bmpHandle);
}

------解决方案--------------------
目前发现了一个问题,两个DC不对应:
CBitmap * bmpPrevious = mdcPicture.SelectObject(bmpFromHandle); 
......
dcmdcPicture.SelectObject(bmpPrevious); 

------解决方案--------------------
探讨
目前发现了一个问题,两个DC不对应:
CBitmap * bmpPrevious =mdcPicture.SelectObject(bmpFromHandle);
......
dcmdcPicture.SelectObject(bmpPrevious);


------解决方案--------------------
StretchDIBitsx这个函数可以,只要得到picture控件的句柄就可以啦!,图像就可以同时显示在多个picture组件上面
------解决方案--------------------
同1楼。
另外,ShowPicturePF函数是在OnPaint中调用的吗?如果不是则不能显示出图象。建议在窗口类中定义一个成员变量来储存位图,在OnPaint中取该位图来显示,当需要更换位图时修改该变量。
------解决方案--------------------
首先倒数第二句的dc.SelectObject(bmpPrevious); 应改为mdcPicture.SelectObject(bmpPrevious); 
其次父窗口需要设置属性ClipChildren,这样父窗口的绘制就不会影响到子窗口了;
最后需要调用mdcPicture.DeleteDC()来对其进行清除,防止内存泄露,因为他是用CreateCompatibleDC进行创建的。