C++:本地图片拷贝到剪切板
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++:本地图片拷贝到剪切板相关推荐
- 本地剪切板 java,java:复制图片到系统剪切板 然后怎么以图片文件的形式粘贴至本机...
java:复制图片到系统剪切板 然后如何以图片文件的形式粘贴至本机? 本帖最后由 u013531487 于 2014-07-16 22:56:44 编辑 代码列在下边 问题是: 我先获取了待保存的图片 ...
- Python中将pandas的dataframe拷贝到剪切板并保持格式实战:to_clipboard()函数、复制到Excel文件、复制到文本文件(默认是tsv格式)、复制到文本文件(设置逗号分隔符)
Python中将pandas的dataframe拷贝到剪切板并保持格式实战:to_clipboard()函数.复制到Excel文件.复制到文本文件(默认是tsv格式).复制到文本文件(设置逗号分隔符) ...
- python获取剪切板图片_python 获取剪切板内容的两种方法
第一种 # -*- coding: utf-8 -*- # @Time : 2020/3/16 21:26 # @File : get_text_from_cupboard_13.py # @Auth ...
- electron实现复制文字和图片到剪切板
electron实现复制文字和图片到剪切板 这是一个使用electron开发的客户端项目,其中想要实现一个模拟右键菜单复制的功能. 文字的复制 首先需要创建一个selection对象,该对象即为你左键 ...
- 从剪切板粘贴图片上传
一个需求:让用户使用剪切板来粘贴图片(而不是将图片保存到本地,然后再选取文件上传) fakepath是什么鬼 今天做图片上传时发现,不论是什么路径上传的文件,路径都变成了这种格式 "C:\f ...
- 读取目录下的图片写入剪切板然后发送到qq窗口
平时为了奖励群友,把自己私藏的好康图片发给群友,但是一张一张发太过于麻烦,于是就想着写一个脚本.用C语言写的.具体涉及到读取文件夹下的文件,剪切板操作,跟键盘事件的相关操作,控制台窗口字体颜色修改.废 ...
- 使用剪切板[2]: Assign、HasFormat
为什么80%的码农都做不了架构师?>>> 准备工作: 在窗体上放置一个 TPanel; 在 TPanel 上放一个 TImage; 另外需要三个按钮. 本例效果图: 第一版代码 ...
- vue获取剪切板内容_vue通过clipboard插件实现复制到剪切板功能
1.在package.json添加依赖"dependencies": { "clipboard": "^2.0.0" } 2.页面引入cli ...
- Web前端剪切板文本分享到文件发送
注意:本文Demo请点击文末"阅读原文"方便查看. 前言 现在前端富交互能力越来越强,也有很多产品基于前端技术进行离线应用开发或在线应用体验增强:这其中剪切板操作也是一个经常会亮相 ...
- 兼容手机PC,点击即可复制文本内容到剪切板插件clipboard.js
开源项目 https://github.com/zenorocha/clipboard.js. (拷贝文本到剪切板不应该复杂,它不应该需要许多步骤以及几百KB的文件,另外,它不应该依靠flash以及其 ...
最新文章
- 仅用几行Python代码就能帮小姐姐复制U盘文件,实用干货
- java 必备_Java基础必备
- 吐血整理:手拿几个大厂 Offer 的秘密武器!
- java和python哪个好学-Java VS Python 应该先学哪个?
- 实验新手必须知道的细胞计数技巧
- 学习SpringMVC笔记——Intellij IDEA创建SpringMVC项目
- Java代码内容概述
- Vysor 2.1.x Pro使用
- PHP设计模式——简单工厂
- 《BI那点儿事》Microsoft 决策树算法
- 如何安装安信可一体化开发环境【转】
- 用C为密集运算函数加速
- OKR工作法学习心得
- 十年阿里P6大牛谈外包!
- JS自上而下递归遍历计算树结构节点数值和
- linux如何查看服务器的型号和常用信息
- Android蓝牙开发的各种坑
- 羽素登陆《岭南大医生》专业顾问带你避雷护肤误区
- python求字典的平均值_python求字典的平均值_获取字典列表中值的平均值
- 在计算机软件中 BIOS的中文意思是,BIOS是什么意思?电脑主板bios在哪里?
热门文章
- 徐梓萌 受邀担任 火星少年计划 第四季 特邀小主持人
- linux配置中端代理
- 头的各个部位示意图_人体头部结构图解剖图 人体头部结构及功能
- 安徽汽车网程序员删库跑路?安徽汽车官网只剩3张图片!
- Android 音频(一) _ 采样量化编码 AudioRecord 录制音频
- windows10如何使用Wallpaper Engine实现动态锁屏壁纸?把WE的壁纸应用到锁屏。
- 163邮箱邮件服务器域名,注册申请网易免费域名邮箱服务
- 微信公众号如何添加附件链接
- 05Echarts - 折线图(Smoothed Line Chart)
- DeR-ViT(CVPR2022)