ReleaseDC、DeleteDC(买二送一DeleteObject)简单解析

【MFC】GetDC函数、GetWindowDC函数 与 ReleaseDC函数介绍 01、目录 目录01、目录02、GetDC()函数2.1 GetDC()示例03、GetWindowDC()函数3.1 GetWindowDC()示例04、ReleaseDC()函数 02、GetDC()函数 GetDc函数:用于获得hWnd参数所指定窗口的客户区域的一个设备环境。 所获得的设备环境可以是通用、类或者私有类型,具体由指定窗口的类风格决定。对于通用设备环境,GetDc函数每次获取一个设备环境时都会用默认属性对它进行初始化。该函数获得的类和私有设备环境会与它们最后一次的设置保持一致。当设备环 阅读详情

    今天在用MFC写一个数据 挖掘的程序时,有一部分要显示出数据的动态变化,于是调用了pDC,当在DeleteDC的时候报错了,错误 为:winhand.cpp line:128,在网上找了找解决方案,说是把DeleteDC改成 ReleaseDC就行了,试了下,果然通过,下面是对ReleaseDC及 DeleteDC的解析,看到许多人也提到了DeleteObject,那么也顺 便解析一下。

 

 

ReleaseDC

 

    由 CreateDC、CreateCopatibleDC 函数创建的设备上下文环境,只 能使用DeleteDC来释放。

 

 

DeleteDC

 

    如果一个设备上下文环境 的句柄,是通过调用GetDC得到的,那么应用程序不能删除设备上下文设备,而且还 会报错,像我前面的错误那样,应该用Release函数来释放。



DeleteObject


 

    DeleteObject多是用来删除一个逻辑笔、画笔、字体、位图、区域或者调色板等等, 并且释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就随之消失了。 Deleteobject与SelectObject结合着使用,在 GDI对象使用完之后,释放GDI对象所关联的内存。需要注意的是: CGdiObject类的对象所关联的内存不能够使用Deleteobject函数 来释放。

 

 

    平时多用 .NET编程,而.NET及JAVA有其内置的“垃圾回 收能力”,C++则没有,这也我是我新近觉得C++迷人的地方之一,可以由程序员自己控制内存的使用情况,自己分配,自己还原,提高程序的效率,也很考究基本功。

 

Windows GDI 实战:C++ 实现屏幕光标随机绘制与透明处理 在 Windows 图形编程中,GDI(图形设备接口)是实现设备无关性图形操作的核心技术,它通过提供一套统一的 API 来管理设备上下文、位图与绘图操作。其原理在于抽象硬件细节,允许应用程序在屏幕、打印机等输出设备上执行画线、填充、文本与图像渲染。这项技术的工程价值在于为屏幕标注、远程协助、录屏软件及自动化测试工具等场景提供了底层图形支持。具体到光标绘制,GDI 需要处理光标资源的位图掩码(AND/XOR)以实现透明效果,并涉及设备上下文获取、BitBlt 图像传输等关键操作。本文聚焦于使用 C++ 和 W 阅读详情

相关推荐

Windows GDI编程实战:用AlphaBlend实现屏幕虚拟光标绘制

在Windows图形编程中,GDI(图形设备接口)是实现屏幕绘制的基础技术。其核心原理是通过设备上下文(DC)和位图操作,管理图形资源的创建、选入与输出。Alpha混合技术是处理透明图像的关键,它利用Alpha通道实现像素级的透明度控制,对于实现悬浮于界面之上的UI元素(如光标、提示框)具有重要技术价值。这一技术广泛应用于远程协助、屏幕录制、UI自动化测试及教学演示等场景,用于创建可编程控制的视觉指示器。本文以“虚拟光标绘制”为具体案例,详细拆解了如何通过GetCursorInfo、GetIconInfo获

weixin_33978044的博客 1401

DeleteDC 与 ReleaseDC的区别

