VC++ HBITMAP保存文件

2023-10-30

请先看下面这段代码:

BOOL SaveBmp(HBITMAP bmp, string path)
{
	FILE* f = fopen(path.c_str(), "wb");
	if (!f)
		return 0;

	BITMAP bmpinfo;
	GetObject(bmp, sizeof(BITMAP), &bmpinfo);
	DWORD dwBmBitsSize = ((bmpinfo.bmWidth * 32 + 31) / 32) * 3 * bmpinfo.bmHeight;

	BITMAPFILEHEADER bf;
	bf.bfType = 0x4D42;
	bf.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + dwBmBitsSize;
	bf.bfReserved1 = 0;
	bf.bfReserved2 = 0;
	bf.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);

	BITMAPINFOHEADER bi;
	bi.biSize = sizeof(BITMAPINFOHEADER);
	bi.biWidth = bmpinfo.bmWidth;
	bi.biHeight = bmpinfo.bmHeight;
	bi.biPlanes = 1;
	bi.biBitCount = 24;
	bi.biCompression = BI_RGB;
	bi.biSizeImage = 0;
	bi.biXPelsPerMeter = 0;
	bi.biYPelsPerMeter = 0;
	bi.biClrUsed = 8;
	bi.biClrImportant = 0;
	
	HDC dc = ::GetDC(NULL);
	BYTE* lpvBits = new BYTE[dwBmBitsSize];
	m
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VC++ HBITMAP保存文件 的相关文章

  • 【小宝解惑】VC++中delete和delete [] 的区别

    我们通常从教科书上看到这样的说明 delete 释放new分配的单个对象指针指向的内存 delete 释放new分配的对象数组指针指向的内存 那么 按照教科书的理解 我们看下下面的代码 int a new int 10 delete a 方
  • TightVNC H264编解码(二)之硬编码库的编译

    AVCodec codec avcodec find encoder by name nvenc h264 如果是默认的ffmpeg库 返回结果是NULL 看来是不带有硬编码功能的 重新编译分支ffnvcodec 不到半个小时编译完成 返回
  • git clone指定分支拉代码、版本回退、log/reflog对比

    指定分支clone代码 1 git clone 不指定分支 默认就是master git clone http 10 1 1 11 service tmall service git 2 git clone 指定分支 git clone b
  • 免费C/C++编译器

    不好意思 等到现在才想到要写这篇文章 怎么说呢 情况是这样的 刚开始我学习C语言时 是想在机器上安装visual c 的 因为Turbo C太古老了 用起来不方便 所以很自然地想安装vc 不过不知道大家有没有发现vc很大 而且有些机子就是安
  • C++学习日记和心得(一)(新手帖,高手勿笑)

    前言 我之前三年也学过其他语言 VB pascal 都不是非常主流 但有一定程序学习的基础 没学过程序的孩子也不要伤心 只要认认真真的学习还是可以学会的 我也是刚开始学C 所以希望大家跟我一同从0开始学习C 如果对我有一些疑问和批评欢迎提出
  • EAN13条形码绘制(Delphi版)

    单元声明 unit UnitEAN https wenku baidu com view d61eec0dc4da50e2524de518964bcf84b9d52d0d html 共有95 18 113条数据模块 1表示黑 0表示白 左侧
  • live555 流媒体开源库

    live555对每一个从事过流媒体开发的从业者而言 都不曾陌生 就像每一个从事音视频行业的从业者而言 ffmpeg也不曾陌生 随着行业需求的发展 live555也是越见强大 因前几天帮朋友项目查找问题 重拾live555 没想到时隔10年
  • VC下MFC程序自删除(自杀)几种方法的实践与探讨

    在VC下做了个MFC的程序 想让他运行后 自动删除自己 在网上看了些资料 方法也有一些 都实践了一下 感觉对MFC的程序 使用cmd exe可能更合适一些 其他的方法也蛮好 蛮经典的 不过我感觉用在MFC程序上就不太合适了 我实践的方法有三
  • win7安装了vc++6.0打开已保存文件项目就会崩溃

    我用win7安装了vc 6 0的英文完整版 绿色中文版 发现当运行程序时 要打开已保存文件项目就会崩溃 系统对话筐就说 Microsoft R Developer Studio已停止工作 选择调试或者关闭 office 2010 与vc 6
  • DirectShow中的工具GraphEdit使用小结

    一 安装完Windows SDK 7 0或7 1后 在C Program Files Microsoft SDKs Windows v7 0 Bin下有32位的graphedt exe 及x64目录下有64位版本的graphedt exe
  • VC++设置与取得系统音量

    MMRESULT rc 多媒体函数返回结果变量 HMIXER hMixer 混合器设备句柄 MIXERLINE mxl 音频线路标准状态信息结构体 MIXERLINECONTROLS mxlc 音频线路控制器集合信息结构体 MIXERCON
  • QT 中文版信息提示框

    引言 在QT设计UI程序过程中 整套系统都是中文版本 然而信息提示默认只有中文 难免有点小纠结 这里针对QMessageBox稍微做了一点点改进 使其支持完美的中文提示框 调用方式非常简单 只需要将QMessageBox调用地方 改为QSh
  • VC++ FTP文件下传(断点续传)

    include
  • [教程]VC++6.0的简单使用

    鉴于许多同学的vc 6 0无法正常使用 并且不会创建工程及文件 还有的同学会遇到一些编译的问题 我在这里做个小教程 1 工具的准备 首先 我把需要的资源给大家 一共就两个文件 一个安装文件 另一个是MSDEV exe 用于替换 链接 htt
  • C语言函数操作大全----(超详细)

    fopen 打开文件 相关函数 open fclose 表头文件 include
  • Vc/MFC中自定义消息及其PostMessage触发使用

    http blog csdn net ztz0223 article details 2058402 http blog csdn net a8082649 article details 7733527 http bbs csdn net
  • Hook DirectInput->CreateDevice->GetDeviceData解决方案

    已解决 来人散分了 Hook DirectInput gt CreateDevice gt GetDeviceData 在一款使用DirectInput的3D游戏里面 通过Hook DirectInput8Create函数 CreateDe
  • C++ StrCmpLogicalW文件名排序

    打开资源管理器 文件列表如下 搜索文件列表 include
  • 系统托盘区句柄研究和C#基本托盘编程

    因为我的系统托盘区小图标有时候会不可见 在还是在 研究一下系统托盘区的句柄 是否每个小图标是一个单个窗口 就像form的button一样 下图句柄工具 把问号拖动到窗口上 就会显示该窗口的句柄和窗口类等信息 拖到系统托盘区看一下 拖到任何一
  • 从内存缓冲区创建 HBITMAP

    我有一个应用程序 它从数据库中加载一些 blob 数据 这些数据可以表示 png 格式或各种位图和图标的原始二进制数据 这被存储在std vector

