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