DeleteDC 与 CreateDC 对应ReleaseDC 与 GetDC 对应借过来的(GetDC),就要放还回去(ReleaseDC)自已创建的(CreateDC),要自已删除(DeleteDC)总之,要“用过之后, 不留痕迹”还有以下的特殊情况,如CClientDC   dc(this)或CPaintDC dc(this);对于这样的dc到最后是否需要ReleaseDC()?答案是:不需

cabinriver的专栏 2949

Camera 基础知识

Raw Sensor输出的Data格式为Raw,图像的效果处理使用BB端的ISP,BB端接收Raw data后进行一系列的图像处理(OB,Shading,AWB,Gamma,EE,ANR等),效果方面由BB端控制,需要针对不同的模组进行效果调试,Raw sensor是目前的主流,数据量比YUV Sensor小(RAW10 格式的sensor 1个pixel 10个bit)使用平台ISP处理,能支持较大的size。不过,相位对焦并不是那么完美,它对光线的要求就比较高,在弱光拍摄环境下,相位对焦就无能威力了。

手机-手表蓝牙开发工程师的博客 3062

MFC窗口的GetDC()/ReleaseDC()有bug会造成内存泄露

GetDC()内存泄露

qq_51487385的博客 1038

最新版电子发票样式html+css--普通发票+增值发票

【代码】最新版电子发票样式html+css--普通发票+增值发票。

weixin_44110923的博客 3675

七星棋牌顶级运营产品全开源修复版源码教程:6端支持,200+子游戏玩法,完整搭建指南(含代码解析)

让您从源码下载到本地运行一步到位!此外,文中还将附带详细代码解析与操作步骤,即便没有开发经验,也能轻松完成二开与定制。数据库是棋牌游戏中极为关键的组成部分,用于存储用户信息、乐豆余额、游戏记录、提现申请等数据。以下是部分核心数据表结构示例,便于存储用户信息与游戏记录。AI模块能够控制游戏中的胜率,常用于调节玩家体验。防沉迷功能旨在限制未成年人游戏时间。的完整搭建流程,特别适合。首先,获取七星棋牌源码。本教程将为您详细讲解。

aa2031171的博客 7771

windll.user32.ReleaseDC failed : return 0

