其实在开发这个程序的过程中,对于我而言,最大的感触莫过于对于微软系统的理解。
之前一直很疑惑为什么微软要限制三个条件格式,现在我明白了,微软并不是偷懒,也不是故意不让用户用得舒服,而是条件格式这个东西,是个很占用资源的工具,我曾经完全模拟微软的实现方法,但是经常会导致内存溢出,尤其是在设计模式和运行模式之间多次切换之后。
比方说一个条件格式:表达式为:[Text1]+[Text2] = [Text3],看起来很简单,但是事实上Access需要对这一条条件格式,对三个控件进行全面的监视(数据绑定),其中任何一个发生变化(而不是应用此条件格式的控件发生变化),都将重新判断这个条件表达式。可以这么说,Access为每一个条件格式创建了1-2个常驻内存的数据绑定,而这对于资源的占用,效率的影响,程序的稳定性都是非常致命的。
在Multi-FormatCondition Extension中,我发现了微软的顾虑,而且也证实了这个顾虑的必要性,所以在1.0中,我并没有使用实时的Criteria求值,而是采用了异步方式,这样从功能角度而言,比Access的条件格式差了一点,但是基本够用,同时也避免了大量的系统资源占用。在没有完全解决这个问题之前,本程序将沿用此种方式,直到这个问题被解决,MFC才能完全实现Access条件格式的所有功能。
[此贴子已经被作者于2005-8-31 12:53:10编辑过]
|