本人用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!

解决方案 »

  1.   

    希望大家都来讨论,虽然我有很多分,有一次我曾经一次给出1000分寻求解答,不过那个已经解决了。在这里我希望大家多多参与讨论,多提供些思路。希望能够尽快找到那个该死的handle,因为我相信Windows仍然使用了一系列handle来表示和种纸张,就象表示窗体的风格一样。有关documentproperties的问题在MSDN.microsoft.com上可以找到,用D~做关键字搜索就可以了,我就不再多说。
      

  2.   

    我说说我的想法:win2k系统下,在系统的打印机设置里面,好想没地方设置
    自定义纸张,难道是不支持自定义纸张,还是和打印机的驱动有关呢?我发了一个贴子,说了vb里面只要设自定义纸张(papersize=256)就出错,难道是这个原因吗?
      

  3.   

    Win2k的自定义纸张在MSdn里有相关介绍,我在这里不再多说,请到msdn查看相关资料,我提供一点线索就是Win2k里不仅可以设置自定义纸张,而且比win9x更方便的是,我们可以把需要的自定义纸张全部定义进去,而不用象win9x一样在需要时再去修改,因为它可以定义许多种自定义纸张
      

  4.   

    oswica 的方法不行,我刚刚试过
      

  5.   

    我以前用水晶报表作了几个表,那里不用vb去控制打印机,就是自定义纸张需要手工进行,我还没有能去用程序控制,虽然我很想那样做,否则打包的时候真不知要做多少事情.
    另外,有些打印机是不完全支持自定义尺寸的(有些尺寸是受限制的)
    呵呵,我也是菜鸟
    gz
      

  6.   

    我们先不讨论打印机本身支持或不支持,因为那些都是可以找到的现在的问题是应该怎么找出那个该死的handle,并用上它好象没人关心这个问题嘛
      

  7.   

    直接用 Windows API打开打印机不久可以得到 hHandle??
    另外利用API设置纸张大小好像没有作用
      

  8.   

    nnd,ms技术支持在这上面冒头,真遇着问题连他们都不理了
      

  9.   

    同样问题,关注....在2K中,用MS的方法使用了自定义纸张(A4一半),好象没有什么反映,打印完还是走A4一整张纸,不知是什么原因?
      

  10.   

    我也为这事烦了2、3天了,我已经把MS技术支持网站上的那个例子研究透了(http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q180/6/45.asp&NoWebContent=1),TNND,确实没有,增加和删除自定义纸张都可以,就是没发设为默认的,郁闷ing......
      

  11.   

    to zhou_chunlin() :Win2K可以手工设置自定义大小吗,我找了半天都没找到,请指点一下迷津,谢谢!