Csdn-Blog <script language="javascript" src="/count/count2.asp"></script>
弄了一整天,终于把打印自定义纸张大小搞定了(上)
点都不清楚,去看看ms的msdn,关于自定义打印纸张的问题解答 皮皮:
给我你的邮箱吧,我发给你 正在找这个:
能不能把这些源代码给我一个啊!
QQ:37893114 兔子:
注意劳逸结合~哈~身体是革命的本钱啊~~ 呵呵 王学威:
过去不等到于未来!没有失败,只有暂时停止成功!
上一篇:关于在C#中加入非托管的DLL的一些文章连接
|
下一篇:我的GOOGLE编程题答案(C#版)
functionStorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}
弄了一整天,终于把打印自定义纸张大小搞定了
长江支流说的办法保留太多了,结果不行,很多类都是他在程序集里自定义的,源码又没公开
不过还是要感谢他的提示
今天和小陈搞了一天,他在国外的论坛上看到了一篇文章得到了启示,最后我们在凌晨3点终于把自定义纸张的代码给写出来了,看来必须用API,微软的.NET对打印的支持太菜了
现公开我们工作室实现此功能的部分代码
usingSystem;
usingSystem.Text;
usingSystem.Runtime.InteropServices;
usingSystem.Security;
ponentModel;
usingSystem.Drawing.Printing;
namespaceMCCustomPrintForm {
///<summary>
///成都微创工作室(电子科技大学微创工作室)
///Tell028-82853098
zyspipi@ ,
you680@
///打印机纸张的真正自定义部分代码
///-1-2
///</summary>
publicclassMCCustomPrintForm {
//Makeastaticclass
privateMCCustomPrintForm()
{
}
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Auto)]
internalstructstructPrinterDefaults
{
[MarshalAs(UnmanagedType.LPTStr)]publicStringpDatatype;
publicIntPtrpDevMode;
[MarshalAs(UnmanagedType.I4)]publicintDesiredAccess;
};
[DllImport("winspool.Drv",EntryPoint="OpenPrinter",SetLastError=true,
CharSet=CharSet.Unicode,ExactSpelling=false,CallingConvention=CallingConvention.StdCall),
SuppressUnmanagedCodeSecurityAttribute()]
internalstaticexternboolOpenPrinter([MarshalAs(UnmanagedType.LPTStr)]
stringprinterName,
outIntPtrphPrinter,
refstructPrinterDefaultspd);
[DllImport("winspool.Drv",EntryPoint="ClosePrinter",SetLastError=true,
CharSet=CharSet.Unicode,ExactSpelling=false,
CallingConvention=CallingConvention.StdCall),SuppressUnmanagedCodeSecurityAttribute()]
internalstaticexternboolClosePrinter(IntPtrphPrinter);
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Auto)]
internalstructstructSize
{
publicInt32width;
publicInt32height;
}
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Auto)]
internalstructstructRect
{
publicInt32left;
publicInt32top;
publicInt32right;
publicInt32bottom;
}
[StructLayout(LayoutKind.Explicit,CharSet=CharSet.Unicode)]
internalstructFormInfo1
{
[FieldOffset(0),MarshalAs(UnmanagedType.I4)]publicuintFlags;
[FieldOffset(4),MarshalAs(UnmanagedType.LPWStr)]publicStringpName;
[FieldOffset(8)]publicstructSizeSize;
[FieldOffset(16)]publicstructRectImageableArea;
};
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi/*changedfromCharSet=CharSet.Auto*/)]
internalstructstructDevMode
{
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]publicString
dmDeviceName;
[MarshalAs(UnmanagedType.U2)]publicshortdmSpecVersion;
[MarshalAs(UnmanagedType.U2)]publicshortdmDriverVersion;
[MarshalAs(UnmanagedType.U2)]publicshortdmSize;
[MarshalAs(UnmanagedType.U2)]publicshortdmDriverExtra;
[MarshalAs(UnmanagedType.U4)]publicintdmFields;
[MarshalAs(UnmanagedType.I2)]publicshortdmOrientation;
[MarshalAs(UnmanagedType.I2)]publicshortdmPaperSize;
[MarshalAs(UnmanagedType.I2)]publicshortdmPaperLength;
[MarshalAs(UnmanagedType.I2)]publicshortdmPaperWidth;
[MarshalAs(UnmanagedType.I2)]publicshortdmScale;
[MarshalAs(UnmanagedType.I2)]publicshortdmCopies;
[MarshalAs(UnmanagedType.I2)]publicshortdmDefaultSource;
[MarshalAs(UnmanagedType.I2)]publicshortdmPrintQuality;
[MarshalAs(UnmanagedType.I2)]publicshortdmColor;
[MarshalAs(UnmanagedType.I2)]publicshortdmDuplex;
[MarshalAs(UnmanagedType.I2)]publicshortdmYResolution;
[MarshalAs(UnmanagedType.I2)]publicshortdmTTOption;
[MarshalAs(UnmanagedType.I2)]publicshortdmCollate;
[MarshalAs(UnmanagedType.ByValTStr,
弄了一整天,终于把打印自定义纸张大小搞定了(上) src="/count/iframe2.asp" frameborder="0" width="650" scrolling="no" height="160">
如果觉得《弄了一整天 终于把打印自定义纸张大小搞定了(上)--IT man》对你有帮助,请点赞、收藏,并留下你的观点哦!