1、本地图片转换为HBITMAP

HBITMAP CNoteWindow::CopySelectRectBitmap(LPCTSTR lpszPath)
{HBITMAP hBitmap = NULL;//背景色设置为白色。Color backColor = Color(255,255,255,255);//Status stsif (PathFileExists(lpszPath)){Bitmap* pBitmap = Bitmap::FromFile(lpszPath);Status sts = pBitmap->GetLastStatus();sts = pBitmap->GetHBITMAP(backColor, &hBitmap);if (sts == Ok){int k = 0;}}int error = GetLastError();return hBitmap;
}

2、HBITMAP 拷贝到剪切板

bool CNoteWindow::BitmapToClipboard(HBITMAP hBM, HWND hWnd)
{if (!::OpenClipboard(hWnd))return false;::EmptyClipboard();BITMAP bm;::GetObject(hBM, sizeof(bm), &bm);BITMAPINFOHEADER bi;::ZeroMemory(&bi, sizeof(BITMAPINFOHEADER));bi.biSize = sizeof(BITMAPINFOHEADER);bi.biWidth = bm.bmWidth;bi.biHeight = bm.bmHeight;bi.biPlanes = 1;bi.biBitCount = bm.bmBitsPixel;bi.biCompression = BI_RGB;if (bi.biBitCount <= 1)   // make sure bits per pixel is validbi.biBitCount = 1;else if (bi.biBitCount <= 4)bi.biBitCount = 4;else if (bi.biBitCount <= 8)bi.biBitCount = 8;else // if greater than 8-bit, force to 24-bitbi.biBitCount = 24;// Get size of color table.SIZE_T dwColTableLen = (bi.biBitCount <= 8) ? (1 << bi.biBitCount) * sizeof(RGBQUAD) : 0;// Create a device context with paletteHDC hDC = ::GetDC(NULL);HPALETTE hPal = static_cast<HPALETTE>(::GetStockObject(DEFAULT_PALETTE));HPALETTE hOldPal = ::SelectPalette(hDC, hPal, FALSE);::RealizePalette(hDC);// Use GetDIBits to calculate the image size.::GetDIBits(hDC, hBM, 0, static_cast<UINT>(bi.biHeight), NULL,reinterpret_cast<LPBITMAPINFO>(&bi), DIB_RGB_COLORS);// If the driver did not fill in the biSizeImage field, then compute it.// Each scan line of the image is aligned on a DWORD (32bit) boundary.if (0 == bi.biSizeImage)bi.biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) & ~31) / 8) * bi.biHeight;// Allocate memoryHGLOBAL hDIB = ::GlobalAlloc(GMEM_MOVEABLE, sizeof(BITMAPINFOHEADER) + dwColTableLen + bi.biSizeImage);if (hDIB){union tagHdr_u{LPVOID             p;LPBYTE             pByte;LPBITMAPINFOHEADER pHdr;LPBITMAPINFO       pInfo;} Hdr;Hdr.p = ::GlobalLock(hDIB);// Copy the header::CopyMemory(Hdr.p, &bi, sizeof(BITMAPINFOHEADER));// Convert/copy the image bits and create the color tableint nConv = ::GetDIBits(hDC, hBM, 0, static_cast<UINT>(bi.biHeight),Hdr.pByte + sizeof(BITMAPINFOHEADER) + dwColTableLen,Hdr.pInfo, DIB_RGB_COLORS);::GlobalUnlock(hDIB);if (!nConv){::GlobalFree(hDIB);hDIB = NULL;}}if (hDIB)::SetClipboardData(CF_DIB, hDIB);::CloseClipboard();::SelectPalette(hDC, hOldPal, FALSE);::ReleaseDC(NULL, hDC);return NULL != hDIB;
}

参考:
https://www.codeproject.com/Questions/344732/copy-hbitmap-to-clipboard%20%E5%9B%9E%E5%A4%8D%20%E8%B5%9E

