MFC将位图文件中图片放到剪贴板中

kmsch 2016-04-19 06:05:36
程序中想实现读取一个bmp文件,然后将该位图放到剪贴板

我的代码如下:


HBITMAP hBitmap = (HBITMAP) ::LoadImage(NULL, _T("C:\\1.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
CBitmap* bitmap = CBitmap::FromHandle(hBitmap);
if(!OpenClipboard())
return;
EmptyClipboard();
SetClipboardData(CF_BITMAP, bitmap->GetSafeHandle());
CloseClipboard();


可是未能正确复制到剪贴板

已在网上搜索了,没找到可行方案

不知是不是网上说的DIB与DDB区别,但我不太懂

请大神给个可以实现这样需求的代码
...全文
218 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2016-04-20
  • 打赏
  • 举报
回复
/* Without LR_CREATEDIBSECTION, LoadImage would map my bitmap’s colors to match the current display device.*/ hbitmap=(HBITMAP)LoadImage(0,filename,IMAGE_BITMAP,0,0, LR_LOADFROMFILE | LR_DEFAULTSIZE);// | LR_CREATEDIBSECTION);
zgl7903 2016-04-20
  • 打赏
  • 举报
回复

BOOL CopyBmp2Clipboard(LPCTSTR szFilePath)
{
  BOOL bRet = FALSE;

  HBITMAP hBitmap = NULL;
  BOOL bClipboardOpened = FALSE;
  do 
  {
    hBitmap = (HBITMAP)LoadImage(NULL, szFilePath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    if(hBitmap == NULL)
      break;

    if(!OpenClipboard(NULL))
      break;
    bClipboardOpened = TRUE;
    EmptyClipboard();
    SetClipboardData(CF_BITMAP, hBitmap);    
    bRet = TRUE;
  } while (0);

  if(bClipboardOpened)
  {
    CloseClipboard();
  }
  if(hBitmap)
  {
    DeleteObject(hBitmap);
    hBitmap = NULL;
  }

  return bRet;
}
schlafenhamster 2016-04-20
  • 打赏
  • 举报
回复
HBITMAP hBitmap = (HBITMAP) ::LoadImage(NULL, _T("C:\\1.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE);
paschen 2016-04-20
  • 打赏
  • 举报
回复
去年LoadImage中 LR_CREATEDIBSECTION这个标记 或者自己使用CreateDIBitmap来得到HBITMAP 用法:https://msdn.microsoft.com/en-us/library/windows/desktop/dd183491(v=vs.85).aspx 例子(链接里最后有代码):http://baike.baidu.com/link?url=SM9wNxPbAbCJRwu9NDGNsc_oOBRVgUH3J1htcBnr2YE_octveeCmaJOXPT6fJuMWNOCNt3JnFz5kXRlrinxHjK
木黑神 2016-04-20
  • 打赏
  • 举报
回复
SetClipvoardData(CF_BITMAP, hBitmap);

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