如何将子窗口的客户区保存到位图文件中?

2023-11-24

我使用核心 WIN32 和 VC++ 创建了一个 Windows 应用程序。在我的父窗口中,我有一个子窗口和两个按钮“保存”和“发送”。

当用户单击“保存”按钮时,我想要savefileDialog要打开,用户应该能够将图像保存为位图文件。

应该使用 WinSock API 将相同的文件发送给远程用户......我的问题是,我不知道如何将窗口的屏幕截图保存到位图文件......

请帮我解决这个问题...我没有使用过 MFC、ATL 或 WTL...

提前致谢,


RECT rect     = {0};

GetWindowRect( hwnd, &rect );
ATL::CImage* image_ = new CImage();
image_ -> Create( rect.right - rect.left, rect.bottom - rect.top, 32 );

HDC device_context_handle = image_ -> GetDC();
PrintWindow( hwnd, device_context_handle, PW_CLIENTONLY );
image_ -> Save( filename );
image_ -> ReleaseDC();

delete image_;

PrintWindow()应该可以解决问题。

保存为 HBITMAP:

HDC hDC       = GetDC( hwnd );
HDC hTargetDC = CreateCompatibleDC( hDC );
RECT rect     = {0};

GetWindowRect( hwnd, &rect );

HBITMAP hBitmap = CreateCompatibleBitmap( hDC, rect.right - rect.left,
    rect.bottom - rect.top );
SelectObject( hTargetDC, hBitmap );
PrintWindow( hwnd, hTargetDC, PW_CLIENTONLY );
SaveBMPFile( filename, hBitmap, hTargetDC, rect.right - rect.left,
    rect.bottom - rect.top );

DeleteObject( hBitmap );
ReleaseDC( hwnd, hDC );
DeleteDC( hTargetDC );

