读书人

[散分]当爹了,该怎么解决

发布时间: 2012-05-28 17:59:33 作者: rapoo

[散分]当爹了
为IT事业奋斗到奔4才当爹,今天很高兴,散个分大家同乐。为保证此帖的技术性,分享最近折腾出的一个有关打印自定义纸张的东东。

在WinForms中使用自定义纸张

一直以来,使用自定义纸张打印都是个很头疼的问题,很多次在考虑项目方案的时候,这个问题会成为选择B/S还是C/S的一个重要因素(其实是我自己懒得动手)。但在这次的项目里,我痛下决心,一定要完美地解决自定义纸张打印的问题,于是Google了许多相关资料,终于让我搞定。
说实在话,其实只要了解自定义纸张在Windows里的机制就很容易上手。在基于NT架构的Windows操作系统中,打印服务器(Print Spooling)管理着所有打印机的设置,如果要添加一个自定义纸张,那必须在打印服务器里设置。如果是手工操作,可以在控制面板的打印机文件夹中找到打印服务器的设置,然后在设置的对话框里添加自定义的纸张即可。而这一切如果要以编程的方式来实现,就要通过winspool.drv的相关函数。相关函数并不是很多,但数据结构比较复杂,因为使用的是C#,所以在使用这些函数之前还要将原生类型映射到C#的类型中。
还好,已经有人为我完成了大部分功能。twostepted在Code Project里发表的一篇文章Adding custom paper sizes to named printers,已经为我完成了大多数功能,剩下就需要自己来动手了。在他的程序中,通过API调用实现了自定义纸张的添加、删除和设置默认的功能,但这些功能都混在了一起,于是我把他的代码做了一定的修改,以满足我的要求。先来看看功能测试的界面。

我想功能不用我多说,你一看就能明白。为了使这篇文章有一点点技术成份,下面把几个相关的API函数提一下:
OpenPrinter 所有的操作都需要先连接打印机,不错,就是用它了。如果执行成功,返回一个与打印名称打印机相应的句柄。
AddForm 这里的Form不是窗体,而是表单,或者可以翻译成形态,也就是纸张的设置。很明显,它的功能就是添加一种纸张。
DeleteForm 删除纸张设置,当然,只能删除自定义的纸张。
ClosePrinter 用完以后当然得关掉啦。
因为时间关系,不做深入的说明了,有兴趣的人可以下载源代码来体验。
注意:如果启用了UAC,要用管理员身份启动VS。

[解决办法]
恭喜LZ当爹。以后自称“老子”可以名正言顺了。
[解决办法]

探讨

恭喜LZ当爹。以后自称“老子”可以名正言顺了。

[解决办法]
恭喜LZ当爹。
[解决办法]
恭喜LZ当爹。以后自称“老子”可以名正言顺了。


[解决办法]
支持技术分享。恭喜啊
[解决办法]
恭喜LZ当爹,祝贺祝贺,虽然你的帖子没咋看懂,但是看着高兴。
[解决办法]
恭喜lz,贺喜lz
[解决办法]
恭喜LZ当爹。以后自称“老子”可以名正言顺了。
[解决办法]
恭喜楼主,贺喜楼主
当爹了也不忘记分享技术,是个好父亲
[解决办法]
恭喜楼主
[解决办法]
恭喜恭喜
[解决办法]
当了爹,很多生活就变了啊,自我改变啊
[解决办法]
恭喜LZ当爹。以后自称“老子”可以名正言顺了
[解决办法]
恭喜恭喜,去年我也这么高兴哈哈
[解决办法]
恭喜,恭喜
[解决办法]
おめでとうございます(恭喜)
[解决办法]
恭喜LZ当爹。
[解决办法]
恭喜LZ当爹
[解决办法]
过来了恭喜楼主啊
[解决办法]
恭喜恭喜~哈哈
[解决办法]
恭喜LZ

[解决办法]
恭喜楼主当爹了啊
[解决办法]
恭喜。。祝:幸福。。

[解决办法]
恭喜孩他爹。
------解决方案--------------------


恭喜LZ当爹。以后自称“老子”可以名正言顺了
[解决办法]
恭喜LZ当爹。以后自称“老子”可以名正言顺了。


[解决办法]
恭喜恭喜。

以后回家要话时间陪孩子玩了。
[解决办法]
祝福 Bless
[解决办法]
呵呵 恭喜啊
[解决办法]
恭喜恭喜。
[解决办法]
恭喜!!!
[解决办法]
先恭喜下 不过提醒LZ为人父是很辛苦的
[解决办法]
恭喜楼主

[解决办法]
恭喜楼主 贺喜楼主
[解决办法]
大程序员,小程序员
[解决办法]
恭喜,恭喜
[解决办法]
恭喜楼主!!!
[解决办法]
恭喜!!!

[解决办法]
奔四了。 哎。 程序果不好混啊。

恭喜了。
[解决办法]
恭喜LZ当爹
[解决办法]
恭喜楼主当爹
[解决办法]
叔!该挣奶粉钱了
[解决办法]
恭喜恭喜
[解决办法]

探讨

恭喜LZ当爹。以后自称“老子”可以名正言顺了。

[解决办法]
恭喜LZ当爹。
[解决办法]
同喜同喜
[解决办法]
恭喜楼主当爹了。
[解决办法]
恭喜恭喜
[解决办法]
恭喜楼主,贺喜楼主
[解决办法]
恭喜楼主喔
PS:自古一楼出人才啊!
[解决办法]

[解决办法]
恭喜恭喜
[解决办法]
恭喜,恭喜
[解决办法]
恭喜LZ当爹。以后自称“老子”可以名正言顺了。
[解决办法]
恭喜 恭喜恭喜啊 太不错了
[解决办法]
恭喜。用一个比较大的纸张把边距搞的大一些。也可以达到一定的效果。
[解决办法]
探讨

恭喜LZ当爹。以后自称“老子”可以名正言顺了。

[解决办法]
楼主又可以为祖国GDP增长做贡献了。
------解决方案--------------------


恭喜LZ当爹的同时,提醒LZ该为奶粉钱继续在IT事业线上奋斗了!
[解决办法]
有的忙了,恭喜。
[解决办法]
恭喜啊!
[解决办法]
恭喜楼主了!
[解决办法]
恭喜楼主
[解决办法]
恭喜楼主啊!
[解决办法]

[解决办法]
恭喜恭喜
[解决办法]
恭喜,接分。
[解决办法]
恭喜
[解决办法]
恭喜楼主,贺喜楼主

[解决办法]
恭喜恭喜!
[解决办法]
真好...
[解决办法]
恭喜 祝福
[解决办法]
恭喜,真心祝福小宝宝一切顺利
[解决办法]
恭喜 恭喜
[解决办法]
当爹不忘分享技术,真是不坑爹啊
[解决办法]
恭喜LZ当爹。以后自称“老子”可以名正言顺了
[解决办法]
恭喜恭喜
[解决办法]
恭喜楼主了
[解决办法]
恭喜,贺喜楼主啊,我要当哥哥了,哈哈
[解决办法]
恭喜当爹
[解决办法]
恭喜恭喜楼主
[解决办法]
表示路过 !顺便恭喜楼主
[解决办法]
恭喜恭喜 顺便接分
[解决办法]
恭喜了,呵呵
[解决办法]
恭喜!
[解决办法]
我带表党中央恭喜你,取媳妇不容易。。当爹更不容易。。。
[解决办法]
这么多层楼了 楼主要每人散两分 也太累了 呵呵 恭喜啊
[解决办法]
恭喜楼主!
[解决办法]
确实好事,恭喜~

读书人网 >.NET

热点推荐