0001:
0002:
0003:
0004: #include "stdafx.h"
0005: #include "CBitmap.h"
0006:
0007:
0008:
0009:
0010:
0011: void SaveBitMap( SAVE_BITMAP &sInfo )
0012: {
0013: BITMAPFILEHEADER bmfh;
0014: BITMAPINFOHEADER bmih;
0015: DWORD tmp;
0016:
0017:
0018: bmih.biSize = sizeof(BITMAPINFOHEADER);
0019: bmih.biWidth = sInfo.iWidth;
0020: bmih.biHeight = sInfo.iHeight;
0021: bmih.biPlanes = 1;
0022: bmih.biBitCount = sInfo.iBitCount;
0023: bmih.biCompression = BI_RGB;
0024: bmih.biSizeImage = bmih.biWidth * bmih.biHeight * (bmih.biBitCount / 8);
0025: bmih.biXPelsPerMeter = 0;
0026: bmih.biYPelsPerMeter = 0;
0027: bmih.biClrUsed = 0;
0028: bmih.biClrImportant = 0;
0029:
0030:
0031: bmfh.bfType = 0x4D42;
0032: bmfh.bfReserved1 = bmfh.bfReserved2 = 0;
0033: bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
0034: bmfh.bfSize = bmfh.bfOffBits + bmih.biSizeImage;
0035:
0036:
0037: HANDLE hfile;
0038: hfile = CreateFile( sInfo.pFileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, NULL);
0039:
0040:
0041: WriteFile(hfile, &bmfh, sizeof(bmfh), &tmp, NULL);
0042:
0043: WriteFile(hfile, &bmih, sizeof(bmih), &tmp, NULL);
0044:
0045: SetFilePointer( hfile, bmfh.bfOffBits, NULL, FILE_BEGIN );
0046: GdiFlush();
0047: WriteFile( hfile, sInfo.pData, bmih.biSizeImage, &tmp, NULL );
0048:
0049:
0050: CloseHandle(hfile);
0051: }
0052: