一个简单的问题,请教.

allen_zhaozhencn 2005-12-22 07:31:03
如何把clipboard中的位图粘贴到自己的程序中, 请附代码. 100分相赠.
...全文
97 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2005-12-23
  • 打赏
  • 举报
回复
http://www.chinaitpower.com/A/2004-08-03/159402.html
寻开心 2005-12-23
  • 打赏
  • 举报
回复
void CMyView::OnEditCopy()
{
if ( !OpenClipboard() )
{
AfxMessageBox( "无法打开剪贴板" );
return;
}
// 删除目前剪贴板的内容
if( !EmptyClipboard() )
{
AfxMessageBox( "无法清除剪贴板" );
return;
}
// 获取选定的数据
// 检查是否为剪贴板支持的格式
if ( ::SetClipboardData( CF_BITMAP, hData ) == NULL )
//表1列出了标准的剪贴板格式
{
AfxMessageBox( "无法将数据复制到剪贴板当中" );
CloseClipboard();
return;
}

HANDLE hBitmap = GetClipboardData(CF_BITMAP); // 获取剪贴板数据句柄
HDC hDC = GetDC(hWnd); // 获取设备环境句柄
HDC hdcMem = CreateCompatibleDC(hDC); // 创建与设备相关的内存环境
SelectObject(hdcMem, hBitmap); // 选择对象
SetMapMode(hdcMem, GetMapMode(hDC)); // 设置映射模式
BITMAP bm; // 得到位图对象
GetObject(hBitmap, sizeof(BITMAP), &bm);
BitBlt(hDC, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY); //位图复制
ReleaseDC(hWnd, hDC); // 释放设备环境句柄
DeleteDC(hdcMem); // 删除内存环境
// ...
CloseClipboard();
}
手插兜兜 2005-12-23
  • 打赏
  • 举报
回复
呵呵,你的这个问题,你自己编成不算很简单的。
我写过的是一个相反的过程,就是将VC的View窗口中的图片保存报剪贴板。
我认为可以这样:
枚举现有的剪贴板的数据格式,如果有 BMP格式的数据,获取剪贴板的数据(HANDLE GetClipboardData(UINT uFormat),获得指向HBITMAP的句柄,构建CBitmap对象,然后在自己的窗口中显示就行.
MSDN中有“Using the Clipboard ”一节,介绍了比较详细的使用方法以及常用的数据格式,你可以看看,会清楚地。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