我在程序中生成了一个CImageList.并加入三个CBitmap。现在我想随意地提取当中的Image信息并在另一个控件中画出来,如下是我的程序片断,但是却不能画位图,而直接用CImageList::Draw();却可以画出来,为什么?
                            .....
                            CBitmap bmp;
IMAGEINFO ifo;
BOOL b = m_pImageList->GetImageInfo(  nImage,&ifo);
RECT rImage = ifo.rcImage;
HANDLE handle = ifo.hbmImage;
LPBITMAP p = NULL;
p= (LPBITMAP)::GlobalLock(handle);
if(p)//此处p = NULL  为什么?
bmp.CreateBitmapIndirect((LPBITMAP)p);

CDC memdc;
memdc.CreateCompatibleDC(NULL);
memdc.SelectObject(&bmp);

//m_pImageList->Draw(&dc,nImage,CPoint(r.left,r.top),ILD_NORMAL);//此句能画出图标

dc.StretchBlt(r.left,r.top,32,32,&memdc,0,0,
abs(rImage.right-rImage.left),abs(rImage.bottom- rImage.top),SRCCOPY);//此处不能画出
::GlobalUnlock(ifo.hbmImage);
bmp.DeleteObject();