<请问>关于内存中的BMP在C++中的显示

<请教>关于内存中的BMP在C++中的显示
已知显示BMP代码如下, 问题在下面描述
1、从文件读取BMP文件
// 显示本地图片
CString FileName= "C:\\ceshi.bmp";
HBITMAP mybmp;
mybmp=(HBITMAP)LoadImage(AfxGetInstanceHandle(),FileName,NULL,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
HBITMAP oldbmp;
CDC memdc;
CDC *dc=GetDC();
// CRect rect;
memdc.CreateCompatibleDC(dc);
GetClientRect(rect);
oldbmp = (HBITMAP)memdc.SelectObject(mybmp);
//显示图片
dc->BitBlt(20,20,rect.Width(),rect.Height(),&memdc,0,0,SRCCOPY);
memdc.SelectObject(oldbmp);
ReleaseDC(dc);

上面代码能正确显示BMP到界面
问题:
   请问, 如果我没有ceshi.bmp, 但是在内存中生成了 BITMAP bitmap  如何把这个bitmap显示到界面中呢.....
------解决方案--------------------
CDC memdc;
CDC *dc=GetDC();
// CRect rect;
memdc.CreateCompatibleDC(dc);
GetClientRect(rect);
oldbmp = (HBITMAP)memdc.SelectObject(mybmp);
//显示图片
dc->BitBlt(20,20,rect.Width(),rect.Height(),&memdc,0,0,SRCCOPY);
memdc.SelectObject(oldbmp);
ReleaseDC(dc);

这段代码就可以
------解决方案--------------------
mybmp=(HBITMAP)LoadImage(AfxGetInstanceHandle(),FileName,NULL,0,0,LR_LOADFROMFILE
------解决方案--------------------
LR_CREATEDIBSECTION);

把这句, 换成你的 在内存中生成的 BITMAP bitmap .  

int SetDIBits(
  HDC hdc,                  // handle to DC
  HBITMAP hbmp,             // handle to bitmap
  UINT uStartScan,          // starting scan line
  UINT cScanLines,          // number of scan lines
  CONST VOID *lpvBits,      // array of bitmap bits
  CONST BITMAPINFO *lpbmi,  // bitmap data
  UINT fuColorUse           // type of color indexes to use
);
可以把bitmap设置进兼容DC, 然后就一样了.
------解决方案--------------------
HBITMAP hbmp = NULL;
hbmp = CreateBitmapIndirect(pBitmap);
放到 剪贴板看看 对不对 !(绘图 +paste)

------解决方案--------------------
HBITMAP hbmp = NULL;
hbmp = CreateBitmapIndirect(pBitmap);
if( hbmp )
{
// move to Clipboard for test
OpenClipboard();
EmptyClipboard();
SetClipboardData(CF_BITMAP,hbmp); // not CF_DIB
CloseClipboard();
}