int CBitmapUtility::CombineBitmap( CBitmap *pSrcBmp, CBitmap *pDefBmp,CBitmap *pOutPutBmp )
{
ASSERT(pSrcBmp);
ASSERT(pDefBmp);
CDC *pDC = AfxGetMainWnd()-> GetDC() ;
CDC SrcDC ;
CDC DefDC ;
CDC OutDC ;
SrcDC.CreateCompatibleDC( pDC ) ;
DefDC.CreateCompatibleDC( pDC ) ;
OutDC.CreateCompatibleDC( pDC ) ;
CBitmap *pOldSrcBmp ;
CBitmap *pOldDefBmp ;
CBitmap *pOldOutBmp ;
//DWORD dwWidth ;
//DWORD dwHeight ;
BITMAP srcbm;
pSrcBmp-> GetBitmap( &srcbm ) ;
BITMAP defbm;
pDefBmp-> GetBitmap( &defbm ) ;
if (pOutPutBmp-> GetSafeHandle())
{
pOutPutBmp-> DeleteObject() ;
}
//pDefBmp-> CreateCompatibleBitmap( pDC, bm.bmWidth, bm.bmHeight ) ;
pOutPutBmp-> CreateCompatibleBitmap( pDC, srcbm.bmWidth+defbm.bmWidth, srcbm.bmHeight ) ;
pOldSrcBmp = (CBitmap *)SrcDC.SelectObject( pSrcBmp ) ;
pOldDefBmp = (CBitmap *)DefDC.SelectObject( pDefBmp ) ;
pOldOutBmp = (CBitmap *)OutDC.SelectObject( pOutPutBmp ) ;
//DefDC.BitBlt( 0,0,bm.bmWidth,bm.bmHeight, &SrcDC,0,0,SRCAND);
OutDC.BitBlt( 0,0,srcbm.bmWidth,srcbm.bmHeight, &SrcDC,0,0,SRCCOPY);
OutDC.BitBlt( srcbm.bmWidth,0,defbm.bmWidth,defbm.bmHeight, &DefDC,0,0,SRCCOPY);
SrcDC.SelectObject( pOldSrcBmp ) ;
DefDC.SelectObject( pOldDefBmp ) ;
SrcDC.DeleteDC() ;
DefDC.DeleteDC() ;
OutDC.DeleteDC() ;
AfxGetMainWnd()-> ReleaseDC( pDC ) ;
return TRUE ;
}