万星星@豌豆荚 欢迎加入我们
一个am,一个fm,大家不同频道......
微博:http://weibo.com/wanlianwen
摘要: 自第一篇发布后,收到了不少建设性的意见,这里尤其感谢网友weolar、路人甲,他们在给我重要提示的同时让我意识到自己的武断。上篇我曾经说过richedit是非常底层的实现,其实我起初也不这么认为,只是在Win2K泄漏代码中能找到几乎所有想要的内容同时却无法发现richedit半点踪迹故形成这种判定。事实正如网友weolar、路人甲提及,richedit属于应用层的实现,看过代码之后感受到一种亲切感,因为大多数概念在我移植ie代码的时候都曾见到过,只是当初并未深入图文编排细节,仅着眼于渲染引擎。再次感谢这两位网友,不是他们的帮助,我无法在短时间内完成一个初步的具备完美特征的IM RichEdit 阅读全文
posted @ 2012-06-14 23:10 法克给木 阅读(2006) 评论(2) 推荐(2) 编辑
摘要: 研究背景自职业生涯起到现在,我参与过三个im类产品,其中我主要负责的是界面库开发。众所周知,im软件中有一个非常重要的控件用于消息展示,实现方式无外乎基于richedit(目前这一类为主要方式,代表:QQ)、基于webbrowser(代表:GTalk),可能会有基于WebKit的,我没有刻意去搜集。很多时候对于相对简单的情况,比如在游戏中,完全可以自己绘制。我曾经模仿过GTalk的实现方式,由于当时自己经验欠缺以及与公司写页面的人沟通上的问题,效果不是那么满意,仅仅够用,后来自己离开也没再继续做这方面研究。机制上这种方式是可行的,native端事情不多。后来的工作中,主要是基于richedit 阅读全文
posted @ 2012-05-20 20:03 法克给木 阅读(4328) 评论(9) 推荐(3) 编辑
摘要: 新的代码已经上传,请在 https://x-framework.googlecode.com/svn/trunk 更新这一次的更新有些仓促,主要是有一些网友希望能早些看到chrome的tab页效果的具体实现,目前来讲还有一些没实现的地方,会导致一些bug,下载代码调试的时候,请忽视异常,勇敢的按下f5,不能正常退出请终止调试或者杀掉进程,任何崩溃不能退出的地方都有可能,仅故学习参考。一些截图:我认为chrome的架构在三个方面做的非常好:通知系统(线程模型/观察者模式)、preference系统和extension扩展系统,非常具有互联网客户端特征,大部分功能都可以重用。适合搭建互联网客户端平 阅读全文
posted @ 2011-09-14 23:48 法克给木 阅读(5558) 评论(9) 推荐(4) 编辑
摘要: 向Chrome浏览器进军,呵呵,夸张了。随着对chrome的基础库的熟悉以及平时的维护,总体上来讲view框架以下的部分基本上稳定。目前变动的主要是硬件加速部分,两个分支:direct2d和opengl,还有就是对touch的支持,最近又引入了aura的一套界面,应该是谷歌收买摩托之后的一些计划,但是具体是什么还不清楚。作为基础库学习的最后一个作业,我想实现一个window平台下的chrome界面,可能不是全部特性,但希望能做到尽量吻合。所有的实现会在三(.3)的时候完成,预计期望带上一个webbrowser能勉强浏览网页。其实在最初抽取这套东西的时候,几乎所有人都期望的是chrome的那个能 阅读全文
posted @ 2011-09-02 22:33 法克给木 阅读(3649) 评论(4) 推荐(2) 编辑
摘要: svn: https://x-framework.googlecode.com/svn/trunk 建议重新下载代码很久没有在svn上更新这套库里,但自己有时间的时候都在开发增加功能。这次的更新主要是在对activex的支持,一个界面库若想成为框架,必须具备这种包容性,至少flash /webbrowser等主流的控件还是会经常用到的。这一次主要是实现了无窗口的flash、mediaplay和sl插件,实现了mshtml和webbrowser的容纳,参考有vc的sdk和国外对无窗口activex的研究,目前操纵接口仅仅供run,没有深度的wrapper。还有一件事情就是纠正了之前的错误思想,. 阅读全文
posted @ 2011-08-24 19:53 法克给木 阅读(6013) 评论(6) 推荐(6) 编辑
摘要: 无窗口richedit的机制基本实现,剩下的是接口调用封装和事件的设计。一周的时间添加了无窗口richview,机制上没有采取任何hack方式,完全靠实现ITextHost接口以及作用ITextService接口:1、支持输入法编辑2、支持滚动(暂时没有滚动条,待添加!)3、支持拖拽主要参考的示例为微软的例子windowlessre,由于chrome的view自身封装的限制导致实现的时候有许多框架(封装)引入的障碍,为了尽可能少的改动引擎自身,我只做了很少的平台依赖调整,很多时间都消耗在框架机制上。至于一些颜色、字体、文本操作、ole图片的接口、事件和mvc的抽象在接下来会实现,应该没有太大难 阅读全文
posted @ 2011-06-04 13:49 法克给木 阅读(2052) 评论(8) 推荐(1) 编辑
摘要: 这份代码在我的硬盘里面静静呆了一年,最起初的研究是想学习改造利用,到了后来发现代码结构并不是很优雅,自己的掌控能力有限,且是商业泄漏代码,所以放弃了继续改造,但是整个移植的过程让我直到今日都受益匪浅。这份代码可以运行跑起来,但不是ie(当时是5.x)的全部。后来有一些人出去好奇想看,我没有给出。微软的代码设计模式用的并不淋漓尽致,但是总可以直击要害。我看到身边的人为了设计模式而用设计模式的时候,写了很多代码控制力并不是很强或者并不是真正的解耦合,我想有必要把这个东西拿出去,希望他们能思考或者反思一些问题。当然,希望你只是出于学习目的,毕竟是泄露的商业代码,我也无暇也不敢去做具体分析,希望不会引 阅读全文
posted @ 2011-06-02 00:00 法克给木 阅读(2334) 评论(5) 推荐(3) 编辑
摘要: 近期开发计划:1.无窗口的richedit支持,包括ole图片以及段落支持,这些是IM类必需的组件(已经开始) --预计6月初完成2.浏览器类组件支持,预计包括webbrowser和webkit,后者近来的需求越来越大,尽管有挑战也要试一试,到时候参考qt --预计6月底完成3.flash窗口的支持,这个可能有些地方会用到,比较容易 --预计7月初完成希望大家有好的这方面源码参考或者建议的能给我留言.问题:1.Chrome中的光标设置依赖于mousemove消息,快速移动鼠标的时候会导致光标状态闪烁,尝试修复为wm_setcursor2.Chrome中的NativeTextfieldView输 阅读全文
posted @ 2011-05-27 16:18 法克给木 阅读(2732) 评论(9) 推荐(0) 编辑
摘要: 这里用三,主要是考虑公布开源地址,意味着一个新的开始。 源码开源地址:http://code.google.com/p/x-framework/ 代码更新至 Chrome的r80414版本(大致一月前),最近一直在学习Browser部分加之自己工作上的一些事情,有点慢。稍微稳定点会加快速度,Browser部分已经看的差不多,一有时间就会动手。有些关注的人给我email问我,这里做一个解释,原本想做的更好再公布开源地址的。 阅读全文
posted @ 2011-05-17 15:08 法克给木 阅读(1163) 评论(3) 推荐(2) 编辑
摘要: 软件工程中软件设计的中的一个环境就是部署问题,现在的软件在解决用户问题的同时还得解决自己的更新升级,这往往是一件非常繁琐的事情。目前客户端软件升级常用的手法就是搭配一个Updater.exe进行新版本的检测以及更新维护,每个软件的Updater程序大同小异,就发布文件而言也没有保密性可言,然而每做一个程序缺都要重复这样的工作。思路反过来就是能不能有一个通用的solution去解决客户端程序的发布和部署问题?就我看来,这一过程就好比从svn里面导出数据,之后进行更新一样,多的只是注册表项的一些操作(包括COM)和本地文件的操作,这样问题就归结于一个定制的svn客户端,基于这个客户端下发的软件,可 阅读全文
posted @ 2011-05-04 21:04 法克给木 阅读(2067) 评论(9) 推荐(0) 编辑