WEB开发网
开发学院软件开发VC 使用Visual C++实现OLE剪贴板 阅读

使用Visual C++实现OLE剪贴板

 2008-11-13 19:30:10 来源:WEB开发网   
核心提示: 3. 访问COleDataObject::IsDataAvailable函数来检查是否可以使用特殊的格式,当然,使用Visual C++实现OLE剪贴板(6),你也可以通过循环使用COleDataObject::BeginEnumFormats来寻找其它格式直到你找到了最适合的格式, 4

---- 3. 访问COleDataObject::IsDataAvailable函数来检查是否可以使用特殊的格式。当然,你也可以通过循环使用COleDataObject::BeginEnumFormats来寻找其它格式直到你找到了最适合的格式。

---- 4. 粘贴数据。

---- 程序示例:

  CRectItem* CMainView::DoPasteItem(BOOL bLink,
  COleDataObject* pDataObject,CPoint* pPoint,
  CLIPFORMAT cfFormat)
  {
  BeginWaitCursor();
  CRectItem* pItem = GetDocument()- >CreateItem();
  ASSERT_VALID(pItem);
  BOOL bAllowAdjust = (pPoint == NULL) ? TRUE : FALSE;
  COleDataObject clipboardData;
  if (pDataObject == NULL)
  {
   clipboardData.AttachClipboard();
   pDataObject = &clipboardData;
  }
  TRY
  {
   if (cfFormat == CMainDoc::m_cfPrivate)
   {
   DoPasteNative(pDataObject, pPoint, pItem);
   }
   else if (!bLink && cfFormat == 0 &&
   pDataObject- >IsDataAvailable(CMainDoc::m_cfPrivate))
   {
   DoPasteNative(pDataObject, pPoint, pItem);
   }
   else if (bAllowAdjust)
   {
   CPoint ptDef(10, -10);
   DoPasteStandard(bLink, pDataObject,
   &ptDef, pItem, cfFormat);
   }
   else
   {
   DoPasteStandard(bLink, pDataObject,
   pPoint, pItem, cfFormat);
   }
   if (bAllowAdjust)
   {
   GetDocument()- >AdjustItemPosition(pItem);
   }
  }
  CATCH_ALL(e)
  {
   TRACE0("failed to embed/link an OLE objectn");
   pItem- >Delete();
   pItem = NULL;
  }
  END_CATCH_ALL
  SetSelection(pItem, TRUE);
  GetDocument()- >SetModifiedFlag();
  GetDocument()- >UpdateAllViews(NULL, 0, pItem);
  EndWaitCursor();
  return pItem;
  }
  void CMainView::OnEditPaste()
  {
  COleDataObject clipboardData;
  clipboardData.AttachClipboard();
  DoPasteItem(&clipboardData);
  UpdateAllViews();
  }

---- 说明 将粘贴操作(如OnEditPaste函数)与实现粘贴的函数(如DoPasteItem)分开的最大优点在于,当数据被拖放到你的应用程序中时,可以使用同样的粘贴代码。

上一页  1 2 3 4 5 6 

Tags:使用 Visual 实现

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