CWnd,HWND; CDC,HDC

简介: CWnd,HWND; CDC,HDC

一:CWnd、HWND、HANDLE

CWnd: Window Class 窗口基类

HWND: Window Handle 窗口句柄

HANDLE: handle 句柄

(1)HWND   hWnd;  

   CWnd *pWnd = CWnd::FromHandle(hWnd);

(2)CWnd *pWnd = GetDlgItem(IDC_STATIC_SHOW);

   HWND hWnd = pWnd->m_hWnd; //m_hWnd是CWnd的一个成员

(3)CWnd *pWnd = GetDlgItem(IDC_STATIC_SHOW);

   pWnd = GetClientRect(&rect);

   CDC *pDC = pWnd->GetDC();

   StrectchDIBits(pDC->m_hDC, ...);

二:CDC、HDC

DC: Device Context 设备描述表,一种包含设备信息的数据结构

CDC: DC的基类

HDC: DC的句柄

(1)HDC hdc = ::GetDC(m_hWnd); //m_hWnd是当前窗口句柄

   ::ReleaseDC(m_hWnd, hdc);

(2)CDC* pDC = GetDC();

  ReleaseDC(pDC);

(3)CClientDC是CDC的派生类,管理窗口客户区的显示。使用它定义DC对象,不需要显式调用GetDC和ReleaseDC函数。

   CClientDC dc(this);

   dc.MoveTo(0,0);

   dc.LineTo(100,100);

(4)CWindowDC是CDC的派生类,管理这个窗口的显示。使用它定义DC对象,不需要显式调用GetDC和ReleaseDC函数。

   CWindowDC dc(this);

   dc.MoveTo(0,0);

   dc.LineTo(100,100);

(5)CPaintDC是CDC的派生类,只能应用在OnPaint()函数中。

   CPaintDC dc(this);

   HDC hdc = dc.GetSafeHdc();

   //或HDC hdc = dc.m_hDC;




三:HDC,CDC,CClientDC的区别和联系是什么?


HDC,CDC,CClientDC的区别和联系是什么?


HDC是句柄;

CDC是MFC封装的Windows设备相关的一个类;

CClientDC是CDC的衍生类,产生对应于Windows客户区的对象.


pDC 是类指针  

HDC 是windows句柄通过pDC获得hdc:  

HDC hdc=pDC->GetSafeHdc(); 通过hdc获得pDC:  

CDC *pDC=new CDC;  

pDC->Attach(hdc);


HDC是WINDOWS的一种数据类型,是设备描述句柄。

 

***而CDC是MFC里的一个封装类,它封装了几乎所有的关于HDC的操作。该类提供了一个数据成员m_hDC,用来保存与CDC类相关的DC句柄。 HDC m_hDC;  


也可以这样说,HDC定义的变量指向一块内存,这块内存用来描述一个设备的相关的内容,所以也可以认为HDC定义的是一个指针;而CDC类定义一个对象,这个对象拥有HDC定义的一个设备描述表,同时也包含与HDC相关的操作的函数.这与HPEN和CPen,POINT与CPoint之间的差别是一样的。


相关文章
|
分布式计算 数据处理 流计算
【原理】Flink如何巧用WaterMark机制解决乱序问题
【原理】Flink如何巧用WaterMark机制解决乱序问题
|
9月前
|
存储 SQL 算法
flink cdc 算法问题之low hign点位有重叠如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
流计算 存储 Windows
Flink Sink 接收数据的顺序(Window发送数据顺序)
nternalTimerServiceImpl.processingTimeTimersQueue存储着同一个Window中所有Key,取第一个key,调用WindowOperator.onProcessingTime进行处理,并发送给Sink InternalTimerServiceImpl.
2181 0
|
存储 API Apache
Flink对迟到数据的处理
Flink对迟到数据的处理
|
9月前
|
消息中间件 Java Kafka
Flink背压问题之checkpoint超时如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
消息中间件 机器学习/深度学习 监控
Flink之水位线(Watermark) 2
Flink之水位线(Watermark)
393 0
|
消息中间件 缓存 Kafka
Flink之水位线(Watermark)1
Flink之水位线(Watermark)
163 0
CWnd *和HWnd转换
<div class="content-head clearfix"> <div class="content-other-info"> </div> <h2 class="title content-title">CWnd *和HWnd转换</h2> </div> <div id="content" class="content mod-cs-content text-conte
1313 0
|
9月前
|
关系型数据库 MySQL 流计算
Flink CDC全库订阅binlog你们怎么配置的,我们这好像有漏数据的情况?
Flink CDC全库订阅binlog你们怎么配置的,我们这好像有漏数据的情况?
201 3
|
流计算 API Windows
[Flink]Flink1.3 Stream指南五 窗口触发器与驱逐器
1. 窗口触发器 触发器(Trigger)确定窗口(由窗口分配器形成)何时准备好被窗口函数处理。每个窗口分配器都带有默认触发器。
2646 0

热门文章

最新文章