在使用 'CF_BITMAP' 格式的剪贴板数据时,不能直接使用 'GlobalSize' 函数获取数据的大小。但可以使用其他方式来保存到 'LPVOID' 指针中。

一种方式是使用 'GetClipboardData' 函数获取剪贴板中的数据句柄,然后使用 'GlobalLock' 函数锁定数据,并使用 'GlobalSize' 函数获取数据的大小。然后可以使用 'malloc' 函数分配内存,并使用 'memcpy' 函数将数据复制到分配的内存中。

以下是一个示例代码:

// 获取剪贴板中的 'CF_BITMAP' 数据
HBITMAP hBitmap = (HBITMAP)GetClipboardData(CF_BITMAP);
if (hBitmap != NULL) {
    // 锁定数据
    HGLOBAL hGlobal = (HGLOBAL)hBitmap;
    LPVOID pData = GlobalLock(hGlobal);

    // 获取数据大小
    DWORD dwSize = GlobalSize(hGlobal);

    // 分配内存
    LPVOID pCopy = malloc(dwSize);

    // 复制数据
    memcpy(pCopy, pData, dwSize);

    // 解锁数据
    GlobalUnlock(hGlobal);

    // 使用 'pCopy' 进行后续处理

    // 释放内存
    free(pCopy);
}

请注意,在使用完毕后,需要释放分配的内存,以避免内存泄漏。

如何将 CF_BITMAP 剪贴板数据保存到 LPVOID 指针

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

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