在编写MFC程序的过程中,有两个常见的函数,OnCreat()与OnPaint(),有时候常常搞不清楚它们是怎么调用的,是在窗口创建之前还是窗口创建之后?它们都分别起到了什么作用?下面我们对其分别进行介绍。
1)OnPaint函数
主要功能: Windows发送WM_PAINT消息,程序响应并绘图;
发生原因: 诱使Windows发送WM_PAINT消息的原因可能有很多种,比如移动了一个窗口,由于窗口原先被遮盖的一部分显露出来了,或者是窗口的大小改变了。
工作机制: 当一个WM_PAINT抵达时,调用OnPaint处理函数,而OnPaint的绘制是从创建一个名为dc的CPaintDC的对象开始的;
打开方式:
开启OnPaint函数有下面三种选择:
1) 直接发送WM_PAINT消息,用PostMessage(),SendMessage()函数发送WM_PAINT消息。使用以上两函数发送WM_PAINT消息,能将WM_PAINT消息发送到WINDOWS程序消息队列中,当WINDOWS将WM_PAINT消息发送给具体的消息处理函数时,如果窗口的无效区域为空则WINDOWS将不理睬该消息。若存在无效区域,则调用窗口处理函数处理。要注意的这里需要存在无效区域,因此要调用2)中的函数使得窗体(或者部分)无效,其处理过程与2)相同,将WM_PAINT消息送入消息处理队列。与3)不同的是WM_PAINT并不立即处理;