#include <stdio.h> #include <Windows.h>
LPBYTE AllocateBits(int nWidth, int nHeight, int nBitcCount, int *pSize) { *pSize = ((nWidth * nBitcCount + 31) / 32) * 4 * nHeight; if (*pSize < 0) *pSize = -*pSize; return (LPBYTE)malloc(*pSize); }
int main(void) { BITMAPINFOHEADER bmh; HBITMAP hbmp; HDC hdc; int size; LPBYTE pBits;
ZeroMemory(&bmh, sizeof(bmh)); bmh.biSize = sizeof(bmh); bmh.biBitCount = 24; bmh.biPlanes = 1; bmh.biWidth = 200; bmh.biHeight = 100;
pBits = AllocateBits(bmh.biWidth, bmh.biHeight, bmh.biBitCount, &size); memset(pBits, 0x99, size);
hdc = GetDC(NULL); hbmp = CreateDIBitmap(hdc, &bmh, CBM_INIT, pBits, (BITMAPINFO *)&bmh, DIB_RGB_COLORS); ReleaseDC(NULL, hdc); OpenClipboard(NULL); EmptyClipboard(); SetClipboardData(CF_BITMAP, hbmp); CloseClipboard();
free(pBits); return 0; }
|