Bug 1 continue
原创
©著作权归作者所有:来自51CTO博客作者johnLuo的原创作品,请联系作者获取转载授权,否则将追究法律责任
昨天才发现,通过模拟鼠标滚轮来使Html页面滚动的方式,在有 备注 的情况下会出错的。因为 备注 是在htmlview的parent (childframe)上画出来的。页面滚动之后,备注 所标注的内容的位置发生了变化,如果不改变 备注 的位置就不对了。
没有办法,只能获取htmlview之内的滚动条的完整控制权,才能精确定位 标注 的位置。
去网上查找了一些资料,可以通过IHTMLWindow2的scrollTo函数来控制htmlview的滚动。
代码顺利写好,调试时出了问题。发现只要发生滚动事件,调用了IHTMLWindow2 的scrollTo接口,就会导致mshtml.dll内部发生内存访问问题。百思不解啊。
后来在view里面设置了一个timer,定时调用scrollTo来让页面自动滚动,发现这个方法可以。想来想去,有可能是Thread引起的问题。
由于我的手指移动事件是在另外一个线程里面捕捉到的,那么scrollTo的调用就是在另外一个线程内被触发。那么就说明 IHTMLWindow2的这些接口是线程不安全的?
之后我改变了一下调用方式,避免在线程内部直接触发scrollTo函数,结果一切都很顺利。
有个印象:COM初始化时候是有一个和线程安全有关的参数的,过两天等缓过来再去看看。
昨天查了很多IHTML****的接口说明,看到MS有些关于Markup的接口,是不是可以通过这些接口来做标注呢?而不用现在这样在它的parent frame上来画?

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java-bug记录【1】
今天来跟大家谈一下一个,我在做一个新闻项目的时候,遇到的一个很有意思的小Bug报错的信息如下:原因分析:解决方法:
Java bug 项目 报错 异常 -
python的continue语句 python,continue
Python基础编程 ● 判断语句和循环语句 ● continue的用法
python的continue语句 Python 读取文件 python