• 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 > Html页面文件中调用OCX控件中带有BSTR参数的函数出错的问题(OCX控件由MFCActiveXControlWizard创建)

Html页面文件中调用OCX控件中带有BSTR参数的函数出错的问题(OCX控件由MFCActiveXControlWizard创建)

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

佚名通过本文主要向大家介绍了 Html页面文件中调用OCX控件中带有BSTR参数的函数出错的问题(OCX控件由MFCActiveXControlWizard创建)等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: Html页面文件中调用OCX控件中带有BSTR参数的函数出错的问题(OCX控件由MFC ActiveX ControlWizard创建)
描述:

相关代码如下:
OCX控件对应的.odl文件
/******************
OCXTest_CalcPi.odl
控件有4个函数CalcPi,TestFunc,TestFunc2,AboutBox
,一个put属性Digits
*******************/
#include <olectl.h>
#include <idispids.h>
[ uuid(5424A731-F67B-446E-B584-3D0BAB54FEF3), version(1.0),
  helpfile("OCXTest_CalcPi.hlp"),
  helpstring("OCXTest_CalcPi ActiveX Control module"),
  control ]
library OCXTEST_CALCPILib
{
importlib(STDOLE_TLB);
importlib(STDTYPE_TLB);
//  Primary dispatch interface for COCXTest_CalcPiCtrl
[ uuid(2481EC56-2EBA-44A8-B7A2-1A7E27245B52),
  helpstring("Dispatch interface for OCXTest_CalcPi Control"), hidden ]
dispinterface _DOCXTest_CalcPi
{
properties:
// NOTE - ClassWizard will maintain property information here.
//    Use extreme caution when editing this section.
//{{AFX_ODL_PROP(COCXTest_CalcPiCtrl)
[id(1), bindable] long Digits;
[id(0)] long _Digits;
//}}AFX_ODL_PROP
methods:
// NOTE - ClassWizard will maintain method information here.
//    Use extreme caution when editing this section.
//{{AFX_ODL_METHOD(COCXTest_CalcPiCtrl)
[id(2)] boolean CalcPi(BSTR* pbstrPi);
[id(3)] BSTR TestFunc();
[id(4)] BSTR TestFunc2(BSTR Text);
//}}AFX_ODL_METHOD
[id(DISPID_ABOUTBOX)] void AboutBox();
};
//  Event dispatch interface for COCXTest_CalcPiCtrl
[ uuid(AFDD0CC3-BAD8-4BF9-9BC3-D35655547BF0),
  helpstring("Event interface for OCXTest_CalcPi Control") ]
dispinterface _DOCXTest_CalcPiEvents
{
properties:
//  Event interface has no properties
methods:
// NOTE - ClassWizard will maintain event information here.
//    Use extreme caution when editing this section.
//{{AFX_ODL_EVENT(COCXTest_CalcPiCtrl)
//}}AFX_ODL_EVENT
};
//  Class information for COCXTest_CalcPiCtrl
[ uuid(FD931B4C-3FBC-40AE-AC1E-4150912C712F),
  helpstring("OCXTest_CalcPi Control"), control ]
coclass OCXTest_CalcPi
{
[default] dispinterface _DOCXTest_CalcPi;
[default, source] dispinterface _DOCXTest_CalcPiEvents;
};
//{{AFX_APPEND_ODL}}
//}}AFX_APPEND_ODL}}
};
/************************
COCXTest_CalcPiCtrl.cpp中
TestFunc()和TestFunc2()两个函数的实现代码
*************************/
BSTR COCXTest_CalcPiCtrl::TestFunc() 
{
CString strResult;
// TODO: Add your dispatch handler code here
strResult=OLESTR("asdfasdfasdf");
return strResult.AllocSysString();
}
BSTR COCXTest_CalcPiCtrl::TestFunc2(BSTR Text) 
{
CString strResult;
// TODO: Add your dispatch handler code here
strResult=OLESTR("qweqrqwerqwer");
return strResult.AllocSysString();
}
/*******************
测试此控件的html文件代码
*******************/
<HTML>
<HEAD>
<TITLE>test page for object OCXTest_CalcPi</TITLE>
</HEAD>
<BODY>
 <object classid="clsid:FD931B4C-3FBC-40AE-AC1E-4150912C712F"
         name=objocx
         height="0" width="0" >
 </object>
 
 <script language= "VBScript">
  dim RetTxt2
  dim pText AS String
  pText = "111"
  RetTxt2 = objocx.TestFunc2 pText
  document.write "Return Text by TestFunc2 is: " & RetTxt2   
  'following commented code can run correctly  
  'dim RetTxt
  'RetTxt = objocx.TestFunc 
  'document.write "Return Text by TestFunc is: " & RetTxt 
  
</script>
</BODY>
</HTML>
现象:
Html文件中调用OCXTest_CalcPi中的TestFunc函数,运行正常,
页面显示"Return Text by TestFunc is:asdfasdfasdf"字符串;
而调用带有BSTR参数的TestFunc2函数,页面却没有任何反映。


解决方案1:

RetTxt2 = objocx.TestFunc2 pText改成RetTxt2 = objocx.TestFunc2(pText)呢,vb要有返回值应该加括号的,vbscript应该也是这样吧

解决方案2:

把BSTR换成LPCTSTR 就可以了


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

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

相关文章

  • 2017-06-04 无法动态创建CWebBrowser2
  • 2017-06-04 关于COM的问题
  • 2017-06-05 关于钩子函数的问题之二
  • 2017-06-05 如何在串口程序中表示键盘的按下?各位大侠帮帮忙!!
  • 2017-06-05 又一个关于线程的问题,高手请进
  • 2017-06-04 Win2000中,Asp调用MTS-COM,方法A报错,方法A不报错。
  • 2017-06-04 一个郁闷好久的问题高分求解在线等
  • 2017-06-05 向已存在的IStorage添加IStream覆盖之前内容?结构化存储,复合文件
  • 2017-06-04 急!一个初级问题,面试用。
  • 2017-06-04 求一视频中画矩形程序

文章分类

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

最近更新的内容

    • 在ATL控件中设置鼠标Cursor的问题
    • 请问vc下面如何用DLL实现国际化,就是动态调用字符串资源来描述界面?
    • ATL中销毁子窗口,MFC中测试的时候出现ASSERT错误!进者有分!
    • 希望高手来谈谈,什么样的DLL可以用GetProcAddress调用。什么DLL是不能的
    • shellexcecute调用一个进程,内存会自动增加,而且无法释放
    • ocx控件问题!!!
    • 请教高人:关于ATL控件的注册和toolbar更新
    • deletCWinThread指针时出错
    • 怎样写注册表来注册COM组件???
    • 程序对cpu的使用如何降下来

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

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