关于Win2k环境下打印机自定义纸张的问题大讨论,如何找到纸张的 Handle!!!!Handle!!!!
Corny 2002-12-06 03:30:27 本人用VB语言,在Win98下时,用Printer就能够正常使用打印机设置,没有任何问题。现在是环境到了Win2k下,我已经试过了许多方法,包括API的SetPrinter函数,通常情况下都是可以的,但一遇到自定义纸张就有了大麻烦。
首先,我们知道Win下一直是用一int值(VB为long)来表示 handle,无论是窗体还是其他任何设备或值,都是一个int,问题是我们该怎么找到自定义纸张(或是系统预定义纸张)的 Handle。
我从原来简单使用Printer对象设置已经改到了用SetPrinter(包括MS网站的一个例子DocumentProperties)函数进行机器打印机的选择,但怎样才能选择我们该用的纸张。MS网站上有一个用DocumentProperties对当前纸型属性进行更改的例子,但那不是我们所能够使用的,因为那样只能在设置打印纸后即时用API进行打印,它并不能真实地反应到系统打印机Printer对象上,也就是说,我认为它只是改变了虚拟打印设备的参数(尺寸),而没有对真实的打印机进行修改,也改变不了真实的打印参数。在API中有一个Enums可以返回系统中所有打印纸的列表,其中的Flags表示纸型定义的来源,有一个状态值表示用户自定义纸张,但这个状态值对我们来说没有任何价值,比如如果我们在Win2k下预定义了两种打印纸,那我们基本上无法区别这两种纸是分别是哪种,关键是我们如何知道用户选择了哪种纸,并能将它作为缺省纸张保留下来,而不是把他们选择的纸张改为我们需要的参数。为了方便用户,我甚至需要在用户下次使用这个功能时自动选择该纸张,那我们应该如何去找到这个纸张的 Handle!Handle!~Handle!