关于在WINDOWS2000\XP中自定义打印纸张的问题我要求的是在程序中自定义,而不是在打印机设置中自定义,
另外,要求随时要改变纸张大小,不是一设置就不变了.同用来打印报表的,如这张报表内容多一点,我就先把纸张设长一点,再打印,如要打印的报表内容少一点,我就把纸张设短一点,再打印.上个月已问李洪根老大,在回复的MSDN上看了标准答案,上面写的好像必须先添加一种自定义纸张,再调动该纸张类型.有没有好的办法,不要添加纸张类型,临时打印临时设置.非常感谢各位前辈

解决方案 »

  1.   

    难度太大了吧!
    在VB中打印对象PRINTER的属性就那么多,好象没有你所说的这种功能啊!
      

  2.   

    问题比较有难度,呵呵,希望楼主解决下与大家分享我把自己的想法说说:不设置纸张类型应该是不行的,当然你可以设置好后再删除,达到这种效果1.打印机的纸型设置最终是保存在注册表里的
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Forms]2.建议程序里去调用打印机设置的API,把界面调用出来设置好纸型后
    3.从注册表中读取出所有纸型
    4.然后按这个纸型打印即可
      

  3.   

    应该是可以的啊在WIN98里直接PRINTER.WIDTH=xxxx  PRINTER.HEIGHT=xXxxxx就可以了在WINDOWS2000/XP中这样就不行了.另外WORD怎么可以随心所欲设置纸张大小进行打印而不需添加纸张类型
      

  4.   

    你是直接用Printer打印的啊?呵呵
    我想到别的地方去了2000可以的
    不过要明确把打印的纸张大小设置为"用户定义"printer.PaperSize = VbPRPSUser VbPRPSUser 256 用户定义
      

  5.   

    楼上的问题可以参考这里
    http://blog.csdn.net/babyt/category/39076.aspx
      

  6.   

    printer.width,printer.height,直接定义纸宽,纸高,单位缇
      

  7.   

    谢谢babyt,可以部分解决问题,能检测和AddNewForm最好了。
      

  8.   

    检测是可以做的,但是AddnewForm需要分析注册表文件
    有时间我会去做一下看看:)
      

  9.   

    在DELPHI里做過類似問題,VB也可以吧.給個界面輸入紙張大小,再設置printer的屬性.
      

  10.   

    楼主是不是想的太完美了?!
    在windows中的打印机设置是件简单的事,非要搞么这么复杂呀怕用户不会设置?那你就在方面写说明文档时写的清楚些呀。
      

  11.   

    太好了,就是要先设置printer.papersize=256