• 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 > 从JS调用ActiveX方法,为什么老是报“参数不匹配”错误?

从JS调用ActiveX方法,为什么老是报“参数不匹配”错误?

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

佚名通过本文主要向大家介绍了从JS调用ActiveX方法,为什么老是报“参数不匹配”错误?等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 从JS调用ActiveX方法,为什么老是报“参数不匹配”错误?
描述:

我传int不行,传字符串也不行。是不是还要经过转化的?
几种类型的对应关系是怎样的?


解决方案1:

呵呵,我也回复了,你收收信吧。

解决方案2:

如果你是用vc 里面选择activex控件工程就得这样添加能够在外面的调用的工程!
因为我做过吃过些苦头!先给你些建议供参考!
1。你最好注意一下参数类型,int long string 之类可以做入参!字符串之类的要想传出来的话通过参数当然也可以带回,但是最好是用返回值返回!
下面是我用过的一个函数
BSTR CReaderCtrlCtrl::DES(long handle, LPCTSTR szRandam, LPCTSTR szData) 
{
CPSAMCard card;
  WORD    wReturn;
  CString  strmac;
  wReturn=card.DES((HANDLE)handle,(char *)szRandam,
  (char*)szData,strmac.GetBuffer(9));
  strmac.ReleaseBuffer();
         return strmac.AllocSysString();
}
2。最好是一次把函数添加好!如果通过上述方法添加函数之后直接在文件里面修改将出现问题!至少我现在还没有解决了!一般是删除了!重新添加函数

解决方案3:

