如何将 CF_BITMAP 剪贴板数据保存到 LPVOID 指针
在使用 '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);
}
请注意,在使用完毕后,需要释放分配的内存,以避免内存泄漏。
原文地址: https://www.cveoy.top/t/topic/qgYS 著作权归作者所有。请勿转载和采集!