windows程序设计(四)---CDC类及其子类---CClientDC、CWindowDC和CPaintDC

CDC类详细说明 阅读详情
  • CDC类

Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 。MFC基础类库定义了设备环境对象类----CDC类。

 

父类:从 CObject 直接继承而来。继承了CObject类的各种特性,如动态创建等等。

 

例如用GDI画矩形要Rectangle(hDC,...),而使用CDC则是dc.Rectangle(...),由此可见CDC主要是把原本需要HDC作为参数的GDI函数封装了一下,HDC成了它的一个成员变量。   CPaintDC CWindowDC CClientDC:他们都是从CDC继承,分别是对上面所说的BeginPaint,GetWindowDC, GetDC调用对进行封装(CPaintDC构造时调用BeginPaint,析构时调用EndPaint,其余同理)。

 

数据成员只有两个:HDC m_hDC : CDC对象使用的输出设备上下文
                           HDC m_hAttribDC : CDC对象使用的属性设备上下文

  • CClientDC子类
  1. CClientDC类只能在客户区绘图;
  2. 所谓客户区指窗口区域中去掉边框、标题栏、菜单栏、工具栏、状态栏等之外的部分,它是用户可以操作的区域;
  3. 在使用CClientDC进行绘图时,一般要调用GetClientRect()函数来获取客户区域的大小;
  4. CClientDC类在构造函数中调用Windows API函数GetDC(),在析构时响应ReleaseDC();
  5. CClientDC类的窗口句柄保存在成员变量m_hWnd,为构造CClientDC,需将CWnd作为参数传递给构造函数。
  • CWindowDC子类
  1. CWindowDC对象在构造时调用Windows API函数GetWindowDC,在析构时调用相应的API函数ReleaseDC,这意味着CWindowDC对象可访问CWnd所指向的为整个全屏幕区域;
  2. CWindowDC允许在显示器的任意位置绘图。坐标原点在整个窗口的左上角。
  3. 在使用CWindowDC进行绘图时,一般要调用GetWindowRect函数来获取整个应用程序窗口区域的大小;
  4. CWindowDC类的窗口句柄保存在成员变量m_hWnd,为构造CClientDC,需将CWnd作为参数传递给构造函数。
  • CPaintDC子类
  1. 通常CPaintDC用来响应WM_PAINT消息。一般应用在OnPaint函数. 
  2. CClientDC也是从CDC派生出来的.构造时自动调用GetDC函数,析构时自动调用ReleaseDC函数.一般应用于客户区窗口的绘制.
  3. CPaintDC只能在WM_PAINT消息中使用, 用于有重画消息发出时才使用的内存设备环境, 而CClientDC和客户区相关,有重画消息发出时才使用的内存设备环境, 可在任何地方使用.
  4. 在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。

 

dolphinscheduler-3.4.0 dolphinscheduler集群部署 阅读详情

相关推荐

Fluent新手避坑:遇到‘Floating point exception’别慌,这7个排查步骤帮你搞定

本文为Fluent新手提供了遇到‘Floating point exception’错误时的7个详细排查步骤。从理解浮点异常的本质到边界条件检查、时间步长设置、求解器选择、网格优化、亚松弛因子调节以及高阶格式的取舍,帮助用户快速定位并解决问题,确保CFD仿真的稳定性和准确性。

weixin_30480075的博客 260

CPaintDC 、CWindowDC、 CClientDC、cMemDC、 CDC

CPaintDC 、CWindowDC、 CClientDC、 CDC 关系图: 一句话概括: CPaintDC 无效区dc,相当于BeginPaint, EndPaint CClientDC 客户区dc,相当于GetDC, ReleaseDC CWindowDC 整窗口dc, 相当于GetWindowDC, ReleaseDC CDC 任何dc, ...

baidu_16370559的博客 922

mysql数据库中使用存储过程带来的好处和示例(存储过程的概念、定义、作用等详解)

MySQL的存储过程(Stored Procedure)是一组SQL语句集合。用户通过指定的存储过程名和参数来调用并执行它。存储过程可以在数据库中预编译并存储,这样它们可以被多次调用而无需重新编写或解析SQL语句。 存储过程将复杂的SQL逻辑封装在一个可重用的单元中。多次调用存储过程,而不需要重复编写相同的SQL代码。- 通过封装,可以隐藏复杂的SQL逻辑,只向用户或应用程序提供简单的接口。MySQL的存储过程和编程语言中的函数的原理和目标是一致的:封装可重用的代码逻辑并提高代码的可维护性和可重用性。

weixin_70208651的博客 1717

VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor

目录 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor 接上:VC++ 绘制线条 OnLButtonDown函数(DrawView.cpp) 利用SDK全局函数实现画线功能 利用MFC的CDC类实现画线功能 利用MFC的CClientDC类实现画线功能 接下: 利用MFC的CWindowDC类实现画线功能 先介绍一个MFC类:CWindowDC,这个类也派生于CDC类,并且在构造时调用GetWind

