"CF_BITMAP 不能使用 GlobalSize 那如何 memcpy 保存 byte 内容:"如果不能使用 GlobalSize 来获取位图的大小,可以尝试使用其他方法来获取位图的大小,例如使用 GetDIBits 函数来获取位图的信息头中的 biSizeImage 成员。然后使用 malloc 函数分配内存来保存位图数据,并使用 GetDIBits 函数将位图数据复制到分配的内存中。\n\n以下是一个示例代码:\n\ncpp\nBITMAPINFOHEADER bi;\nGetDIBits(hBitmap, hDC, 0, 0, NULL, (BITMAPINFO*)&bi, DIB_RGB_COLORS);\n\nint imageSize = bi.biSizeImage;\nBYTE* imageData = (BYTE*)malloc(imageSize);\n\nGetDIBits(hBitmap, hDC, 0, bi.biHeight, imageData, (BITMAPINFO*)&bi, DIB_RGB_COLORS);\n\n// 使用 memcpy 将位图数据复制到其他地方\nBYTE* copyData = (BYTE*)malloc(imageSize);\nmemcpy(copyData, imageData, imageSize);\n\n// 使用完之后记得释放内存\nfree(imageData);\nfree(copyData);\n\n\n在这个示例中,首先调用 GetDIBits 函数来获取位图的信息头并计算位图数据的大小。然后使用 malloc 函数分配内存来保存位图数据。接着再次调用 GetDIBits 函数来获取位图的数据,并将数据复制到分配的内存中。最后使用 memcpy 函数将位图数据复制到其他地方。\n\n需要注意的是,使用 malloc 函数分配内存之后,要记得在使用完之后调用 free 函数来释放内存,以防止内存泄漏。

CF_BITMAP 数据保存方法:使用 GetDIBits 获取大小并进行内存复制

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

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