随机推荐

  • 若依微服务报错Error: Cannot find module ‘html-webpack-plugin‘解决

    遇到的问题 Error Cannot find module html webpack plugin 但是已经有html webpack plugin了 还是提示了报错 解决办法 https gitee com y project RuoY
  • LeetCode每日刷题:合并两个有序数组

    题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目 请你 合并 nums2 到 nums1 中 使合并后的数组同样按 非递减顺序 排列 注意
  • LightGBM原理介绍

    简介 是GBDT模型的一个进化版本 其主要思想是利用弱分类器 决策树 迭代训练以得到最优模型 该模型具有训练效果好 不易过拟合等优点 备注 容易出现过拟合的风险 需要限制树的最大深度来防止过拟合 LGB是一个实现GBDT算法的框架 支持高效
  • Python学习笔记(三)

    文章目录 1 异常 2 单测 3 读写文件 3 1 读文件 3 2 写文件 3 3 操作文件和目录 4 正则表达式 4 1 贪婪匹配 5 其它 5 1 StringIO BytesIO 5 2 序列化 5 2 1 pickle 5 2 2
  • 3D光照阴影 平面阴影矩阵推导及代码实现

    3D光照阴影 平面阴影矩阵推导及代码实现 参考有关知识于是辛苦几个小时 推导出光照 平面阴影转换矩阵见图片 平面阴影矩阵推导第一页 平面阴影矩阵推导第二页 平面阴影矩阵 具体代码实现 第三页 到这里光照阴影的平面矩阵推导结束还有伪代码 参考
  • 如何使用学生账号来激活使用Jetbrains全家桶

    使用 edu邮箱注册学生账号来激活使用JetBrains全家桶 起因 之前激活过Jetbrains家的IDE 升级到2017 3 3版本 提示又要激活 试着原来的方法 结果用来激活的License Server全都失效 据称搭建本地反向代理
  • obj[‘x‘]和obj[x]的区别

    对象数据类型 由零到多组键值对 属性名和属性值 组成的属性名的类型 说法一 属性名类型只能是字符串或者Symbol 说法二 属性名类型可以是任何基本类型值 处理中可以和字符串互通 但是属性名绝对不能是引用数据类型 如果设置引用类型 最后也是
  • Python 爬虫学习笔记(二)urllib下载图片和视频

    一 urllib的1个类型和6个方法 1 response的类型 我们打印一下urllib request方法获取的response是什么类型 import urllib request url http www baidu com res
  • springboot yml文件配置Map List等数据

    springboot yml文件配置Map List等数据 配置类定义 yml 配置 使用 说明 配置类定义 import lombok Getter import lombok Setter import org springframew
  • 007 034 打印一个三角形

    例 使用输出语句输出一个三角形 include
  • 20+个小而精的Python实战案例(附源码和数据)

    公众号 尤而小屋作者 Peter编辑 Peter 大家好 我是Peter 最近小编认真整理了20 个基于python的实战案例 主要包含 数据分析 可视化 机器学习 深度学习 时序预测等 案例的主要特点 提供源码 都是基于jupyter n
  • Java实现扑克牌自动发牌系统

    利用Java的ArrayList实现随机给三个人发扑克牌 import java util ArrayList import java util List import java util Random class Card private
  • Linux 必备工具, 命令与例子

    目录 1 wget 2 screen 3 unzip gzip 4 netstat 5 git 6 composer 7 docker 8 docker compose 9 timedatectl set timezone Asia Sha
  • binfmt_misc

    一 binfmt misc是什么 binfmt misc是内核中的一个功能 它能将非本机的二进制文件与特定的解析器自动匹配起来 进行二进制解析 例如 在x86上解析arm64架构的二进制 通过binfmt misc可以注册解析器来处理指定二
  • JNI GetFieldID和GetMethodID函数解释及方法签名

    1 GetFieldID是得到java类中的参数ID GetMethodID得到java类中方法的ID 它们只能调用类中声明为 public的参数或方法 举例说明 jclass c env gt FindClass env com came
  • nodejs开发环境安装

    安装环境 win7 64位 访问nodejs官网 http nodejs org 点击Download链接 选择Windows Installer 下载安装包 直接安装即可 安装成功后 在命令窗口 cmd node 查看是否成功 若果没有成
  • UART、RS-232、RS-422、RS-485的区别

    v3学院带你一次性认清UART RS 232 RS 422 RS 485的区别 https www cnblogs com laokai p 6488910 html 通讯问题 和交通问题一样 也有高速 低速 拥堵 中断等等各种情况 如果把
  • LBP算法及其改进算法

    LBP LBP指局部二值模式 英文全称 Local Binary Pattern 是一种用来描述图像局部特征的算子 LBP特征具有灰度不变性和旋转不变性等显著优点 它是由T Ojala M Pietik inen 和 D Harwood在1
  • 第二十五章 Chisel进阶——隐式参数的应用

    用Chisel编写的CPU 比如Rocket Chip RISCV Mini等 都有一个特点 就是可以用一个配置文件来裁剪电路 这利用了Scala的模式匹配 样例类 偏函数 可选值 隐式定义等语法 本章内容就是来为读者详细解释它的工作机制
  • VC++ HBITMAP保存文件

    请先看下面这段代码 BOOL SaveBmp HBITMAP bmp string path FILE f fopen path c str wb if f return 0 BITMAP bmpinfo GetObject bmp siz