当路danglu0010 3647

GDI文字绘制和windows下opengl文字绘制小结

GDI绘制文字,要设置文字的属性,主要就是通过设置DC中的font对象来实现的。 font对象的创建可以由createfont()、createfontIndirect()来实现。 HFONT CreateFont( int nHeight, // height of font int nWidth, // average

T_W_S的专栏 5322

vue3+ts+elementui-plus二次封装树形表格实现不同层级展开收起的功能

我只定义了三层数据,就只演示展开了三层,还可以多层,自己设置即可。

蜗牛~~ 2602

在window中绘制图像——CDC设备环境类

Visual C++的CDC类是MFC中最重要的类之一,它封装了绘图所需要的所有函数,是用户编写图形和文字处理程序所必不可少的。 CDC是一个很大的类,包含了各种类型的Windows设备描述表的全部功能,封装了所有的与Win32 GDI函数和设备表相关的SDK函数。在MFC下,使用CDC的成员函数来完成所有的窗口绘制工作,包括创建和初始化DC的函数、绘制一般图形的GDI函数...

weixin_34126557的博客 175

【2024遥感应用组一等奖】基于时空融合和水量平衡法的若尔盖高原水源涵养功能评价

考虑到水源涵养的概念和尺度特征、数据的可获得性、模型的模拟精度等,构建了一种基于遥感、气象和水量平衡原理的草原湿地水源涵养评价方法,估算若尔盖湿地近23年(2000-2022)来的水源涵养量。若尔盖湿地是我国黄河源区的重要水源地,所以本研究以若尔盖湿地的水源涵养功能评估为科学问题,基于遥感数据、GIS数据等,利用水量平衡原理,发展计算简单、便捷、数据易获取的“水源涵养估算方法”,科学估算若尔盖湿地水源涵养服务量,探究其时空动态变化趋势及其影响因素;公式中,Z1和Z2为两个不同高度面的高度,u为摩擦速率;

JData_Engineer的博客 239

VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条

先介绍一个MFC类:CWindowDC,这个类也派生于CDC类,并且在构造时调用GetWindowDC函数获得相应的设备描述表对象,在析构时调用ReleaseDC函数释放该设备描述对象所占用的资源。该对象的构造与CClientDC对象相同,如果要构造一个与视类窗口相关的设备描述表,则可以利用视类对象的指针来构造这个CWindowDC对象。如果想要绘制其他颜色的线条,首先需要创建一个特定颜色的画笔,然后将此画笔选入设备描述表中,接下来绘制的线条的颜色就由这个新画笔的颜色决定了。(但是截图后不显示)

m0_37346206的博客 810

AI大模型探索之路-应用篇11:AI大模型应用智能评估(Ragas)

随着人工智能技术的飞速发展,AI大模型(LLM)已经成为了推动技术创新和应用的关键因素。这些大模型在语言理解、图像识别、自然语言生成等领域展现出了惊人的能力。然而,随着模型规模的增大,它们对计算资源的消耗、环境适应性、模型稳定性、安全性和可解释性等方面也提出了新的挑战。因此,对AI大模型进行智能评估变得至关重要,以确保它们在实际应用中的稳定性、可靠性和有效性。本文将详细介绍Ragas框架,一个专为AI大模型设计的智能评估工具。

寻道AI,探索AI无限可能! 5546

qcc304x笔记之手机端显示电量(九)

默认的sdk有些安卓手机不支持电量显示,所以需要加电量显示的补丁 流程分析 1. 首先新建一个task,并将task注册给电池模块 appBatteryRegister(batteryRegistrationForm) 实现handler处理函数,当battery模块电池电量更新后,会将电池百分比值发送到本模块,然后我们就可以在handler中将实时电量同步到手机端了。 hfpAtCmdInit atCmdTask.task.handler = appAtCmdHandleM...

在云巅的博客 2200

DC、CDC及CDC的各个子类

设备描述表是一个包含设备信息的布局体(物理设备如显示器、打印机),MFC中关于图像操纵都须要DC来完成。     HDC是Windows的一种数据类型,是设备描述句柄;     CDC是MFC封装的Windows 设备相干的一个类;     CClientDC是CDC的衍生类,产生对应于Windows客户区的对象,在机关的时辰调用GetDC,在析构的时辰调用ReleaseDC;     

ccx_john的专栏 1336

手把手教你学Simulink——基于Simulink的PMSM MTPA + FW 全速域平滑切换策略

本文提出一种基于Simulink的PMSM全速域平滑切换控制策略,通过融合MTPA和弱磁控制(FW)实现基速附近的无冲击过渡。在过渡区采用加权融合电流给定方法,使电流超调<5%、转速波动<2%,全速域效率>90%。文章详细介绍了系统架构、核心算法及Simulink建模步骤,包括融合控制器设计、切换逻辑实现和参数优化。仿真结果表明,该方法相比传统硬切换显著改善了动态性能,并扩展了调速范围。同时提供了可直接复用的工程模板和MATLAB代码,为电机控制工程师提供了实用的全速域控制解决方案。

MHD0815的博客 80

CClientDC 和 CDC 的区别

和 CDC 的区别" alt="CClientDC 和 CDC 的区别" src="http://s12.sinaimg.cn/bmiddle/48e1229747a5af4612f7b&690"> HDC是Windows的一种数据类型,是设备描述句柄; CDC是MFC封装的Windows 设备相关的一个类; CClientDC是CDC的衍生类,产生对应于Windows客户区的对

敏于思,慎于行 7945

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

HDC,CDC,CWindowDC,CClientDC,CPaintDC基础

首先说一下什么是DC(设备描述表) 解:Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息。Win32程序在绘制图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉。 在c++ 编程中常会见到HDC,CDC,CClientDC,CPaintDC,CWindowDC这样的类 HDC是DC的句柄,API中的一个类似指

黑色星辰 1589

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

CPaintDC 、CWindowDC、 CClientDC、 CDC联系与区别

CPaintDC 、CWindowDC、 CClientDC、 CDC 关系图:   一句话概括: CPaintDC            无效区dc,      相当于BeginPaint,   EndPaint CClientDC          客户区dc,      相当于GetDC,   ReleaseDC CWindowDC      整窗口dc,      相当

维c银翘片 1295

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

设备环境类:CDC类、CPaintDC类、CClientDC类、CWindowDC类总结

http://blog.youkuaiyun.com/ltag0110rtag/article/details/7360295 DC    :   设备环境(Device Context)                      1.  设备环境, 是 Window 内部的一种数据结构,用来保存与某个设备相关的绘制属性信息。                      2.  所有的

cytj129的专栏 1031

[转]HDC,CDC,CWindowDC,CClientDC,CPaintDC基础

转自http://hi.baidu.com/c996387762/blog/item/d1d54b250412602cd40742b2.html 首先说一下什么是DC(设备描述表) 解:Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息。Win32程序在绘制图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉。 在c

独自等待 944

CDC类的简介

CDC类:        Windows使用与设备无关的图形设备环境(DC :Device Context)进行显示。MFC基础类库定义了设备环境对象类----CDC类。        CDC类从 CObject 直接继承而来。继承了CObject类的各种特性,如动态创建等等。    ...

Loewen丶的小窝 2984

使用CDC的四个派生类:CClientDC,CPaintDC,CWindowDC,CMetaFileDC

1.首先介绍一下什么是DC(设备描述表) Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息。Win32程序在绘制图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉。 2.CDC及其派生类 CD...

dizi9750的博客 517

【VC++ MFC】MFC的CDC类 以及DC、CClientDC、CWindowDC、CPaintDC

DC(Device Context),设备上下文或者设备环境。 应用程序的输出面向设备环境(Device Context,DC),是一个虚拟逻辑设备,也称设备描述表或设备上下文。设备环境DC 是由GDI 创建,用来代表设备连接的数据结构。 (Windows提供了一个称为图形设备接口 GDI,用户通过调用GDI 函数与设备打交道,...

小鱼菜鸟的博客 494

CDC,CPaintDC,CClientDC,CWindowDC区别

Windows 应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC),在 DC 表示的逻辑意义的「画布」上进行图形的绘制。DC 是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息。Win32 程序在绘制图形之前需要获取 DC 的句柄 HDC,并在不使用时释放掉。

xy18990的博客 474

CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别

CClientDC dc(this);语句中的dc是自己定义的还是CClientDC中本就定义好的成员函数? CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别 1、 设备环境(DC) (1)在Windows中,显示工作是基于设备环境的。所谓设备环境(DC)是一种Windows数据结构,该结构包含应用程序设备输出时所需要的信息。 (2)在使用任何绘图函数之前必须建立一个设备环境对象。 (3)在Visual C++ 6.0的MFC..

jiachao_的博客 363

CClientDC、CPaintDC、CWindowDC类、WM_PAINT消息

首先说一下什么是DC(设备描述表) 解:Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息。Win32程序在绘制图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉。 在c++ 编程中常会见到HDC,CDC,CCl

fengjia_2008的专栏 614

【GDI】CClientDC 和 CDC 的区别

HDC是Windows的一种数据类型,是设备描述句柄。 CDC是MFC封装的Windows 设备相关的一个类。 CClientDC是CDC的衍生类,产生对应于Windows客户区的对象,在构造时调用GetDC,在析构时调用ReleaseDC。 CWindowDC也是CDC的衍生类,在构造的时候调用GetWindowDC,在析构时调用ReleaseDC,可访问CWnd的整个屏幕,包括客户区和非...

sunriver2000的专栏 841
上一篇: .NET开发十大常用工具软件分享
下一篇: windows程序设计(五)---映射模式(转换设备坐标和逻辑坐标)
ccfboy
博客等级 码龄18年 45粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值