我将把 SaveBMPFile 的实现留给你; )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将子窗口的客户区保存到位图文件中? 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 如何在相对于父窗口中的控件的位置显示模态窗体(opener)

    好吧 我有一个打开的表单 ShowDialog this 我尝试使用其更改表单的位置Location财产 但我不明白这个位置到底是相对于什么 我想在某个按钮下方打开此表单 那么如何才能做到这一点呢 Thanks A Form will ex
  • 如何在 docker 容器上部署 php-fpm 并在本地主机上部署 apache/nginx (Ubuntu)

    我们可以将apache和php部署在单独的docker容器中 然后将它们链接起来 但是有没有办法在docker容器中本地安装apache 使用apt get install apache2 和php fpm 然后链接它们 Thanks 是的
  • jQuery $(document).ready () 触发两次

    我一直在网上搜寻 试图找出这里发生的事情 但我无法得到具体的答案 我有一个 document ready在我的网站上 无论其中包含什么代码 它都会运行多次 我已经阅读了 jQuery 的错误报告 了解如何 ready如果语句中发生异常 事件
  • 将 play 作为 war 文件部署到 servlet 容器中,即使它大量使用 JPA?

    我是个新手 事实上我现在就读到了有关它的内容 我应该说些什么 问题胜于问题 目前我正在启动一个项目 该项目依赖于许多特殊的java库 hibernate spatial jts等 因为它还应该实现全面的 REST API 所以我必须在 Dj
  • 如何在 bash 中在一行中运行多个后台命令?

    我通常运行多个命令 如下所示 sleep 2 sleep 3 or sleep 2 sleep 3 但是如果我想从一个命令行命令在后台运行它们怎么办 sleep 2 sleep 3 不起作用 更换也不行 with 有办法做到吗 您究竟希望他
  • 需要动态设置quartz cron表达式

    我在我的Web应用程序 Servlet Web应用程序 中使用quartz 下面是quartz property文件和quartz job xml的快照 石英性能 Configure the Job Initialization Plugi
  • .*(点星)如何工作? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我已经明白了 表示任何字符的零个或多个 但是 有人可以解释一下如何 在接下来的工作中又会
  • 允许“Enter”键按下提交按钮,而不是仅使用 MouseClick

    我现在正在学习 Swing 课程以及与之相关的一切 我已经编写了一个玩具程序 它会提示输入名称 然后显示一个带有消息 您已输入 您的名字 的 JOptionPane 我使用的提交按钮只能单击 但我也想让它与 Enter 按钮一起使用 我尝试
  • 在条件评估期间如何从查询返回布尔值?

    我需要这样的东西 select len someLongTextColumn 0 as isEmpty 上面的方法不行 有什么替代方案吗 如果转换为位 那么大多数客户端代码可以直接将其读取为布尔值 SQL Server没有布尔类型 SELE
  • SQL Server DRI(ON DELETE CASCADE)慢吗?

    我一直在分析我们的一个系统中与特别慢的删除操作相关的反复出现的 错误报告 性能问题 长话短说 看来CASCADE DELETE钥匙在很大程度上负有责任 我想知道 a 这是否有意义 以及 b 为什么会这样 我们有一个小部件的模式 这些小部件位
  • 增强精神3在哪里?是被遗弃了吗?

    我找不到boost Spirit 3的任何下载 好像12月底官网就不说了 它去哪儿了 源代码可在Github 文档是here 引用自Blog C Now 2015 今天是 Spirit X3 的正式发布 又名 Spirit 3 0 0 X3
  • 操作栏菜单显示在屏幕外

    我有一个带有旧式菜单的应用程序 将主题更改为 Holo 并将目标 SDK 版本切换为 14 后 软菜单按钮消失了 没关系 但使用操作栏上的菜单按钮会显示文本菜单大部分在屏幕外 如所附图片所示 您有什么想法如何解决这个问题吗 我已经解决了这个
  • 如何在没有服务或线程预览的情况下进行相机捕获?

    是否可以在不显示相机预览的情况下捕获图像 我有一个要求 我应该能够从线程或服务捕获图像 而不干扰前台应用程序 因为我不想显示相机预览 但我仍然想捕获背景图像并将其存储在设备中 试试这个代码 活动启动时它将单击图片 它有预览 但预览大小设置为
  • 房间:在查询中使用变量

    我在我的应用程序中使用 Room DB 并且希望在查询中将列名称作为变量 以便我可以 随时随地 操作它 在调用方法时 示例代码 name 假设是代表一列的变量 Query UPDATE Products SET name value WHE
  • 如何让 Pip 尊重要求?

    如果我使用创建 setup pyrequires Pip 没有安装我的依赖项 这是我的 setup py from distutils core import setup setup name my project description
  • 将 Cocos2D 与 UIKit 集成

    我环顾四周 发现关于如何将 cocos2d 与 UIKit 集成的材料非常少 注意 不是相反 我的意思是 例如 在 UIView 中添加一个 cocos sprite 动画 该动画放置在分割视图控制器内 作为子视图 我怎样才能做到这一点 我
  • 为什么我使用JavascriptinnerHTML调用图片时不显示?

    我对 Javascript 还很陌生 我正在尝试一些东西 我正在使用一个函数来使用innerHTML 在表格内加载图像 但是图像不会显示 除非我在函数底部调用alert whatever 然后在警报可见时它会显示 我正在使用的代码类似于 该
  • 此异步 getter 变量在 DART 中如何工作

    我在颤振中遇到了这些代码 static Future
  • 如何使用javascript上传文件?

    我想用js创建一个上传器 谁能帮我如何使用 javascript 上传文件 您可以像这样使用 html5 文件类型
  • 如何将子窗口的客户区保存到位图文件中?

    我使用核心 WIN32 和 VC 创建了一个 Windows 应用程序 在我的父窗口中 我有一个子窗口和两个按钮 保存 和 发送 当用户单击 保存 按钮时 我想要savefileDialog要打开 用户应该能够将图像保存为位图文件 应该使用