C++:本地图片拷贝到剪切板相关推荐

  1. 本地剪切板 java,java:复制图片到系统剪切板 然后怎么以图片文件的形式粘贴至本机...

    java:复制图片到系统剪切板 然后如何以图片文件的形式粘贴至本机? 本帖最后由 u013531487 于 2014-07-16 22:56:44 编辑 代码列在下边 问题是: 我先获取了待保存的图片 ...

  2. Python中将pandas的dataframe拷贝到剪切板并保持格式实战:to_clipboard()函数、复制到Excel文件、复制到文本文件(默认是tsv格式)、复制到文本文件(设置逗号分隔符)

    Python中将pandas的dataframe拷贝到剪切板并保持格式实战:to_clipboard()函数.复制到Excel文件.复制到文本文件(默认是tsv格式).复制到文本文件(设置逗号分隔符) ...

  3. python获取剪切板图片_python 获取剪切板内容的两种方法

    第一种 # -*- coding: utf-8 -*- # @Time : 2020/3/16 21:26 # @File : get_text_from_cupboard_13.py # @Auth ...

  4. electron实现复制文字和图片到剪切板

    electron实现复制文字和图片到剪切板 这是一个使用electron开发的客户端项目,其中想要实现一个模拟右键菜单复制的功能. 文字的复制 首先需要创建一个selection对象,该对象即为你左键 ...

  5. 从剪切板粘贴图片上传

    一个需求:让用户使用剪切板来粘贴图片(而不是将图片保存到本地,然后再选取文件上传) fakepath是什么鬼 今天做图片上传时发现,不论是什么路径上传的文件,路径都变成了这种格式 "C:\f ...

  6. 读取目录下的图片写入剪切板然后发送到qq窗口

    平时为了奖励群友,把自己私藏的好康图片发给群友,但是一张一张发太过于麻烦,于是就想着写一个脚本.用C语言写的.具体涉及到读取文件夹下的文件,剪切板操作,跟键盘事件的相关操作,控制台窗口字体颜色修改.废 ...

  7. 使用剪切板[2]: Assign、HasFormat

    为什么80%的码农都做不了架构师?>>>    准备工作: 在窗体上放置一个 TPanel; 在 TPanel 上放一个 TImage; 另外需要三个按钮. 本例效果图: 第一版代码 ...

  8. vue获取剪切板内容_vue通过clipboard插件实现复制到剪切板功能

    1.在package.json添加依赖"dependencies": { "clipboard": "^2.0.0" } 2.页面引入cli ...

  9. ​Web前端剪切板文本分享到文件发送

    注意:本文Demo请点击文末"阅读原文"方便查看. 前言 现在前端富交互能力越来越强,也有很多产品基于前端技术进行离线应用开发或在线应用体验增强:这其中剪切板操作也是一个经常会亮相 ...

  10. 兼容手机PC,点击即可复制文本内容到剪切板插件clipboard.js

    开源项目 https://github.com/zenorocha/clipboard.js. (拷贝文本到剪切板不应该复杂,它不应该需要许多步骤以及几百KB的文件,另外,它不应该依靠flash以及其 ...

最新文章

  1. 仅用几行Python代码就能帮小姐姐复制U盘文件,实用干货
  2. java 必备_Java基础必备
  3. 吐血整理:手拿几个大厂 Offer 的秘密武器!
  4. java和python哪个好学-Java VS Python 应该先学哪个?
  5. 实验新手必须知道的细胞计数技巧
  6. 学习SpringMVC笔记——Intellij IDEA创建SpringMVC项目
  7. Java代码内容概述
  8. Vysor 2.1.x Pro使用
  9. PHP设计模式——简单工厂
  10. 《BI那点儿事》Microsoft 决策树算法
  11. 如何安装安信可一体化开发环境【转】
  12. 用C为密集运算函数加速
  13. OKR工作法学习心得
  14. 十年阿里P6大牛谈外包!
  15. JS自上而下递归遍历计算树结构节点数值和
  16. linux如何查看服务器的型号和常用信息
  17. Android蓝牙开发的各种坑
  18. 羽素登陆《岭南大医生》专业顾问带你避雷护肤误区
  19. python求字典的平均值_python求字典的平均值_获取字典列表中值的平均值
  20. 在计算机软件中 BIOS的中文意思是,BIOS是什么意思?电脑主板bios在哪里?

热门文章

  1. 徐梓萌 受邀担任 火星少年计划 第四季 特邀小主持人
  2. linux配置中端代理
  3. 头的各个部位示意图_人体头部结构图解剖图 人体头部结构及功能
  4. 安徽汽车网程序员删库跑路?安徽汽车官网只剩3张图片!
  5. Android 音频(一) _ 采样量化编码 AudioRecord 录制音频
  6. windows10如何使用Wallpaper Engine实现动态锁屏壁纸?把WE的壁纸应用到锁屏。
  7. 163邮箱邮件服务器域名,注册申请网易免费域名邮箱服务
  8. 微信公众号如何添加附件链接
  9. 05Echarts - 折线图(Smoothed Line Chart)
  10. DeR-ViT(CVPR2022)