摘要: 需求是:A是容器,B是我要做的控件;首先,A创建B的实例,然后调用B的某个方法M,M执行时会启动多线程去做一些事情,这个事情会消耗很长时间的;在M做事的过程中,A要知道M做这件事情的进度。经过多日的摸索,我把相关的解决思路分享下:第一种,使用事件触发的方法。道理很简单,M做事过程,每隔一段时间(比如500ms)去产生一个事件,容器A负责接收该事件,A接到该事件,做相关的动作呈现在UI上。如果使用ATL做的话,有连接点的东东可以用,这样做我也试过,搞了两三天,发现js中很难做到对该事件的响应。假如事件是OnCumstomEvent,有srcipt for="kongjian_id" event 阅读全文
posted @ 2011-01-27 01:31 alex618 阅读(788) 评论(0) 推荐(0) 编辑
摘要: 原本JavaScript可以接受ActiveX的事件。不过貌似要知道什么时候产生消息,而且Script要在调用了ActiveX之后马上产生事件,不然就接收不到消息。若采用多线程就完全没有办法实现交互了。我做的那个东西,是一定要采用多线程的。是调用了ActiveX之后一段时间之后产生才可以事件,如果不采用多线程会导致浏览器假死。没有办法,只好采用ActiveX回调JavaScript代码来实现与多线程之间的交互。问题又出来了,如果我采用把浏览器中的对象用指针的方式传给新的线程,就会导致接下来产生的对象产生NULL,很郁闷用了很多方法都不行,貌似只要传COM对象都会导致接下来的对象产生空对象。最后 阅读全文
posted @ 2011-01-27 01:30 alex618 阅读(2389) 评论(0) 推荐(1) 编辑
摘要: 开发环境:VC6.0。背景知识:COM/ActiveX/JavaScript/MFC/Thread想必用过Ajax的童鞋们都知道xmlhttp这个东西吧,通过设定onreadystatechange属性,我们就可以指定他状态改变的回调函数,当状态改变时,ActiveX控件就会调用我们通过onreadystatechange属性制定的回调函数。从而就出现了Ajax给我们带来的精彩。关于Ajax的技术我们这里不做讨论,我们的目的就是实现像xmlhttp这样具有异步回调JavaScript功能的ocx控件来。Let’s go!1. 建立MFC ActiveX Control(方法略)2. 在Clas 阅读全文
posted @ 2011-01-27 01:27 alex618 阅读(1254) 评论(0) 推荐(0) 编辑
摘要: 本篇文档将介绍怎样在ActiveX控件中调用网页中的JavaScript函数。在网上搜索许久,终于找到了一个简单易用的方法,这里先要给出来源代码的网址http://www.codeproject.com/com/JSCalls.asp。这是一个例子,可以调用网页中的JavaScript函数,但还不是我们想要的,它需要通过网页的源代码来初始化,而我们用.NET开发MFC的ActiveX控件时无法得到运行时网页的源代码,所以要通过其它方法来初始化。在狂GOOGLE和MSDN后,找到了怎样在MFC中得到IHTMLDocument2对象(具体是什么对象我也不是很清楚,但这个对象中存放了客户端网页里的很 阅读全文
posted @ 2011-01-27 01:24 alex618 阅读(1940) 评论(0) 推荐(0) 编辑
摘要: 前言 在HTML的页面中放置一个COM对象,这个对象该如何调用页面中的脚本函数的问题。 1——给接口添加一个方法:方法名:SetClientSite参数:IOleClientSite* pClientSite 2——给上面的方法加以实现(在相应的类中实现,已经自动生成了框架):STDMETHODIMP CIrDav::SetClientSite(IOleClientSite * pClientSite){// TODO: 在此添加实现代码HRESULT hr = S_OK;IServiceProvider *isp, *isp2 = NULL;if (!pClientSite){COMREL 阅读全文
posted @ 2011-01-27 01:22 alex618 阅读(1896) 评论(0) 推荐(0) 编辑
摘要: 在EOS6的项目中,如果采用VC++开发的ActiveX,那么第一次运行的时候,IE中就会提示,“在此页上的ActiveX控件和本页上的其他部分的交互可能不安全,你想允许这种交互吗?”在网上找了很多资料,原理介绍的多,但是真正如何做,介绍的比较少,因此这里把实际的步骤一步一步的记录下来了,供大家参考。1.1去除ActiveX访问时的安全提示当ActiveX第一次被访问时,会出现如下提示框:这是IE浏览器的安全机制造成的,我们可以采用下面的步骤来去除这个提示信息:1.1.1在CDemoCtl的头文件.h中增加对objsave的引用#includeobjsafe.h1.1.2在其protect 阅读全文
posted @ 2011-01-27 01:19 alex618 阅读(6304) 评论(0) 推荐(2) 编辑
摘要: 由于一些特殊的业务场景,用EOS开发的应用需要采用VC++开发的ActiveX控件,下面介绍如何采用在ActiveX控件中,用过JavaScript脚本实现和EOS应用的交互。 1.1 如何从ActiveX中访问HTML中的JS方法1.1.1 在JS中设计一个方法function testFunc(a,b){ alert("调用JavaScript中方法(连接字符串):"+( a+b));}1.1.2 为CDemoDialog增加新的方法void CDemoDialog::CalJSFunction(const CString &funcName,DISPPARAMS &dispparams 阅读全文
posted @ 2011-01-27 01:14 alex618 阅读(1156) 评论(0) 推荐(0) 编辑
摘要: 由于一些特殊的业务场景,用EOS开发的应用需要采用VC++开发的ActiveX控件,下面介绍如何采用JavaScript脚本实现和ActiveX控件的交互 1.1 JavaScript脚本如何访问VC控件中的方法1.1.1 在ActiveX控件的接口上单击右键,选择增加新的方法:1.1.2 在新弹出的页面中输入如下信息:1.1.3 为Add方法提供实现:long CDemoCtrl::Add(long a, long b) { // TODO: Add your dispatch handler code here return a+b;}1.1.4 在HTML中增加JS方法function 阅读全文
posted @ 2011-01-27 01:11 alex618 阅读(520) 评论(0) 推荐(0) 编辑
摘要: [代码] 阅读全文
posted @ 2010-11-08 09:30 alex618 阅读(424) 评论(0) 推荐(0) 编辑