• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > IDispatch和页面交互

IDispatch和页面交互

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了idispatch,idispatch error 3092,idispatch error 3149,idispatch error 3088,idispatch error 3127等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: IDispatch和页面交互
描述:

这个是一个关于external和页面交换的问题
dll程序
STDMETHODIMP CImpIDispatch::Invoke(
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID /*riid*/,
/* [in] */ LCID /*lcid*/,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS* pDispParams,
/* [out] */ VARIANT* pVarResult,
/* [out] */ EXCEPINFO* /*pExcepInfo*/,
/* [out] */ UINT* puArgErr)
{
   if(dispIdMember == DISPID_CB_IsOurCustomBrowser) 
   {
     if(pDispParams->rgvarg[0].vt & VT_VARIANT)
     {
       pDispParams->rgvarg[0].vt = VT_VARIANT;
       pDispParams->rgvarg[0].pvarVal->vt = VT_BSTR | VT_BYREF;
       *pDispParams->rgvarg[0].pvarVal->pbstrVal = SysAllocString(L"你好");
     }
   }
........
.......
}
页面
var str = "";
Window.External.Action(str);
alert(str);应该弹出 “你好”字符
但是不能显示  谁能指点,谢


解决方案1:

js中调用方法时参数没有byref关键字(VBS中是有的),如果要让js知道传递的参数是用作接收数据的([out]属性),你必须在实现IDispatch的同时也实现ITypeInfo,要么在代码中手工创建ITypeInfo,要么在注册表中注册你的接口,否则js会把所有参数解释成传入(in)参数,最多只有一个返回值。
另一种解决方案,使用PROPERTYGET调用,但是跟上面我在1楼讲的方法调用原理是一样的。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 实现了IDispatch接口的组件和ActiveX控件用起来有什么不同呢?我觉得一样可以用在Web页面上,为什么ActiveX控件还要多实现那么多各种各样
  • 实现了IDispatch接口的组建,用vbscript怎么调用?
  • IDispatch::Invoke如何通过dispid调用方法?
  • 关于idispatch和typelib
  • 问个弱弱的问题:得到一个ActiveX控件的IDispatch指针后,如何使用?有没有与CListCtrl相同的ActiveX控件?
  • MSFlexGrid有一个Picture属性,是一个IDispatch接口指针,请问如何操作?
  • 请教COM,IDispatch相关问题!
  • 制作弹出广告拦截器时碰到问题,关于OnNewWindow2IDispatchppDisp,BOOLCancel的
  • [关于IDispatch问题]:如何将tlb文件编译进dll中?高分求救
  • 请问一下:COM组件(TLB)中使用IDispatch和CoInitialize两种方法有何不同?谢谢啦

相关文章

  • 2017-06-05 高~高~高~手进来~~~~~~~~~~~~~LocalSystem权限问题~
  • 2017-06-05 mfc使用webbrowser控件遇到的问题请大侠帮忙
  • 2017-06-04 I'mback
  • 2017-06-05 帮忙看看这些错误都怎么回事
  • 2017-06-05 dll的动态调用问题
  • 2017-06-05 STL中map第二个元素是不是必须是定长的,是不是vector之类不定长的就不可以
  • 2017-06-04 关于控件中string类型报错问题
  • 2017-06-04 急聘软件工程师(北京)
  • 2017-06-04 VC做CAD二次开发,CAD需要掌握到什么情况
  • 2017-06-04 有谁对ActiveX控件接口熟悉,我有个接口问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 多個com口打開問題
    • 高分求助:利用ATL写一个类似RealPlayer或MediaPlayer的带有视频窗口和按钮的ActiveX控件,创建窗口和按钮要怎样创建了?
    • 再问个弱智的问题,高手别笑我。
    • 可视化ActiveX中,外部截获单击控件事件
    • 简单的std问题!我不会了,帮忙看看!
    • 求教:如何实现这样的自动化服务器的功能呢?
    • 多线程的问题
    • atl生成的dll编译后如何重新编译,除了重启就没有别的方法了?另外如何调试atl生成的exe?多谢!
    • 一个用ActiveExe写的程序,能否在IE中调用
    • 未能注册输出。请确保您有修改注册表的相应权限。

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有