视图绘画机理

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

视图绘画机理

在VC++的文档、视结构中,

CView的OnDraw函数用于实现绝大部分图形绘制的工作。

如果用户改变窗口尺寸,或者显示隐藏的区域,

OnDraw函数都将被调用来重画窗口。并且,

当程序文档中的数据发生改变时,

一般必须通过调用视图的Invalidate(或InvalidateRect)

成员函数来通知Windows所发生的改变,

对Invalidate的调用也会触发对OnDraw函数的调用。

正因为OnDraw函数被频繁调用,所以在其执行时,

每次都刷新填充一次视图客户区域,便会使屏幕不稳定

,产生闪烁现象。

其实在程序调用OnDraw函数之前,会触发一个Windows消息:

WM_ERASEBKGND,以擦除视图刷新区域。在缺省情况下,

Windows系统使用视图窗口注册时窗口类中的成员hbrBackground

所描述的画刷来擦除屏幕,这一般会将屏幕刷新成COLOR_WINDOW

所对应的颜色。因此,在OnDraw函数中设置背景颜色的执行

过程是这样的:先将屏幕刷新成COLOR_WINDOW所对应的颜色,

接着又在OnDraw函数中填充其他颜色,

这正是产生屏幕闪烁的根本原因。

OnCtlColor ( )函数,当对话框准备显示一个控件时,

调用此函数,它返回一个HBRUSH,用于绘制控件背景

(我写的一点有关学习VC 的总结,望志同道合者能指点迷津)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有