从最初的OLE1.0到ActiveX,从COM到DCOM,微软在逐步完善组件对象模型,Internet和分布式的引入更使ActiveX技术日臻完善。ActiveX支持3种类型的服务器实现组件:进程内服务器,它以动态链接库(dynamic linked library,DLL)的形式存在,与应用程序在相同的进程空间内运行,所以性能开销很小;本地服务器,它与客户端运行在不同的进程空间,所以通常性能开销比进程内服务器高一个数量级;远程服务器,它运行在远程计算机上,它通过RPC机制实现应用程序与远程服务器通信。
打印过程基本是调用本机的打印机进行打印,所以不需要开发远程服务器;又考虑到性能因素,所以我们所开发的WebPrint组件为进程内组件,是一个后缀名为dll的动态链接库。该组件完成用户自定义打印格式页面的添加、更改,页眉、页脚的设置、打印机首选格式的设置等功能,主要应用程序接口方法有3个:
void setFooter(VARIANT sFooter);
void setHeader(VARIANT sHeader);
void setDefaultPape(long x, long y, long left, long top, long right, long bottom, VARIANT nam, long orient);
接口方法setFooter功能是设置web页面的页脚,参数sFooter是要设置的页脚字符串,接口方法setHeader的功能是设置web页面的页眉,参数sHeader是要设置的页眉字符串,上述两个接口方法的实现是通过更改注册表完成的,
其键名是:HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/PageSetup,项名分别是:footer和header。
接口方法
setDefaultPape
的功能是用户自定义大小页面的添加或更改(如果已经存在),参数
x,y
是页面的宽度和长度,
left,top,right,bottom
分别是页面的左、上、右、下四个边距,
nam
是页面名称,
orient
是页面的打印方向
,
实现上主要是调用
Windows API
函数,比如
OpenPrinter
、
GetPaperSize
、
AddForm
、
SetForm
、
SetPrinter
等函数。