运用MFC来实现ActiveX控件的方法
1.何谓ActiveX? 
简言之,Active X是一种允许程序(即ActiveX控件)在网络(如Internet)
上与其它程序交互通信的体系结构。这种体系结构均使用微软公司的组件
对象模型(COM)和分布式组件对象模型(DCOM)标准。其中,COM允许不
同的应用程序实现本地相互交谈,而DCOM提供在网络上的(应用程序间)
通信。
2.使用MFC创建ActiveX控件
VC++ 5.0提供了MFC ActiveX Control Wizard来生成ActiveX控件的框
架文件,并使用Class Wizard来定义控件的属性、方法和事件。同时,在
MFC类库中,还为开发ActiveX控件提供了强有力的COLeControl类。由
于COLeControl类是从CWnd类派生的,因此ActiveX控件具有Windows
窗口对象所具有的全部功能。下面将介绍如何使用VC++5.0来创建ActiveX
控件的过程。
(1) 创建ActiveX控件工程
A.创建工程存放目录"C:\MyVc";
B.启动VC++ 5.0;
C.选File\New,弹出如图1的对话框;
D.选Projects标签,在工程类型列表中选MFC ActiveX Control Wizard,
将Location框设为C:\ MyVc ,将Project Name框设为MyTest,然后选Next,
承认缺省设置,直到选Finish。VC++将显示New Project Information对话框,
点击OK;
E.选Build\Set Active Configuration,VC++将显示Set Active Configuration
对话框,选MyTest-Win32 Debug;点击OK。
以上即完成了名为MyTest的ActiveX控件工程的创建,其工程文件名
的后缀为OCX。
(2) 测试MyTest控件
A.选Build\Build MyTest.OCX,VC++5.0将自动的进行编译、连接
MyTest控件的文件,并创建MyTest.OCX文件。
B.选Tools\ActiveX Control Test Container,VC++5.0将执行Test 
Container程序,测试MyTest控件。
3.使用VC++5.0为ActiveX控件添加事件
ActiveX控件是通过事件来通知容器控件发生事情,如单击控件、用
键盘输入数据等。当这些动作发生时,控件点火(Firing)一个事件并通知容
器。MFC支持两种事件:库存事件(stock event)和定制事件(custom
event)。库存事件是由ColeControl自动处理的事件,而定制事件能识别某
一确定的动作,由用户自行定义。
对于每个控件点火一个事件,控件类必须映射每个控件事件为当事件
发生时要调用的成员函数。还可以用ClassWizard来访问和操纵控件事件的
映射。在控制类的头文件中,事件映射由以下宏定义:
DECLARE_EVENT_MAP( )
一旦声明了事件映射,就必须在实现文件中定义。
(1)添加库存事件
VC++ 5.0可以利用Windows提供的ActiveX控件库,来为用户程序添加
ActiveX控件的库存事件。下面以例程Calculator加以说明。
<1>创建一名为Calculator的MFC AppWizard(exe)工程,IDD_Calculator_
DIALOG对话框的属性表见表1;
对象 属性 属性值
Dialog Box ID IDD_Calculator_DIALOG
Caption MyCalculator 
Calcu Control ID ID_CAL1
Push Button ID IDC_TODAY_BUTTON
Caption To&day
Push Button ID IDC_EXIT_BUTTON
Caption &Exit
表1
<2>登记Calculator ActiveX控件;
A.在VC++5.0中,选Tools\ ActiveX Control Test Container,执行Test 
Container程序;
B.在Test Container程序的主窗口,选File/Register 
Controls,点击Register,确定C:
\WINDOWS\SYSTEM\MSCAL.OCX"路径,再点击Open。
C.弹出Controls Register对话框,从Control File列查对"C:\WINDOWS\ 
SYSTEM\ MSCAL OCX"是否已登记成功;
D.登记成功后,退出Test Container程序。
<3>在MFC Class Wizard中为Calculator引入变量,添加消息,见表2;
Class name Object ID Message
CCalculatorDlg CCalculatorDlg WM_INITDIALOG 
CCalculatorDlg IDC_TODAY_BUTTON BN_CLICKED 
CCalculatorDlg IDC_EXIT_BUTTON BN_CLICKED 
表2
<4>VC++5.0打开CalculatorDlg.cpp,为各变量编写代码。
A.初始化CCalculatorDlg
BOOL CCalculatorDlg::OnInitDialog()
{
Cdialog::OnInitDialog();
。。。
//TODO:Add extra initialization here
//加入我的代码
m_cal.Today( ) ; 
//结束我的代码
//return TRUE;
}
B. Today钮的代码
void CCalculatorDlg::OnTodayButton( )
{
//TODO: Add your control notification handler code here
//加入我的代码
m_cal.Today( ) ; 
//结束我的代码
}
C. Exit钮的代码
void CCalculatorDlg::onExitButton( )
{
//TODO: Add your control notification handler code here
//加入我的代码
OnOK( ): 
//结束我的代码
}
<5>程序运行
在VC++5.0中,选Build\Build Calculator.exe,建立可执行文件;再
选Build\Execute Calculator.exe, 运行程序。
(2)添加定制事件
<1>定制事件的映射宏为EVENT_CUSTOM,并可以使用ClassWizard
添加定制事件,这包括确定事件的外部名和内部名、给事件赋参数以及确
定何时点火事件等。下面以CKeyChoice事件为例加以说明。
向MyTest控件添加CKeyChoice定制事件:
A.选View\ClassWizard,在Active Events标签里将Class Name设
为CmyTestCtrl;
B.点击Add EventExternal,将name设为FireCKeyChoice,VC++5.0
会自动将Internal name设为FireCKeyChoice;
C.选OK,关闭ClassWizard对话框。
<2>测试结果:
A.选Build/Rebuild All,编译、连接Mytest控件的文件;
B.选Tools\ActiveX Control Test Container\Insert OLE Control,
选MyTest Control,点击OK。
C.选File\Exit,退出Test Container。
打开文件MyTestCtrl。Cpp,找到onKeyDown函数,加入触发
CKeyChoice事件的程序代码。 
void CMyTestCtrl::onKeyDown(UNIT nChar,UNIT nRepCnt,UNIT nFlags)
{
//TODO:Add your message handler code here and/or call default
//加入我的代码
char strnChar[10];
char strnRepCnt[10];
char strnFlags[10];
Cstring strKeyPress;
itoa(nChar,strnChar );
itoa(nRepCnt,strnRepCnt);
itoa(nFlags ,strnFlags);
strKeyPress=(Cstring)"You pressed the key:\n"+
"nChar="+ strnChar+"\n"+
"nRepCnt="+ strnRepCnt+"\n"+
"nFlags="+ strnFlags+"\n"+
strKeyPress。MakeUpper();
//以上完成从键盘输入数据
if(strKeyPress= ="PAINT")
system("pbrush。exe");
//若输入"PAINT"(与大小写无关),则Windows的调用"画板"
else&

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

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

  • 从JS调用ActiveX方法,为什么老是报“参数不匹配”错误?

相关文章

  • 2017-06-05 在Web中调用ActiveX函数导致页面卡死的问题
  • 2017-06-04 在ocx中用定时器??????????????
  • 2017-06-04 CDHtmlDialog,显示某些网页时,提示脚本错误找不到对象,程序崩溃。。。
  • 2017-06-05 线程间通信的问题
  • 2017-06-05 关于CALLBACK的问题
  • 2017-06-04 单文档程序整合到MFC共享规则dll
  • 2017-06-05 COleDispatch如何判断用户已经关闭应用程序
  • 2017-06-04 关于在interface中类引用的问题
  • 2017-06-04 wu2003my9471大头进来拿分!!!!
  • 2017-06-04 MFCexe工程中不能调用COM

文章分类

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

最近更新的内容

    • 怎样在ATL中使用画笔没分了
    • 超菜问题??????????????????
    • VC打开word文档,查找文件的问题
    • VC开发的带有dispatch的com服务器如何返回一个数组给vbscript,或者javascript
    • 蓝牙开发中,利用IObex的BindToDevice方法会堵塞该进程的其他线程?
    • 求教于ACTIVEX技术的高手
    • 请问大家:在VC60中实现图表(柱状图,走势图,饼状图)的显示功能和图表的导出保存功能有什么控件可以实现啊?
    • 用Telnet启动远程进程
    • office插件开发找两个头文件大家帮帮忙
    • 我的com组件中涉及到数据库的操作在asp不可用,而在vb下一直运行正常,其他不涉及数据库的操作在asp下均工作正常,

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

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