mfc-剪贴板操作_第1页
mfc-剪贴板操作_第2页
mfc-剪贴板操作_第3页
mfc-剪贴板操作_第4页
mfc-剪贴板操作_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

mfc 剪贴板操作 本文主要介绍了VC+语句语言/MFC中如下内容的剪贴板操作:1、文本内容的操作2、WMF数据的操作3、位图的操作4、设置应用自定义各式5、感知剪贴板内容的改变6、自动将数据粘贴到另一应用程式窗口一、文本内容的操作下面的代码示范了怎能将文本内容复制到剪贴板(Unicode编码的先转化为ASCII):CString source;/文本内容保存在source变量中if( OpenClipboard() )HGLOBAL clipbuffer;char * buffer;EmptyClipboard();clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);buffer = (char*)GlobalLock(clipbuffer);strcpy(buffer, LPCSTR(source);GlobalUnlock(clipbuffer);SetClipboard数据(CF_TEXT,clipbuffer);CloseClipboard();下面的代码呈现了怎能从剪贴板上获得文本内容:char * buffer = NULL;/打开剪贴板CString fromClipboard; if ( OpenClipboard() )HANDLE h数据 = GetClipboard数据(CF_TEXT); char * buffer = (char*)GlobalLock(h数据); fromClipboard = buffer; GlobalUnlock(h数据); CloseClipboard();二、WMF数据的操作在剪贴板上读写图象数据是非比寻常有用的功能,并且呈现起来也很简单。下面的代码呈现了怎能将扩展图元文档复制到剪贴板:if(OpenClipboard();EmptyClipboard();/创建图元文档DCCMetaFileDC * cDC = new CMetaFileDC();cDC-CreateEnhanced(GetDC(),NULL,NULL,the_name);/调用绘图例程/关闭CMetafileDC并获得它的句柄HENHMETAFILE handle = cDC-CloseEnhanced();/复制到剪贴板SetClipBoard数据(CF_ENHMETAFILE,handle);CloseClipboard();/删除dcdelete cDC;下面的代码演示了从剪贴板获得图元文档并将其绘制到client DC上:if(OpenClipboard()/获得剪贴板数据HENMETAFILE handle = (HENMETAFILE)GetClipboard数据(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);/复制数据到剪贴板SetClipboard数据(CF_BITMAP,junk-m_hObject);CloseClipboard();delete junk;下面的代码呈现了怎能从剪贴板上获得位图数据:if(OpenClipboard()/获得剪贴板数据HBITMAP handle = (HBITMAP)GetClipboard数据(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();四、设置并应用自定义各式应用RegisterClipboardFormat()参数,没出国疑问复制和粘贴任何你需求的数据TYPE。比如咱们有以下唯一的数据TYPE:struct MyFormat数据long val1;int val2;咱们要把它复制到剪贴板,没出国疑问应用如下的代码:UINT format = RegisterClipBoardFormat(MY_CUSTOM_FORMAT);if(OpenClipboard()MyFormat数据 data;data.val1 = 100;data.val2 = 200;HGLOBAL clipbuffer;EmptyClipboard();clipbuffer = GlobalAlloc(GMEM_DDESHARE, sizeof(MyFormat数据);MyFormat数据 * buffer = (MyFormat数据*)GlobalLock(clipbuffer);/保存到内存*buffer = data;/保存到剪贴板GlobalUnlock(clipbuffer);SetClipboard数据(format,clipbuffer);CloseClipboard();读取数据应用以下代码:UINT format = RegisterClipboardFormat(MY_CUSTOM_FORMAT);MyFormat数据 data;if(Openclipboard()HANDLE h数据 =GetClipboard数据(format);MyFormat数据 * buffer = (MyFormat数据*)GlobalLock(h数据);data = *buffer;GlobalUnlock(h数据);CloseClipboard();五、感知剪贴板内容的改变经过win界面消息没出国疑问感知剪贴板内容也许除了改变,代码如下:/In your initialization code call:SetClipboardViewer(); /将咱们的程式添加到剪贴板观察链/In your message map add:ON_MESSAGE(WM_DRAWCLIPBOARD, OnClipChange) /添加Message handle/Which is declared as:afx_msg void OnClipChange();Finally implement:void CDetectClipboardChangeDlg:OnClipChange() CTime time = CTi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论