IE 里面的activeX控件的打印预览问题

来源:互联网 发布:windows平板不好用 编辑:程序博客网 时间:2024/04/28 07:15
昨天接到一个bug,我们的软件有一个浏览器activeX插件,在html页面里面显示附件列表,支持直接拖放文件,这个控件在浏览的时候挺正常,但是如果使用IE的网页打印预览功能,那个控件就有一块是空白。
刚拿到这个问题确实让我挺挠头,完全不知道从哪下手。不过通过分析代码,发现是这个控件里面的一个list control没画出来,跟了一下activex控件的ondraw方法,发觉里面没有对list control的处理。这样原因就基本清楚了。
   在普通的浏览方式下,控件里面的list control是有自己的窗口的,需要绘制的时候会收到WM_PAINT消息,它自己就把自己画了,不用控件做什么。但是在打印预览的时候,触发onDraw的并不是WM_PAINT消息,而是IE会调用IViewObj接口里面的Draw方法,activeX控件在实现这个方法里面会调到onDraw,在IE给定的DC上绘制自己,而list control并不会收WM_PAINT消息,也没有啥draw方法会被调用,拿不到DC,所以也就没有画到打印预览的界面上了。
  这个问题挺难解决的,需要自己在activeX控件的ondraw里面画list control,代价太大了。这个bug影响不大,我不准备修了。
原创粉丝点击