多线程activex控件回调javascript方法的问题
我写了一个控件,利用wininet模拟http client,由于效率问题,打算利用多线程来提高效率,由于是通过javascript来调用activex接口的所以要等线程完成回调js方法来讲http response返回给js,但Invoke方法执行了但从页面上看却没有执行js的方法,我后来试着把Invoke方法移到了重写的SetSite接口里,js方法就执行了,请问高手这是为什么,难道只能在覆写的com接口里才能调用javascript方法?
代码的大致框架如下:
STDMETHODIMP AXClass::SetSite(IUnknown *pUnkSite)
{
CComPtr <IServiceProvider> pSP;
HRESULT hr = pUnkSite-> QueryInterface(&pSP);
CComPtr <IWebBrowser2> pBro;
pSP-> QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (LPVOID*)&pBro);
pBro-> get_Document((IDispatch**)&m_spDoc);//m_spDoc是控件的成员变量
}
STDMETHODIMP AXClass::SendRequest(name,...)//name由js传入,是请求完毕后要调用的js方法
{
...
_beginthread(ThreadStart, ...); //这里新建一个线程,ThreadStart是线程入口函数
...
}
void ThreadStart(name, ...)
{
//发送请求并得到返回数据responseData
...
CComPtr <IDispatch> spDisp;
m_spDoc-> get_Script(&spDisp);
CComBSTR bstrMember(name);
DISPID dispid;
spDisp-> GetIDsOfNames(IID_NULL,&bstrMember,1,LOCA
相关问答:
如何实现当鼠标悬停控件上时,出现该控件的尾部显示对应的层,鼠标移动到该层上进行相应的操作,当鼠标移除时(不在控件上也不在层上)层隐藏,
HTML code:
<html>
<head>
<meta http-equiv= ......
我也来一个趣味javascript:
打开以下html文件,依次按下G,L,C三个键,就会有奇迹出现!!
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" ......
以下是一段JavsScript脚本,但运行时总会产生 “Microsoft JScript 运行时错误: 'null' 为空或不是对象”异常,大家帮看一下。
<form id="form1" runat="server">
< ......
有朋友可以帮下忙。想达到一个显示的效果。 得需要搜索什么资料。问题是这样的
有一个网页导航,鼠标点击以后页面不跳转,直接在页面里显示 导航的子菜单,然后鼠标放在子菜单的某个目录上,用AJAX弹出数据库的内容 ......