如果您不能使用 GlobalSize 函数来获取位图的大小,可以通过以下方法来保存位图数据:

  1. 使用 GetDIBits 函数来获取位图的相关信息,包括位图数据的大小。
  2. 使用 malloc 函数动态分配足够大小的内存来保存位图数据。
  3. 使用 GetDIBits 函数再次获取位图数据,并将其保存到分配的内存中。
  4. 使用 memcpy 函数将分配的内存中的位图数据复制到所需的位置。

以下是一个示例代码:

BITMAPINFO bmi;
BITMAPINFOHEADER* bmih;
BYTE* bits;

// 获取位图信息
GetDIBits(hdc, hBitmap, 0, 0, NULL, &bmi, DIB_RGB_COLORS);

// 获取位图数据大小
bmih = &(bmi.bmiHeader);
DWORD dataSize = bmih->biSizeImage;

// 分配内存保存位图数据
bits = (BYTE*)malloc(dataSize);

// 获取位图数据
GetDIBits(hdc, hBitmap, 0, bmih->biHeight, bits, &bmi, DIB_RGB_COLORS);

// 将位图数据复制到所需位置
memcpy(dest, bits, dataSize);

// 释放分配的内存
free(bits);

在上述代码中,hdc 是位图的设备上下文句柄,hBitmap 是位图的句柄,dest 是目标位置的指针。请将代码中的 hdc、hBitmap 和 dest 替换为您实际使用的值。

CF_BITMAP 无 GlobalSize? 使用 GetDIBits 和 memcpy 保存位图数据

原文地址: https://www.cveoy.top/t/topic/qgYM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录