第三步、在主类模块定义如下变量
Private cIMyPrn As IMyPrinter
Private cPic As MyPic
Private cPrn As MyPrn
在主类模块Class_Initialize事件中,添加:
Set cPrn As New MyPrn
Set cIMyPrn = cPrn
在主类模块中,将原来有关打印语句中的Printer替换为cIMyPrn。在实现预览的方法中,添加:
Set cPic = New MyPic
Set cIMyPrn = cMyPic
修改特殊类型的语句(如Line、Print,方法名和参数形式已经改变,将其改为符合cIMyPrn语法的语句)
预览结束后:
Set cIMyPrn = cPrn
Set cPic = Nothing
通过上面的方法,就可以用一个IMyPrinter变量,实现打印和预览的前期绑定当然,该方法未必是实现打印、预览的首选,还可以使用API方法,直接操纵设备场景来实现打印预览,但该方法的意义不在于此,其意义在于该方法拓展了VB中提供的多态技术的应用范围。
本文副标题中的所谓“高层次”不是作者层次高,而是编程方法和思路,不是面向底层、面向Win核心,而是在对象的高层、在编程语言和方法的较高层上实现多态。