读剪贴板:
coledataobject *pdo = new coledataobject;
assert ( afxisvalidaddress ( pdo, sizeof(coledataobject) ));
if ( !pdo- return;
// determine how many formats are available on the clipboard.
pdo-
while ( pdo- {
if ( !pdo- continue;
// get an hglobal of the data.
hgdata = pdo- if ( null != hgdata )
delete pdo;
设置剪贴板:
clipformat cfformat;
coledatasource* psource = new coledatasource();
colestreamfile file;
sf.openstream(strfilename,file);//strfilename为你的文件
dword len = file.getlength();
hglobal hg = globalalloc ( gmem_moveable | gmem_share,len);
void* pv = globallock ( hg );
assert(pv != null);
file.read(pv,len);
::globalunlock(hg);
::openclipboard(null);
cfformat = ::registerclipboardformat(name);
::closeclipboard();
psource-
CString source;//put your text in sourceif(OpenClipboard()){HGLOBAL clipbuffer;char * buffer;EmptyClipboard();clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);buffer = (char*)GlobalLock(clipbuffer);strcpy(buffer, LPCSTR(source));GlobalUnlock(clipbuffer);SetClipboardData(CF_TEXT,clipbuffer);CloseClipboard();}反过来,下面的代码是用来实现从剪贴板上取得文本的。char * buffer = NULL;//open the clipboardCString fromClipboard;if ( OpenClipboard() ){HANDLE hData = GetClipboardData( CF_TEXT );char * buffer = (char*)GlobalLock( hData );fromClipboard = buffer;GlobalUnlock( hData );CloseClipboard();}
拷贝与粘贴WMF(enhanced)数据你想在你的程序中往剪贴板上“画”以及向剪贴板读取图形吗?请放心,这个――不难!示范代码如下,其实现的是往剪贴板上写一enhanced metafile。if ( OpenClipboard() ){EmptyClipboard();//create the metafile DCCMetaFileDC * cDC = new CMetaFileDC();cDC-//call draw routine here that makes GDI calls int cDC//close meta CMetafileDC and get its handleHENHMETAFILE handle = cDC-//place it on the clipboardSetClipboardData(CF_ENHMETAFILE,handle);CloseClipboard();//delete the dcdelete cDC;}好啦,该演示反过来怎么做的代码了。我们从剪贴板上取得metafile并将其画到自己的应用程序的客户区DC(设备上下文)上(仅仅是个试验而已,实际上你可能更想将它拷贝一份儿)。if ( OpenClipboard() ){