#include <windows.h> //hBmp位图句柄 lpszFile保存的文件名称 iBitCount位图每像素的bit数 BOOL SaveBitmap(HBITMAP hBmp, LPCTSTR lpszFile, int iBitCount) { PBITMAPFILEHEADER pbf = NULL ; //位图文件头指针 PBITMAPINFO pbi = NULL ; //位图信息指针 PBITMAPINFOHEADER pbih = NULL ; //位图信息头 LPBYTE buf = NULL ; LPVOID lpBits = NULL ; HANDLE hFile = NULL ; HGDIOBJ hBmpOld ; HDC hdc, hdcMem ; BITMAP bmp ; WORD cClrBits; DWORD dwDataSize, dwHeadSize, dwFileSize ; BOOL bRet = FALSE ; GetObject(hBmp, sizeof(BITMAP), &bmp) ; cClrBits = (WORD)(bmp.bmPlanes * iBitCount) ; //计算每图素的bit数 if (cClrBits == 1) cClrBits = 1; else if (cClrBits <= 4) cClrBits = 4; else if (cClrBits <= 8) cClrBits = 8; else if (cClrBits <= 16) cClrBits = 16; else if (cClrBits <= 24) cClrBits = 24; else cClrBits = 32; dwDataSize = ((bmp.bmWidth * cClrBits +31) & ~31)/8