自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 资源 (5)
  • 收藏
  • 关注

原创 近来论坛流行要源码

 最近几天看论坛,发现很多人都是开门见山要源码,而且是整套整套的要,我实在想不明白。 1、网上有很多源码,他们找过吗?如果找过,是什么原因不用?看不懂?无法全部满足需求?还有一种我很不想说的原因——懒!很懒!首先自己懒得写源码,不懂又懒得学,好不容易找到源码又懒得看,需求不满足又懒得改,于是上坛子寻找,希望有人帮他搞定一切。你拿工资是干什么的?别人帮你搞定了,你是不是应该把工资都奉

2009-04-27 11:20:00 4255 6

原创 我是如何用 V8 脚本引擎替换JScript的 —— (四)准备3

 掌握V8的架构和使用过程V8内部架构相当复杂,但是使用还是很方便的,因为V8把所有功能实现封装到内部的命名空间中,只给使用者提供了相当简洁的外部封装类,这些类都在一个叫做v8的命名空间中,全局函数封装在V8命名空间中(注意大小写有别)。V8引擎使用上的便捷性体现在多个方面:l  大量采用模板类,统一了所有脚本对象的内存管理和垃圾回收。l  所有脚本对象不允许直接在堆或栈上构造,这

2009-04-23 11:31:00 5062 3

原创 我是如何用 V8 脚本引擎替换JScript的 —— (三)准备2

 满足Jscript的现有功能特性在脚本语法上,Jscript跟标准JavaScript的语法基本相同,没有特别需要关注的地方。在标准特性上,Jscript除了ECMA标准特性之外,扩充了许多非ECMA标准的特性,必须仔细找出V8尚未实现的部分。下面列出了一部分:VBArray对象条件编译语句Enumerator对象Error对象===和!==操作符Active

2009-04-22 15:18:00 3802 1

原创 我是如何用 V8 脚本引擎替换JScript的 —— (二)准备1

 移植前的准备: 准备工作最起码要做三件事情:1、完全理解微软的脚本引擎规范;2、完全满足Jscript的现有功能特性;3、完全掌握V8的架构和使用过程。 理解微软的脚本引擎规范众所周知,微软产品的每个角落都充斥着COM,脚本引擎也不例外。一个合格的脚本引擎必须首先是一个COM组件,并实现下表中列出的标准接口:IActiveScript – 这个接口是必须的,所

2009-04-22 15:02:00 4041

原创 我是如何用 V8 脚本引擎替换JScript的 —— (一)前言

 前言: 看标题很容易给人误解,V8引擎本来就是跨平台的,为何还要移植?这个标题真的很不好取名,我的本意是想表达:微软有自己的脚本引擎规范,也有自己的JavaScript引擎,我尝试的事情就是用 V8 替换掉微软自己的 Jscript。这下应该说明白了,但用这个解释来做标题的话实在太长了。由此引来一个新问题:为什么要替换?原因很简单:尝试。我想尝试什么?由于V8开源,我不能把这个东

2009-04-22 14:55:00 4128 2

原创 参加2009英雄会有感

     以往参加过很多产品推介会,却从未参加过任何类型的技术大会,这次收到邀请的时候,心里犹豫了一下,去还是不去?由于没有经验,对这种大会的直觉就是开着无聊的会,听着无聊的演讲,一群打着瞌睡的人,混一顿自助餐,拿点小礼品后走人。在这种会议上,我的作用就是填空,占领会场一个凳子,加一点人气,仅此而已。也只是犹豫了那么一下下,还是接受了邀请,心想可以见到那些久违的人,北京的老朋友很多,可以见

2009-04-21 12:25:00 2910 7

用于 drupal 网站的 blogapi_ex 模块,取代系统自带的 BLOGAPI 模块和第三方的 WLW_BLOGAPI 模块

WLW_BLOGAPI是网上最流行的BLOGAPI模块,用于取代DRUPAL自带的BLOGAPI,使用这个模块,可以方便地使用桌面工具(比如 Windows Live Writer)离线编写博客文章。但在我的使用过程中,我发现了一些BUG和不足,于是尝试以它为基础重新制作一个模块 blogapi_ex,并尽可能修改掉已发现的错误,也添加了自己想要的功能。

2010-08-17

DuiBrowser

REDirectUI 是雨寒工作室推出的 DirectUI 渲染引擎,作为一个尚在完善期的作品,第一次推出并不容易。为了让大家能更直观地了解 REDirectUI 的特性,雨寒工作室特地制作了 DuiBrowser 工具,这个工具是一个 DirectUI 观察器(本来应该取名叫浏览器,但是很容易被误解为WEB浏览器),可以直接输入XML代码,或者拖放XML文件到管理窗口,然后在演示窗口查看渲染效果。随时修改随时看,所以它也是一个很好的代码测试工具。

2009-12-17

线程委托库C++源码(内置多线程浏览器实现)

一个线程委托库的实现源码,最大的优点是实现多线程不再困难,线程同步和管理不再头疼,同时内置了浏览器线程的实现。 线程委托的概念主要是在任意线程中委托其他线程执行代码,例如调用一个API函数,或者调用一个对象的成员函数。 源码使用了C++模板库,内部采用ATL实现。使用时只需关注压缩文件中的Raptor.h文件,这是封装好的类,易于使用。

