Beispiel #1
0
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);
}
Beispiel #2
0
SIZE_T CalcDIBSize(const BITMAPINFOHEADER *pbmih)
{
	return CalcDIBInfoSize(pbmih)+CalcDIBBitsSize(pbmih);
}