WEB开发网
开发学院软件开发VC Visual C++剪贴板操作不完全攻略 阅读

Visual C++剪贴板操作不完全攻略

 2010-05-27 20:37:28 来源:WEB开发网   
核心提示:二、WMF数据的操作在剪贴板上读写图象数据是非常有用的功能,并且实现起来也很简单,Visual C++剪贴板操作不完全攻略(2),下面的代码显示了如何将扩展图元文件复制到剪贴板:if(OpenClipboard());{EmptyClipboard();//创建图元文件DCCMetaFileDC * cDC = new

二、WMF数据的操作

在剪贴板上读写图象数据是非常有用的功能,并且实现起来也很简单。下面的代码显示了如何将扩展图元文件复制到剪贴板:

if(OpenClipboard());
{
EmptyClipboard();
//创建图元文件DC
CMetaFileDC * cDC = new CMetaFileDC();
cDC->CreateEnhanced(GetDC(),NULL,NULL,"the_name");
//调用绘图例程
//关闭CMetafileDC并获得它的句柄
HENHMETAFILE handle = cDC->CloseEnhanced();
//复制到剪贴板
SetClipBoardData(CF_ENHMETAFILE,handle);
CloseClipboard();
//删除dc
delete cDC;
}

下面的代码演示了从剪贴板获得图元文件并将其绘制到client DC上:

if(OpenClipboard())
{
//获得剪贴板数据
HENMETAFILE handle = (HENMETAFILE)GetClipboardData(CF_ENHMETAFILE);
//显示
CClientDC dc(this);
CRect client(0,0,200,200);
dc.PlayMetaFile(handle,client);
//关闭剪贴板
CloseClipboard();
}

三、位图的操作

位图的操作稍微复杂一点,下面这个例子显示了如何在剪贴板保存位图:

if(OpenClipboard())
{
EmptyClipboard();
CBitmap * junk = new CBitmap();
CClientDC cdc(this);
CDC dc;
dc.CreateCompatibleDC(&cdc);
CRect client(0,0,200,200);
junk->CreateCompatibleBitmap(&cdc,client.Width(),client.Height());
dc.SelectObject(junk);
DrawImage(&dc,CString("Bitmap"));
//复制数据到剪贴板
SetClipboardData(CF_BITMAP,junk->m_hObject);
CloseClipboard();
delete junk;
}

下面的代码显示了如何从剪贴板上获得位图数据:

if(OpenClipboard())
{
//获得剪贴板数据
HBITMAP handle = (HBITMAP)GetClipboardData(CF_BITMAP);
CBitmap * bm = CBitmap::FromHandle(handle);
CClientDC cdc(this);
CDC dc;
dc.CreateCompatibleDC(&cdc);
dc.SelectObject(bm);
cdc.BitBlt(0,0,200,200,&dc,0,0,SRCCOPY);
CloseClipboard();
}

Tags:Visual 剪贴板 操作

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接