2009-09-23

ATL实现的CDHtmlDialog模板类v1.03

相对1.02做了两处小改动:<br>1、当对话框打开关闭后再打开,在DEBUG版本下会断言失败,原因在于对话框窗口销毁时没有销毁WebBrowser控件窗口。<br>2、删除了对atlsafe.h的包含引用,这个文件在VC6的ATL3.0版本中是不存在的。<br>3、下载此资源不再需要资源分。

2008-01-18

ATL实现的CDHtmlDialog模板类

ATL发展到现在,从未提供像MFC中的CDHtmlDialog一样的HTML页面布局且方便开发者使用的窗口基类,虽然也有DHtml Control可供使用,但并不能像MFC那样通过宏映射来方便地让开发者与页面元素之间进行任意的双向交互,尤其是需要响应页面元素事件的时候,ATL/WTL爱好者必须自己编写相应的代码来完成这些工作。基于这个原因,通过理解分析MFC中CDHtmlDialog类的功能和实现行为,这里完全使用ATL一样的实现机制来模仿MFC中实现的功能编写了一个头文件,使ATL爱好者在无需MFC庞大的支持库的情形下实现跟CDHtmlDialog一样的功能,并且扩展了其能力。下载的压缩包中只有一个头文件 atldhtmldlg.h,头文件的开始部分是一段开发者使用示例的注释,以方便开发者容易地上手。这个文件提供了若干个类和模板类,开发者只需关注其中两个模板类:CDHtmlDialogImpl和CMultiPageDHtmlDialogImpl,第一个模板类实现了WEB页面布局的对话框,第二个模板类以第一个类为基础,扩展成了在一个对话框中支持多个页面。使用方式非常简单,从上述两个模板类之一继承实现一个对话框类,然后添加相应的映射宏,实现宏映射中的方法即可构造一个完美、表现能力强、控制方便的对话框窗口,例子代码像下面这样:class CMainDlg : public CDHtmlDialogImpl{ ...... // 实现页面元素事件的处理 // 请注意响应函数原型定义:HRESULT Foo(IHTMLElement*) BEGIN_DHTML_EVENT_MAP(CMainDlg) DHTML_EVENT_ONCLICK(_T("elementid1"), OnClick) DHTML_EVENT_ONMOUSEMOVE(_T("elementid2"), OnMouseMove) DHTML_EVENT_ELEMENT(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER, _T("elementid"), OnMouseOver) // id为elementid的元素事件响应 DHTML_EVENT_CLASS(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER, _T("myclass"), OnMouseOver) // class为myclass的元素事件响应 DHTML_EVENT_TAG(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER, _T("div"), OnMouseOver) // 所有DIV元素的onmouseover事件响应 DHTML_EVENT_AXCONTROL(controlMethodDISPID, _T("objectid"), OnControlMethod) // ActiveX控件事件响应 END_DHTML_EVENT_MAP() // 实现外部DISPATCH方法,能在这里添加任意的方法供页面中的脚本调用 // 调用方式如下:window.external.about(123, "abc") // 请注意响应函数的原型定义:void Foo(VARIANT*,VARIANT*,VARIANT*) // 目前仅仅定义了三个参数,一般也足够使用了。如果脚本实际调用中只提供了2个参数,则第三个指针参数是NULL。以此类推 BEGIN_EXTERNAL_METHOD_MAP(CMainDlg) EXTERNAL_METHOD(_T("about"), OnAbout) END_EXTERNAL_METHOD_MAP() void OnAbout(VARIANT* para1, VARIANT* para2, VARIANT* para3) { // your code is here. } HRESULT OnClick(IHTMLElement *pElement) { // your code is here. return S_OK; } HRESULT OnMouseMove(IHTMLElement *pElement) { // your code is here. return S_OK; } ......}除了上面的例子,还有CMultiPageDHtmlDialogImpl中的一些映射宏,以及还有一些虚函数可供重载。对话框设计好后,调用方法也很简单,例子如下: CMainDlg dlg; dlg.m_nHtmlResID = IDR_YOUR_HTML_RESOURCE_ID; // open your resource or dlg.m_szHtmlResID = _T("C:\\yourname.html"); // open your resource or dlg.m_strCurrentUrl = _T("www.microsoft.com"); // open local html file or external URL dlg.Create(NULL); // or dlg.DoModal(NULL);好了,介绍就到这里,如果有更多疑问,请下载头文件查看源代码以及注释,本次下载的文件版本是 1.02。当前版本的一个缺憾是尚未支持DDX/DDV,原因是ATL并未提供DDX机制,下个版本将完全仿照WTL的方式实现该类的DDX/DDV。另外为了通用性以及减少依赖,代码中完全未使用CString或CAtlString,主要是MFC、ATL、WTL各自提供了自己的CString实现。版权特别声明:本软件源码完全属作者James(胡柏华)自创,作者拥有修改和变更代码特性的权利,任何团体或个人均可以自由下载并免费使用。如用于商业用途,请在所属商业软件的版权声明中加注本声明。使用者使用本源码的过程中产生的任何错误,作者并无义务提供技术支持,由此导致的任何损失,作者概不负责。2007-11-7

2007-11-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除