STDMETHODIMP BufferCB( double dblSampleTime, BYTE * pBuffer, long lBufferSize )
    {
        // this flag will get set to true in order to take a picture
        //
        CBitmap bm;
        bm.CreateBitmap(640, 480, 1, 24, pBuffer);

        BITMAPFILEHEADER    BMFileHeader;  
        BITMAPINFOHEADER    BMInfoHeader;  
        BITMAP                BM;  
        bm.GetObject(sizeof(BM),&BM);    
        BMInfoHeader.biSize                =   sizeof(BITMAPINFOHEADER);  
        BMInfoHeader.biWidth            =   BM.bmWidth;  
        BMInfoHeader.biHeight            =   BM.bmHeight;  
        BMInfoHeader.biPlanes            =   1;  
        BMInfoHeader.biBitCount            =   24;  
        BMInfoHeader.biCompression        =   0;  
        BMInfoHeader.biSizeImage        =   0;  
        BMInfoHeader.biXPelsPerMeter    =   0;  
        BMInfoHeader.biYPelsPerMeter    =   0;  
        BMInfoHeader.biClrUsed            =   0;  
        BMInfoHeader.biClrImportant        =   0;  

        BMFileHeader.bfType        =0x4d42;  
        BMFileHeader.bfOffBits    = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);  
        BMFileHeader.bfSize        =BMFileHeader.bfOffBits + BM.bmWidth * BM.bmHeight * 3;  
        BMFileHeader.bfReserved1=0;  
        BMFileHeader.bfReserved2=0;  

        CFile   file;  
        if(!file.Open(_T("d:\\aa.bmp"),CFile::modeCreate|CFile::modeWrite))  
        {  
            return 0;  
        }  
        file.Write(&BMFileHeader, sizeof(BITMAPFILEHEADER));  
        file.Write(&BMInfoHeader, sizeof(BITMAPINFOHEADER));  
        file.Write(pBuffer, BM.bmWidth * BM.bmHeight * 3);  
        file.Close();  

        bm.DeleteObject();
Posted on 2012-04-16 23:53  我不是牛人  阅读(1010)  评论(0编辑  收藏  举报