mfc随记:OnPaint消息

OnPaint 说明

CWnd::OnPaint
afx_msg void OnPaint( );

说明:
当Windows或应用程序请求重画应用程序窗口的一部分时,框架调用这个成员函数。WM_PAINT在调用UpdateWindow或RedrawWindow成员函数时发出。当设置了RDW_INTERNALPAINT标志并调用RedrawWindow成员函数时,窗口可能会接收到内部重画消息。在这种情况下,窗口可能没有更新区域。应用程序必须调用GetUpdateRect成员函数以确定窗口是否具有更新区域。如果GetUpdateRect返回0,则应用程序不应调用BeginPaint和EndPaint成员函数。
应用程序负责检查是否需要内部重画或更新,这可通过查看每条WM_PAINT消息的内部数据结构来完成,因为一条WM_PAINT可能是由于一个无效区域或由于使用RDW_INTERNALPAINT标志调用了RedrawWindow成员函数而引起的。
Windows只发送一次内部WM_PAINT消息。在通过UpdateWindow成员函数向窗口发送了内部WM_PAINT消息以后,将不会再向窗口发送其它WM_PAINT消息,直到再次使用RDW_INTERNALPAINT标志调用了RedrawWindow成员函数

CPaintDC

CPaintDC类是一个来自CDC的设备环境类。它在构造期间执行CWnd::BeginPaint,在析构期间执行CWnd::EndPaint。
一个CPaintDC对象只在响应一个WM_PAINT消息的时候被使用,通常是在你的OnPaint消息处理成员函数中。
#include <afxwin.h>

举个例子

void CmessageDlg::OnPaint()
{
    //画到当前窗口
	CPaintDC dc(this);
	//画文字
	dc.TextOutW(100, 100, TEXT("不忘初心 牢记使命"));
	//画园
	dc.Ellipse(100, 100, 300, 300);
}

CPaintDC 的一些方法

GetBkColor 获取当前背景色  
SetBkColor 设置当前背景色  
GetBkMode 获取背景模式  
SetBkMode 设置背景模式  
GetPolyFillMode 获取当前多边形填充模式  
SetPolyFillMode 设置多边形填充模式  
GetROP2 获取当前绘图模式  
SetROP2 设置当前绘图模式  
GetStretchBltMode 获取当前位图拉伸模式  
SetStretchBltMode 设置位图拉伸模式  
GetTextColor 获取当前文本颜色  
SetTextColor 设置文本颜色  
GetColorAdjustment 获取用于设备上下文的颜色调整值  
SetColorAdjustment 使用指定值设置设备上下文的颜色调整值 
GetMapMode 获取当前映射模式  
SetMapMode 设置当前映射模式  
GetViewportOrg 获取视区起点的X和Y坐标  
SetViewportOrg 设置视区起点  
OffsetViewportOrg 相对于当前视区起点坐标修改视区起点  
GetViewportExt 获取视区X和Y范围  
SetViewportExt 设置视区X和Y范围  
ScaleViewportExt 相对于当前值修改视区范围  
GetWindowOrg 获取参应窗口起点的X和Y坐标  
SetWindowOrg 设置设备上下文的窗口起点  
OffsetWindowOrg 相对于当前窗口起点的坐标修改窗口起点  
GetWindowExt 获取对应窗口的X和Y坐标  
SetWindowExt 设置对应窗口的X和Y坐标  
ScaleWindowExt 相对于当前值修改窗口范围  
DPtoHIMETRIC 设备单位转换为HIMETRIC单位  
LPtoHIMETRIC 逻辑单位转换为HIMETRIC单位  
DPtoLP 设备单位转换为逻辑单位  
LPtoDP 逻辑单位转换为设备单位  
HIMETRICtoDPHIMETRIC 单位转换为设备单位  
HIMETRICtoLPHIMETRIC 单位转换为逻辑单位  
FillRect 用指定画刷填充给定矩形  
FrameRect 在矩形周围绘制边界  
InvertRect 反转矩形内容  
DrawIcon 绘制图标  
DrawDragRect 拖拽矩形时擦除并重绘它  
FillSolidRect 用实颜色填充矩形  
Draw3Drect 绘制三维矩形  
DrawEdge 绘制矩形边  
DrawFrameControl 绘制帧控件  
DrawState 显示图像并应用可视化效果来表示一个状态 
Chord 绘制椭圆弧(椭圆和一条线段相交围成的闭合图形)  
DrawFocusRect 绘制用于表示焦点的风格的矩形  
Ellipse 绘制椭圆  
Pie 绘制饼形图  
Polygon 绘制多边形,包含由线段连接的一个或多个点(顶点)  
PolyPolygon 创建使用当前多边形填充模式的两个或多个多边形,多边形可以相互分开或叠加  
Polyline 绘制多边形,包含连接指定点的一组线段  
Rectangle 使用当前笔绘制矩形,用当前画刷填充  
RoundRect 使用当前笔绘制圆角矩形,用当前画刷填充  
TextOut 用当前选取字体在指定位置写字符串  
ExtTextOut 用当前选取字体在矩形区域写字符串  
TabbedTextOut 在指定位置写字符串,制表符扩展为制表符停止位置数组中指定值  
DrawText 在指定矩形内绘制格式化文本  
GetTextExtent 使用当前字体在属性设备上下文上计算文本行的宽度和高度,确定维数  
GetOutputTextExtent 使用当前字体在输出设备上下文上计算文本行的宽度和高度,确定维数  
GetTabbedTextExtent 使用当前字体在属性设备上下文上计算字符串的宽度和高度  
GetOutputTabbedTextExtent 使用当前字体在输出设备上下文上计算字符串的宽度和高度  
GrayString 在给定位置绘制暗(灰色)文本  
GetTextAlign 获取文本对齐标记  
SetTextAlign 设置文本对齐标记  
GetTextFace 以空终止字符串形式把当前字体字样名拷贝到缓冲区  
GetTextMetrics 从属性设备上下文为当前字体获取度量  
GetOutputTextMetrics 从输出设备上下文为当前字体获取度量  
SetTextJustification 把空格添加到字符串的中断字符  
GetTextCharacterExtra 对字符间空格数量获取当前设置  
SetTextCharacterExtra 设置字符间空格数量  
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值