计算机二级:VisualC 剪贴板操作不完全攻略计算机二级考试

文章作者 100test 发表时间 2009:05:10 17:28:19
来源 100Test.Com百考试题网


  2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
  经常在论坛上见到一些使用者询问如何在Visual C 中如何实现对剪贴板的操作,其实在VC /MFC中是相当简单的。本文主要介绍了如下内容:
  1、文本内容的操作
  2、WMF数据的操作
  3、位图的操作
  4、设置使用自定义格式
  5、感知剪贴板内容的改变
  6、自动将数据粘贴到另一应用程序窗口
  一、文本内容的操作
  下面的代码示范了如何将文本内容复制到剪贴板:
  Cstring source.
  //文本内容保存在source变量中
  if(openClipboard())
  {
  HGLOBAL clipbuffer.
  char * buffer.
  EmptyClipboard().
  clipbuffer = GlobalAlloc(GMEM_DDESHARE, dource.GetLength() 1).
  buffer = (char*)GlobalLock(clipbuffer).
  Strcpy(buffer, LPCSTR(source)).
  GlobalUnlock(clipbuffer).
  SetClipboardData(CF_TEXT,clipbuffer).
  CloseClipboard().
  }
  下面的代码显示了如何从剪贴板上获得文本内容:
  char * buffer = NULL.
  //打开剪贴板
  CString fromClipboard.
  if ( OpenClipboard() )
  {
  HANDLE hData = GetClipboardData(CF_TEXT).
  char * buffer = (char*)GlobalLock(hData).
  fromClipboard = buffer.
  GlobalUnlock(hData).
  CloseClipboard().
  }
  二、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
  0delete 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().
  0delete 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().
  }

相关文章


计算机二级:VisualC 剪贴板操作不完全攻略计算机二级考试
计算机二级:VC应用程序之图标标题探究计算机二级考试
MISRAC指导指南解读MISRAC规则101113)计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