VS读取剪贴板中的位图数据

本文详细介绍了如何使用C语言编程从Windows剪贴板中读取并处理位图数据,涵盖了获取剪贴板内容、解析位图信息等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


[code=C/C++]
// pDC is the DC to draw to
// metafile is a CRect to display the DIB/Metafile in
CRect metafile(0, 0, 100, 100); // example location
if (IsClipboardFormatAvailable(CF_METAFILEPICT))
{
// play a metafile from the clipboard if available
  GLOBALHANDLE hGMem ;
  LPMETAFILEPICT lpMFP ;
  OpenClipboard() ;
  hGMem = GetClipboardData(CF_METAFILEPICT) ;
  lpMFP = (LPMETAFILEPICT)GlobalLock(hGMem) ;
  pDC->SaveDC() ;
  pDC->SetMapMode(lpMFP->mm) ;
  pDC->SetViewportExt(metafile.Width(), metafile.Height()) ;
  pDC->SetViewportOrg(metafile.left, metafile.top) ;
  pDC->PlayMetaFile(lpMFP->hMF) ;
  VERIFY(pDC->RestoreDC(-1)) ;
  GlobalUnlock(hGMem) ;
  CloseClipboard() ;
}if (IsClipboardFormatAvailable(CF_DIB))
{
// a DIB is in the clipboard, draw it out
  GLOBALHANDLE hGMem ;
  LPBITMAPINFO lpBI ;
  void* pDIBBits;  OpenClipboard() ;
  hGMem = GetClipboardData(CF_DIB) ;
  lpBI = (LPBITMAPINFO)GlobalLock(hGMem) ;
// point to DIB bits after BITMAPINFO object
  pDIBBits = (void*)(lpBI + 1);
  ::StretchDIBits(pDC->m_hDC,
                   metafile.left, metafile.top,
                   metafile.Width(), metafile.Height(),
                   0, 0, lpBI->bmiHeader.biWidth,
                   lpBI->bmiHeader.biHeight,
                   pDIBBits, lpBI, DIB_RGB_COLORS, SRCCOPY);
  GlobalUnlock(hGMem) ;
  CloseClipboard() ;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值