MFC窗口绘制浅析

本文详细探讨了Windows系统如何管理屏幕输出,确保多任务窗口的正常显示。重点讲解了MFC中窗口何时绘制、窗口绘制相关的系统消息WM_PAINT、WM_NCPAINT和WM_ERASEBKGND,以及OnPaint和OnDraw的区别。OnPaint是响应WM_PAINT消息的函数,而OnDraw用于实际的绘图操作,通常在OnPaint中调用。
摘要由CSDN通过智能技术生成

 Windows统一控制屏幕输出

    Windows作为一个多任务操作系统,在同一个界面上会存在多个任务窗口。因此为保证各个任务窗口能够正常工作,Windows系统负责管理所有的屏幕输出,保证图形内容能够显示在各自的窗口中而不相互干扰。所有应用程序都必须通过Windows系统才能将内容显示在屏幕上。

    何时绘制窗口

    窗口在很多时候能被绘制或重新绘制,如在窗口创建、大小变更、从其他窗口后面移出窗口、最大或最小化等的时候。在窗口内容因某项操作改变时,系统将向程序发出WM_PAINT消息,通知程序作出相应的绘制工作,绘制操作前需调用BeginPaint函数获取图形显示的Device Context,而在绘制工作结束后调用EndPaint释放该Device Context。当然图形绘制工作也能在其他事件消息(如键盘或鼠标事件)发生时进行,这事绘图前需要调用GetDC或GetDCEx函数来获取图形显示的Device Context。

    窗口绘制有关的系统消息

    WM_PAINT, WM_NCPAINT, WM_ERASEBKGND

    WM_PAINT

    在系统绘制窗口时向程序发出WM_PAINT消息。程序在接收到WM_PAINT消息后调用BeginPaint函数获取当前的Device Context进行绘图操作,绘图完毕后使用EndPaint释放Device Context。

    WM_NCPAINT

    当窗口客户区以外的部分(如窗口标题栏、菜单栏等)需要需要重画时,系统向程序发出该消息。因标准窗口的客户区以外部分为窗口必需部分,因而该消息将默认被发送到DefWindowProc函数进行默认处理。程序可通过截获该消息来实现窗口其他部分的自定义绘制。

    WM_ERASEBKGND

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值