myblog: http://hi.baidu.com/weolar/blog/item...142169434.html
话说一直很仰慕ie的内部结构,但苦于微软把ie的代码一直藏着掖着,无缘一睹。
不过幸运的是微软其实泄漏过ie2和ie5.5的源码的。但估计这么多年过去了,很少有人关注
这么老的代码,而且很郁闷的是泄漏的源码有非常多的东西不完整。

于是我操起ida,找了台老机器提取出老版本ie,把能逆的逆了下,能抄的抄,终于把ie2和ie5.5编译出来了,期间花了整整三个月的功夫。
需要说明的是,我发的ie5.5代码不是我编译的,而且网上一个哥们,万连文编译的。但我编译的比他完整,基本是整个mshtml.dll。不过他整理的比我好多了,而且我那个还有不少bug,故放出他的代码。

而ie2完全是我编译的。

ie2是不带微软trident排版引擎的,css都不支持,和现在的ie差距极其巨大;而ie5.5是相对很完整的,研究这个玩意,你能看到现代版本的ie的整个架构,对ie编程极其有帮助。

不过ie2并不是说没用,至少我把这玩意移植到了我的界面库,并且成为了一个牛逼无比的richedit了,嘿嘿……

而且ie2的结构非常清晰,要扣出来非常爽。就一个函数,显示所有的gif、文本。再几个函数负责解析html。
扣出来做文本显示控件非常爽,哈哈。文本的选择等逻辑也很完整,而且很容易读懂,因为是纯C打造。
SGML_write 把html解析到_w3doc里后,调个TW_Draw就把所有内容包括图像都显示出来了

上图是王道:


ie5的下载地址:http://www.cppblog.com/wlwlxj/archive/2011/06/01/147904.html

上传的附件 ie2.part01.rar
ie2.part02.rar
ie2.part03.rar
ie2.part04.rar
ie2.part05.rar
ie2.part06.rar