CCaptureImage::CCaptureImage(const BITMAPINFO *pbmi,const void *pBits) { SIZE_T InfoSize,BitsSize; InfoSize=CalcDIBInfoSize(&pbmi->bmiHeader); BitsSize=CalcDIBBitsSize(&pbmi->bmiHeader); m_hData=::GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE,InfoSize+BitsSize); if (m_hData!=NULL) { BYTE *pData=static_cast<BYTE*>(::GlobalLock(m_hData)); if (pData!=NULL) { ::CopyMemory(pData,pbmi,InfoSize); ::CopyMemory(pData+InfoSize,pBits,BitsSize); ::GlobalUnlock(m_hData); } else { ::GlobalFree(m_hData); m_hData=NULL; } } m_fLocked=false; ::GetLocalTime(&m_stCaptureTime); }
SIZE_T CalcDIBSize(const BITMAPINFOHEADER *pbmih) { return CalcDIBInfoSize(pbmih)+CalcDIBBitsSize(pbmih); }