OnDraw这个函数都什么时候会发生呢?为什么呢?

xiepoor 2003-03-10 11:17:17
OnDraw这个函数都什么时候会发生呢?为什么呢?
void CEx14aView::OnDraw(CDC* pDC)
...全文
57 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jian 2003-03-11
  • 打赏
  • 举报
回复
调用InValidate之后,就要调用他了
jack_wq 2003-03-11
  • 打赏
  • 举报
回复
yifeng_ch(yifeng)已经说得很清楚了,在窗口更新的时候就会出发OnDraw()函数响应,但是如果你需要在另立子窗口作曲线图就需要响应WM_PAINT消息了!
yifeng_ch 2003-03-11
  • 打赏
  • 举报
回复
因为当你的窗口改变后,会产生无效区域,这个无效的区域需要重画。一般Windows回发送两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化)。非客户区的重画系统自己搞定了,而客户区的重画需要我们自己来完成。这就需要OnDraw()或OnPaint()来重画窗口。

OnDraw()和OnPaint()有什么区别呢?

我们先要明确CView类派生自CWnd类。而OnPaint()是CWnd的类成员,同时负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,并且没有响应消息的功能。这就是为什么你用VC成的程序代码时,在视图类只有OnDraw没有OnPaint的原因。

当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows 将 WM_PAINT 消息发送给它。该视图的 OnPaint 处理函数通过创建 CPaintDC 类的DC对象来响应该消息并调用视图的 OnDraw 成员函数。通常我们不必编写重写的 OnPaint 处理成员函数。
xlxjfle 2003-03-11
  • 打赏
  • 举报
回复
此函数用于重绘整个视图区域,每当窗口需要重绘时,都会自动调用。
yjawal8071 2003-03-11
  • 打赏
  • 举报
回复
我也是初学VC,按我的理解就是他相当于OnPaint,
xiepoor 2003-03-11
  • 打赏
  • 举报
回复
求助?

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