import pyautogui import time im=pyautogui.screenshot() b=im.getpixel((511,1002)) print(b) c=0 while b!=(255, 220, 0): time.sleep(1) c=c+1 print(c) b=pyautogui.screenshot().getpixel((511,1002)) print(b) print(pyautogui.pixelMatchesCo

lingyuncelia的博客 1252

DeepSeek 框架和技术栈分析

DeepSeek 诞生于对更高效、更强大的深度学习计算和模型训练的追求。随着深度学习模型的规模不断增大,如大型语言模型(LLMs)和复杂的视觉模型,传统的框架在处理这些大规模模型时面临着性能瓶颈和资源利用效率低下的问题。DeepSeek 旨在解决这些问题,通过优化框架设计和采用先进的技术栈,实现更高效的模型训练和推理,同时降低计算成本。

yournameplease的专栏 1511

DeleteDC、ReleaseDC、DeleteObject - [Daliy APIs]

DeleteDC 该函数删除指定的设备上下文环境(DC)。 原型: BOOL DeleteDC(HDC hdc); 参数: hdc:设备上下文环境的句柄。 返回值: 成功,返回非零值;失败,返回零。调用GetLastError获取扩展错误信息。 说明: 如果一个设备上下文环境的句柄是通过调用GetDC函数得到的,那么应用程序不能删除该设备上下文环境,...

weixin_30788731的博客 361

android 9.0Settings休眠时间项(屏幕超时)添加永不休眠功能

在9.0的系统产品开发中,系统中默认息屏时间为1分钟,可以通过在Setting中的息屏时间选项设置对应的息屏时间,但是在开发平板类的产品中,需要实现永不休眠的功能,所以需要在Settings中的息屏时间中添加永不休眠时间这一项来实现这个功能,接下来看息屏时间的相关功能,来添加这个功能

安卓兼职framework和app工程师的博客 2055

Web渗/透/攻/击实战(1)—成功渗/透台湾某净化设备公司官网

写在前面 作为一个防御型白帽黑客​ 你一定要知道黑客的进攻套路 才能有相应的防御措施 声明:只做测试,发现对方的漏洞,并不进行破坏性操作 1、 网站分析 地址:http://www.xxx.com.tw/ 这是一家中国台湾地区的网站,看着满屏的繁体字,就不是很舒服 网站首页包括:关于我们、资料下载、联络方式等等。 这些对我们进行sql注入用处并不大 我们需要的是可以进行参数传入的页面,这样我们就可以在参数里做文章 找一下 有没有新闻列表相关的页面 页...

信息安全领域优质创作者|操作系统领域专家 1805

GetDC ReleaseDC CreateCompatibleDC CreateCompatibleBitmap SelectObject DeleteDC DeleteObj

GetDCReleaseDCDeleteDC这些函数是Windows编程中用于图形设备上下文(Device Context, DC)和位图(Bitmap)操作的API函数,它们通常在使用GDI(图形设备接口)进行绘图时会被用到。此函数获取指定窗口(hWnd)的设备上下文(DC)。设备上下文是一个包含绘图表面的信息的数据结构,比如屏幕的像素格式、颜色管理能力等。通过DC,应用程序可以在窗口上绘制图形。释放之前通过GetDC函数获取的指定窗口(hWnd)的设备上下文(hDC)。

lijian2017的博客 1426

手把手教你学Simulink——基于AI融合与智能调度的场实例:强化学习在卫星资源分配中的应用

本文详细介绍了如何利用Simulink和强化学习技术实现智能卫星资源分配。文章首先分析了低轨卫星通信系统面临的动态资源调度挑战,提出采用强化学习(特别是PPO算法)的解决方案。接着逐步展示了完整的建模过程:从Simulink项目创建、卫星通信环境建模(用户业务、信道特性、资源池),到强化学习任务定义(状态空间、动作空间、奖励函数),再到PPO智能体的构建与训练。最后通过仿真验证,PPO智能体在系统吞吐量、公平性和阻塞率等关键指标上均优于传统方法。该方案为卫星通信系统的智能资源管理提供了可行方案,并支持进一步

MHD0815的博客 190

DeleteDC() 与 ReleaseDC() 的区别 [转]

DeleteDC 该函数删除指定的设备上下文环境(DC)。 原型: BOOL DeleteDC(HDChdc); 参数: hdc:设备上下文环境的句柄。 返回值: 成功,返回非零值;失败,返回零。调用GetLastError获取扩展错误信息。 说明: 如果一个设备上下文环境的句柄是通过调用GetDC函数得到的,那么应用程序不能删除该设备上下文环境,它应该调用Re...

u011555996的博客 1391

海上通信技术发展与研究综述

通过对海浪模型、节点运动特性、天线辐射特性等进行特征深度学习,考虑改变有效链路的持续时间、业务类型和容量的区别,以及卫星和节点的仰角等,改变通信策略,设计动态波束成形算法,优化折中浮标天线增益和波束宽度,适应海上环境,尤其是海浪运动时变的特性。目前的海上通信系统,同时包括海上无线通信系统、卫星通信系统、岸基通信系统、船载基站通信系统、空中基站通信系统等不同方法组成的通信系统来满足不同的需求,如海上无线通信系统通信成本低廉、卫星通信系统具有广域的覆盖范围、岸基通信网络可以实现数据高速传输。

weixin_70923796的博客 1000

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

DeleteDC() 与 ReleaseDC() 的区别

点击打开原文链接 DeleteDC 该函数删除指定的设备上下文环境(DC)。 原型: BOOL DeleteDC(HDChdc); 参数: hdc:设备上下文环境的句柄。 返回值: 成功,返回非零值;失败,返回零。调用GetLastError获取扩展错误信息。 说明: 如果一个设备上下文环境的句柄是通过调用GetDC函数得到的,那么应用程序不能删除该设备上下文环境,它应...

mpp_king的博客 960

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

DeleteDC() ReleaseDC()和DeleteObject()之间的区别

 DeleteDC( ) 该函数删除指定的设备上下文环境(DC)。 原型: BOOL DeleteDC(HDC hdc); 参数: hdc:设备上下文环境的句柄。 返回值:    成功,返回非零值;失败,返回零。调用GetLastError获取扩展错误信息。 说明:    如果一个设备上下文环境的句柄是通过调用GetDC函数得到的,那么应用程序不能删除该设备上下文环境,它

欧阳海宾 2337

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

DeleteDC ReleaseDC DeleteObject之间的区别

<br /><br />DeleteDC  <br /> <br /> <br />该函数删除指定的设备上下文环境(DC)。<br />原型:<br />BOOL DeleteDC(HDC hdc);<br />参数:<br />hdc:设备上下文环境的句柄。<br />返回值:<br />   成功,返回非零值;失败,返回零。调用GetLastError获取扩展错误信息。<br />说明:<br />   如果一个设备上下文环境的句柄是通过调用GetDC函数得到的,那么应用程序不能删除该设备上下文环境,它

hi_dzj的专栏 1628

ReleaseDC和DeleteDC的区别 (转)

ReleaseDC和DeleteDC的区别 (转) 2011年12月01日    在编SDK小游戏时发现的图片在背景上移动时,可能出现闪烁,这时双缓冲就是基本方法之一。   但发现一个480 * 580的小窗口中,都是移动了185次后,图片不动了,百思不得解,试想为内存泄漏   原来是ReleaseDC和DeleteDC在做怪,对于create的dc应该予以deletedc,而对于g...

qoz790qo 231

cdc 常识

用CreateDC,getDC等建立了DC后,在不再使用时应该用ReleaseDC释放他们所建立的DC,而用 CreateCompatibleDC 建立的DC应该用DeleteDC释放。 ReleadDC,是和GetDC()配套使用;    而DeleteDC,和CreateCompatibleDC配套使用;    DeleteObject,是对用Create_为前缀创建的GDI对象使用的。

mzwang123的专栏 794

GDI 对象的释放与内存泄漏的问题

GDI 对象的释放与内存泄漏的问题研究 最近写了一个GDI 绘图的程序,过程中遇到一个奇怪的问题,就是 定时器定时一会GDI绘的图就消失了。。后来经过分析,原来是 GDI对象数量过多 ,即GDI对象超过10000个 导致内存泄漏的问题。找到了问题所在,就好解决了,就是及时释放GDI对象。 在创建GDI对象的时候,遵循以下规则: GetDC 得到的DC要用 ReleaseDC CreateCompa...

zzlh5686的博客 863

释放资源

BeginPaint()对应EndPaint() GetDC()对应ReleaseDC() CreateCompatibleDC对应DeleteDC() HBITMAP对应DeleteObject()

human_cn的专栏 492

图形编程中释放资源的几个函数

DeleteDC 如果一个设备上下文环境的句柄是通过调用GetDC函数得到的,那么应用程序不能删除该设备上下文环境,它应该调用ReleaseDC函数来释放该设备上下文环境。 ReleaseDC 每次调用GetWindowDC和GetDC函数检索公用设备上下文环境之后,应用程序必须调用ReleaseDC函数来释放设备上下文环境。 应用程序不能调用ReleaseDC函数来释放由C

^_^TaeYang-Jade^_^ 888

vc6 关于DevPartner 的 Argument 2 in ReleaseDC

我有以下代码: CClientDC dc(this); CWnd *pWindow; CString fontName = _T(""); int iFontSize =0; //提示字体 CFont* font = new CFont; fontName =_T("MS Sans Serif"); iFontSize = 300;...

weixin_30619101的博客 119

G​D​I​内​存​防泄​露_人生几何_新浪博客

1. 尽量使用HDC和DeleteDC组合,不要用CDC HDC imageHDC =::CreateCompatibleDC( NULL ); HBITMAP hOldBMP = (HBITMAP)::SelectObject(imageHDC, m_hBmpResult[m_dResult]); ...... ::DeleteDC(imageHDC); 2. Get...

人生几何的博客 79
上一篇: Android开发环境配置教程
下一篇: 小白日记
AngusSL
博客等级 码龄17年 41粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值