挖井

类库大魔王的挖井日记

挖一口属于自己的井


打印设置bug几乎搞定

  把Charles Petzold的关于打印的那章代码拿来都试了一遍,发现PopPad工程里的过程就是我想要看的。对比了一下代码,沮丧地发现貌似两者只有获取到DC的方法不同,PopPad里是PrintDlg返回的,而bug里的代码是通过CreateDC创建的。但之后也发现了,这个代码很奇怪啊,不但有CreateDC,还有CreateIC,经过调试发现,大部分时候都是在调用CreateIC的,这让我纠结了好一会儿,想不明白为什么要调用CreateIC,MSDN上明明说的CreateIC返回的DC是不能用来画东西上去的,只能用来查询信息的。又经过几次调试,发现CreateDC是在打印前在调用了n次CreateIC后最终会被调用一次的,这时候才发现,传给CreateDC的DEVMODE*居然里面的dmCopies值一直是1,而我明明需要的是2啊!于是我就猜,是不是application层把明明是2个copies合并成1个了,然后相当于只打印1个copy,于是打印机的设置只对第1份copy起作用。因为这个猜想,又小小地郁闷了一把,该不会要去调试application层的X++代码吧。不过马上,在kernel层的call stack乱翻,翻到其中一个地方,硬是把所有dmCopies值都改成1了!把这行代码注释掉试了下,果然如愿可以把设置应用到第2份copy上了。我猜,当时这代码的作者大概是考虑到不是所有的打印机都支持multi copies的,所以干脆把这个字段都改成1了。然后就是写邮件啦啦啦啦啦!
  这事一了,人突然就松懈下来了。

本文地址:

https://minidump.info/blog/2012/01/e6-89-93-e5-8d-b0-e8-ae-be-e7-bd-aebug-e5-87-a0-e4-b9-8e-e6-90-9e-e5-ae-9a/

上一篇

继续bug fixing

  又回到以前那种每次写blog都是写工作内容的流水帐的状态了么,这是不是意味着离我辞职又不远了。  好吧,上午还是在继续折腾SQL Server版本兼容性的bug。主要的代码昨天就修改完了,今天要提交code review,就再仔细检查了一遍,然后发现,因为多加了一个.cs文件,于是在enl...…

Job 全文阅读
下一篇

木马机,电子书

  有个同事,平时看我在公司里用手机连公司的WIFI,很是眼热,一直问我怎么用。我就告诉他,要装个ProxyDroid,而且手机得root先。这样持续了将近1个月,今天他突然跑过来对我说,都怪你都怪你,现在我的手机刷得只剩下闹钟了。原来他的HTC G12昨天被他用什么一键root软件强行roo...…

Mobile Reading 全文阅读