。然后,使用OpenClipboard函数打开剪贴板,并使用EmptyClipboard函数清空剪贴板。接下来,使用SetClipboardData函数将位图句柄放入剪贴板中,并使用CloseClipboard函数关闭剪贴板。以下是示例代码:

HBITMAP hBitmap; // 要复制的位图句柄

// 创建内存设备上下文
HDC hdcMem = CreateCompatibleDC(NULL);
SelectObject(hdcMem, hBitmap);

// 获取位图信息
BITMAP bm;
GetObject(hBitmap, sizeof(bm), &bm);

// 创建位图信息头并填充
BITMAPINFOHEADER bi;
ZeroMemory(&bi, sizeof(BITMAPINFOHEADER));
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = bm.bmWidth;
bi.biHeight = bm.bmHeight;
bi.biPlanes = 1;
bi.biBitCount = bm.bmBitsPixel;
bi.biCompression = BI_RGB;
bi.biSizeImage = ((bm.bmWidth * bi.biBitCount + 31) / 32) * 4 * bm.bmHeight;

// 创建位图信息并填充
BITMAPINFO biInfo;
ZeroMemory(&biInfo, sizeof(BITMAPINFO));
biInfo.bmiHeader = bi;

// 将位图复制到内存设备上下文中
StretchDIBits(hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, 0, 0, bm.bmWidth, bm.bmHeight, bm.bmBits, &biInfo, DIB_RGB_COLORS, SRCCOPY);

// 打开剪贴板
OpenClipboard(NULL);

// 清空剪贴板
EmptyClipboard();

// 将位图句柄放入剪贴板中
SetClipboardData(CF_BITMAP, hBitmap);

// 关闭剪贴板
CloseClipboard();

// 释放资源
DeleteDC(hdcMem);
``
在将图复制到剪贴板之前需要将图转换为位图并将位图保存到内存设备上下文中

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

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