MFC的OnPaint有什么用?

为什么不能为空呢?我定义了一个OnPaint()的消息响应函数,还有一个ON_BN_CLICKED的响应函数,OnPaint()里面没有代码,就无法处理ON_BN_CLI... 为什么不能为空呢?我定义了 一个OnPaint()的消息响应函数 ,还有一个ON_BN_CLICKED的响应函数,OnPaint()里面没有代码,就无法处理ON_BN_CLICKED??会卡住? 展开
 我来答
TLast_Ghost
推荐于2018-04-26 · TA获得超过1542个赞
知道小有建树答主
回答量:649
采纳率:20%
帮助的人:514万
展开全部
这是窗口的重绘回调,在窗口失效需要重绘时,就会调用该函数,该函数必须调用父类的OnPaint,他负责窗口绘图,包括给子窗口发送重绘消息,如果他里面没内容,那么就不能给子窗口发送重绘消息,子窗口不能重绘,那就像卡死一样。。。
重绘意思就是,把他自己重新画到窗口上,比如按钮被其他窗口遮挡,这个按钮的画面实际上是不存在的,窗口移开需要重新将按钮画上, 但父窗口不知道你要画啥,就让控件自己画,就会发送重绘消息,如果OnPaint里面调用父类OnPaint这一步删了,这个过程就无法进行。。。那么控件不能重绘,看上去就像卡死了,但应该不影响其他消息,只是看上去死了。。。
windows绘图原理,就像在黑板上画画,被别人遮住了,就相当于把人家用黑板擦擦了,如果想重新显示,必须重新画上去,通常别人不知道你要画上,都会让有图像的类自己画, 所以所有控件和窗口继承自CWnd的都会有OnPaint,自绘,你只要在里面写怎么画就行。。。按钮控件是最简单的控件,他其实只画了一个矩形,然后写了几个字。。。按钮自己知道怎么做,但你必须要给通知人家。。。即调用父类的OnPaint(CWnd都知道自己的子窗口都有谁,你不必关心),或者直接发送
WM_Paint 消息给按钮,也可以。。。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式