CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

如何在98下实现修改windows系统自定义纸张大小?

楼主lj_lt(总在否定昨天的我)2002-12-14 14:44:05 在 VB / 基础类 提问

有例子吗?  
   
  问题点数:100、回复次数:5Top

1 楼JennyVenus()回复于 2002-12-14 15:28:20 得分 100

获取打印机纸张信息  
   
  Option   Explicit  
  Private   Const   DC_MAXEXTENT   =   5  
  Private   Const   DC_MINEXTENT   =   4  
  Private   Const   DC_PAPERNAMES   =   16  
  Private   Const   DC_PAPERS   =   2  
  Private   Const   DC_PAPERSIZE   =   3  
  Private   Declare   Function   DeviceCapabilities   Lib   "winspool.drv"   Alias   "DeviceCapabilitiesA"   (ByVal   lpDeviceName   As   String,   ByVal   lpPort   As   String,   ByVal   iIndex   As   Long,   lpOutput   As   Any,   lpDevMode   As   Any)   As   Long  
  Private   Type   POINTS  
                  x     As   Long  
                  y     As   Long  
  End   Type  
   
  '***********************************************************  
  '*   名称:GetPaperInfo  
  '*   功能:得到打印机低张信息  
  '*   用法:GetPaperInfo(控件名)  
  '*   描述:如在   form_load()中调用GetPaperInfo   MSHFlexGrid1  
  '***********************************************************  
  Public   Function   GetPaperInfo(Flex   As   MSHFlexGrid)   As   Boolean  
   
          Dim   i   As   Long,   ret   As   Long  
          Dim   Length   As   Integer,   Width   As   Integer  
          Dim   PaperNo()   As   Integer,   PaperName()   As   String,   PaperSize()   As   POINTS  
           
          With   Flex  
                  .FormatString   =   "^纸张编号|^纸张名称|^纸张长度|^纸张宽度"  
                  For   i   =   0   To   .Cols   -   1  
                          .ColWidth(i)   =   1700  
                  Next   i  
                  .AllowUserResizing   =   flexResizeColumns  
                  .Left   =   0  
          End   With  
                   
          '支持最大打印纸:  
          ret   =   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_MAXEXTENT,   ByVal   0&,   ByVal   0&)  
          Length   =   ret   \   65536  
          Width   =   ret   -   Length   *   65536  
           
          '支持最小打印纸:  
          ret   =   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_MINEXTENT,   ByVal   0&,   ByVal   0&)  
          Length   =   ret   \   65536  
          Width   =   ret   -   Length   *   65536  
           
          '支持纸张种类数  
          ret   =   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_PAPERS,   ByVal   0&,   ByVal   0&)  
           
          '纸张编号  
          ReDim   PaperNo(1   To   ret)   As   Integer  
          Call   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_PAPERS,   PaperNo(1),   ByVal   0&)  
           
          '纸张名称  
          Dim   arrPageName()   As   Byte  
          Dim   allNames   As   String  
          Dim   lStart   As   Long,   lEnd   As   Long  
          ReDim   PaperName(1   To   ret)   As   String  
          ReDim   arrPageName(1   To   ret   *   64)   As   Byte  
          Call   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_PAPERNAMES,   arrPageName(1),   ByVal   0&)  
          allNames   =   StrConv(arrPageName,   vbUnicode)  
          'loop   through   the   string   and   search   for   the   names   of   the   papers  
          i   =   1  
          Do  
                  lEnd   =   InStr(lStart   +   1,   allNames,   Chr$(0),   vbBinaryCompare)  
                  If   (lEnd   >   0)   And   (lEnd   -   lStart   -   1   >   0)   Then  
                          PaperName(i)   =   Mid$(allNames,   lStart   +   1,   lEnd   -   lStart   -   1)  
                          i   =   i   +   1  
                  End   If  
                  lStart   =   lEnd  
          Loop   Until   lEnd   =   0  
           
          '纸张尺寸  
           
          ReDim   PaperSize(1   To   ret)   As   POINTS  
          Call   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_PAPERSIZE,   PaperSize(1),   ByVal   0&)  
           
          '显示在表格中  
          For   i   =   1   To   ret  
                  Flex.AddItem   PaperNo(i)   &   vbTab   &   PaperName(i)   &   vbTab   &   PaperSize(i).y   &   vbTab   &   PaperSize(i).x  
          Next   i  
           
  End   FunctionTop

2 楼zyp2kyear(E腾鸟)回复于 2002-12-14 16:35:28 得分 0

printer.pagesize=256  
  printer.width=宽度  
  printer.heigth=高度  
  printer.newpage  
  Top

3 楼oswica(章鱼)回复于 2002-12-14 16:42:27 得分 0

printerTop

4 楼lj_lt(总在否定昨天的我)回复于 2002-12-14 17:48:03 得分 0

xiexie,   I   tryTop

5 楼lj_lt(总在否定昨天的我)回复于 2002-12-22 15:59:10 得分 0

 
  非常谢谢   jennyvenus(JennyVenus)   ,你这段代码对我非常有用!  
   
  我是想如何在98下实现修改windows系统自定义纸张大小?  
   
  好象要修改注册表函数  
   
  但修改注册表函数(API)我不知道  
   
  谁告诉我?  
  Top

相关问题

  • windows 2000 下如何自定义纸张?
  • 自定义纸张大小
  • 100分求直接修改注册表,可以增加一种自定义的纸张?
  • PB 自定义纸张设置
  • 自定义打印机纸张问题
  • 自定义纸张及横向打印
  • 如何在WIN2000中自定义纸张
  • win98下pb7.0如何自定义纸张?
  • Win2000自定义纸张打印走纸???
  • activereport自定义纸张的问题

关键词

  • 修改
  • dc
  • getpaperinfo
  • 纸张
  • private const dc
  • byval
  • dim
  • integer
  • long

得分解答快速导航

  • 帖主:lj_lt
  • JennyVenus

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo