CPaintDC类与CClientDC类的区别
来源:互联网 发布:电脑内存优化软件 编辑:程序博客网 时间:2024/05/21 11:35
1 CPaintDC类(1)CPaintDC类是CDC类的一个派生类,该类一般用在响应WM_PAINT消息的函数OnPaint()中。(2)WM_PAINT消息是当窗口的某个区域需要重画时激发的窗口消息。当程序中的消息循环接到WM_PAINT消息时就自动调用消息处理函数OnPaint(),如果在OnPaint函数内定义了CPaintDC类的对象,通过这个类对象就可以使用CDC类的成员函数完成视图客户区中的图形绘制操作。(3)CPaintDC用于响应窗口重绘消息(WM_PAINT)时的绘图输出。CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在析构函数中调用EndPaint()释放设备上下文。EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息。因此,在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。CPaintDC也只能用在WM_PAINT消息处理之中。2 CClientDC类CClientDC类也是CDC类的派生类。它只能在窗口的客户区(即窗口中除了边框、标题栏、菜单栏以及状态栏外的中间部分)中进行绘图,坐标点(0,0)通常指的是客户区的左上角。它的构造函数调用GetDC函数,而析构函数调用ReleaseDC函数。CClientDC(客户区设备上下文)用于客户区的输出,它在构造函数中封装了GetDC(),在析构函数中封装了ReleaseDC()函数。一般在响应非窗口重画消息(如键盘输入时绘制文本、鼠标绘图)绘图时要用到它。用法是:CClientDC dc(this);//this一般指向本窗口或当前活动视图dc.TextOut(10,10,str,str.GetLength());//利用dc输出文本,如果是在CScrollView中使用,还要注意调用OnPrepareDC(&dc)调整设备上下文的坐标。
0 0
- CPaintDC类与 CClientDC类的区别
- CPaintDC类与CClientDC类的区别
- 【vc】CPaintDC, CClientDC与CWindowDC的区别
- CPaintDC, CClientDC与CWindowDC的区别
- CPaintDC, CClientDC与CWindowDC的区别
- CPaintDC, CClientDC与CWindowDC的区别
- CPaintDC, CClientDC与CWindowDC的区别
- CPaintDC, CClientDC与CWindowDC的区别
- CPaintDC, CClientDC与CWindowDC的区别
- CPaintDC, CClientDC与CWindowDC的区别
- CPaintDC, CClientDC与CWindowDC的区别
- CPaintDC, CClientDC与CWindowDC的区别
- CPaintDC, CClientDC与CWindowDC的区别
- CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别
- CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别
- CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别
- CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别
- CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别
- SQLAnywhere 12 API
- Java Swing 获取当前系统默认界面
- rtmpdump bug列表
- oracle 锁表查询以及解锁和ki…
- AC自动机-poj 2778
- CPaintDC类与CClientDC类的区别
- linux下vim命令详解
- 类和对象(JAVA)
- JOptionPane.showConfirmDialog例…
- 通过EXCEL 如何引用SQLSERVER…
- \n \r的区别和由来
- UNREAL ENGINE 4 VS. UNITY – A QUICK OVERVIEW Unreal Engine 4 vs. Unity
- JAVA用于控制可见性的4个访问修饰…
- 封包和拆包