如何在不使用 GlobalSize 的情况下将 CF_BITMAP 的字节内容保存到内存中

在处理 CF_BITMAP 数据时,我们通常需要将它的字节内容保存到内存中。由于 CF_BITMAP 不能使用 GlobalSize 函数来获取其大小,我们需要使用其他的方法来实现。

可以使用 GlobalAllocGlobalLock 来分配和锁定内存,然后使用 memcpy 将字节复制到分配的内存中。以下是一个示例代码:

#include <Windows.h>

void SaveBytes(const BYTE* data, size_t size)
{
    HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, size);
    if (hMem == NULL)
    {
        // 处理内存分配失败的情况
        return;
    }

    LPVOID pMem = GlobalLock(hMem);
    if (pMem == NULL)
    {
        // 处理内存锁定失败的情况
        GlobalFree(hMem);
        return;
    }

    memcpy(pMem, data, size);

    GlobalUnlock(hMem);

    // 现在可以在需要的地方使用 pMem 指向的内存

    GlobalFree(hMem); // 不再需要内存时释放它
}

在这个示例中,SaveBytes 函数以一个指向字节数组和大小的指针作为参数。它使用 GlobalAlloc 来分配一个大小为 size 的全局内存块,并使用 GlobalLock 将其锁定,返回指向内存的指针 pMem。然后,它使用 memcpy 将字节复制到 pMem 指向的内存中。完成后,使用 GlobalUnlock 解锁内存,并使用 GlobalFree 释放内存。

如何在不使用 GlobalSize 的情况下将 CF_BITMAP 的字节内容保存到内存中

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

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