VS2010建立了MFC AxtiveX工程报错,JS调用Axtivex不成功
近期需要开发一个ActiveX控件,用VS2010建立了MFC AxtiveX工程(工程名 activeXtest.),建立后有许多错误,相继调整了一些配置:
1、属性 --> 配置属性 --> C/C++ --> 代码生成 --> 运行库 改为 “多线程DLL(MD)”;
2、属性 --> 配置属性 --> 常规 --> MFC的使用 改为 “在共享 DLL 中使用 MFC”。
调整2是因为如下报错:
错误 1 error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h 24 1 activeXtest
--------------------------------背景交代完毕----------------------------------------
问题1:
但是每次打开 activeXtest.h 文件后VS会崩溃。
VS停止运行报错:
问题签名:
问题事件名称: CLR20r3
问题签名 01: devenv.exe
问题签名 02: 10.0.30319.1
问题签名 03: 4ba1fab3
问题签名 04: Microsoft.VisualStudio.Text.Data
问题签名 05: 10.0.0.0
问题签名 06: 4ba1d707
问题签名 07: 1d6
问题签名 08: 52
问题签名 09: System.ArgumentOutOfRange
OS 版本: 6.1.7601.2.1.0.256.1
区域设置 ID: 2052
----------------------------割一下-------------------------------------
问题2:
然后通过向导添加了方法:Test01() 接口,返回字符串 “test01”,代码如下:
activeXtest.idl
activeXtestCtrl.cpp中代码
用regsvr32注册插件
然后用 ..\Program Files (x86)\Microsoft Visual Studio 10.0\Samples\2052\C++\MFC\ole\TstCon\Debug\TstCon.exe 测试Test01()接口返回值显示为: test01 (VT_BSTR),正确
可是在js中调用时报错,提示“对象不支持“Test01”属性或方法 ”,调用代码也贴出来吧。
<OBJECT ID="OCX" WIDTH=528 HEIGHT=545 classid="B795F2A0-E31F-461D-833A-1E88130E2939"
CODEBASE="H:\learn\C#Project\activeXtest\Debug\activeXtest.ocx">
var a = document.getElementById("OCX");
b = a.Test01();
主要纠结于问题2,然后想到了是不是因为问题1导致的问题2?
有看到过要用IDispatch接口,由于进入不了.h问题,不清楚 dispinterface 类型是不是他们所说得IDispatch类型。
小弟新手,还望大神详细指教
1、属性 --> 配置属性 --> C/C++ --> 代码生成 --> 运行库 改为 “多线程DLL(MD)”;
2、属性 --> 配置属性 --> 常规 --> MFC的使用 改为 “在共享 DLL 中使用 MFC”。
调整2是因为如下报错:
错误 1 error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h 24 1 activeXtest
--------------------------------背景交代完毕----------------------------------------
问题1:
但是每次打开 activeXtest.h 文件后VS会崩溃。
VS停止运行报错:
问题签名:
问题事件名称: CLR20r3
问题签名 01: devenv.exe
问题签名 02: 10.0.30319.1
问题签名 03: 4ba1fab3
问题签名 04: Microsoft.VisualStudio.Text.Data
问题签名 05: 10.0.0.0
问题签名 06: 4ba1d707
问题签名 07: 1d6
问题签名 08: 52
问题签名 09: System.ArgumentOutOfRange
OS 版本: 6.1.7601.2.1.0.256.1
区域设置 ID: 2052
----------------------------割一下-------------------------------------
问题2:
然后通过向导添加了方法:Test01() 接口,返回字符串 “test01”,代码如下:
activeXtest.idl
#include <olectl.h>
#include <idispids.h>
[ uuid(35AEE76F-5CD3-4404-9FAB-C561D6A7990D), version(1.0),
control ]
library activeXtestLib
{
importlib(STDOLE_TLB);
// CactiveXtestCtrl 的主调度接口
[
uuid(28E74985-74AD-4F11-91C2-72BE1ADB99A8)
]
dispinterface _DactiveXtest
{
properties:
methods:
[id(DISPID_ABOUTBOX)] void AboutBox();
[id(1)] BSTR Test01(void);
};
// CactiveXtestCtrl 的事件调度接口
[
uuid(A044456C-B9FE-4FD2-827D-2BFB6A88BF12)
]
dispinterface _DactiveXtestEvents
{
properties:
// 事件接口没有任何属性
methods:
[id(1)] BSTR Test02(void);
};
// CactiveXtestCtrl 的类信息
[
uuid(B795F2A0-E31F-461D-833A-1E88130E2939)
]
coclass activeXtest
{
[default] dispinterface _DactiveXtest;
[default, source] dispinterface _DactiveXtestEvents;
};
};
activeXtestCtrl.cpp中代码
BSTR CactiveXtestCtrl::Test01(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CString strResult;
// TODO: 在此添加调度处理程序代码
strResult = L"test01";
return strResult.AllocSysString();
}
用regsvr32注册插件
然后用 ..\Program Files (x86)\Microsoft Visual Studio 10.0\Samples\2052\C++\MFC\ole\TstCon\Debug\TstCon.exe 测试Test01()接口返回值显示为: test01 (VT_BSTR),正确
可是在js中调用时报错,提示“对象不支持“Test01”属性或方法 ”,调用代码也贴出来吧。
<OBJECT ID="OCX" WIDTH=528 HEIGHT=545 classid="B795F2A0-E31F-461D-833A-1E88130E2939"
CODEBASE="H:\learn\C#Project\activeXtest\Debug\activeXtest.ocx">
var a = document.getElementById("OCX");
b = a.Test01();
主要纠结于问题2,然后想到了是不是因为问题1导致的问题2?
有看到过要用IDispatch接口,由于进入不了.h问题,不清楚 dispinterface 类型是不是他们所说得IDispatch类型。
小弟新手,还望大神详细指教
...全文
相关推荐
vs2010+cef3的90.6.0版实现把cef3嵌入到mfc窗口js调用
CEF3是一个开源框架,它允许开发者在自己的应用程序中集成Web浏览器引擎,从而支持HTML5、CSS、JavaScript等Web技术。首先,我们需要安装VS2010并创建一个新的MFC项目。
安装VS2019、MFC,并创建MFC工程文件,查看工程信息
安装VS2019、MFC,并创建MFC工程文件,查看工程信息
vs2010开发activex(MFC)控件/ie插件(二)
vs2010开发activex(MFC)控件/ie插件(二):js传参数 js传参数给activex控件。 先看demo效果: 在上一篇成功生成activex的基础上,通过添加生成的acttivex类的,属性,来达到获取外部js传参数的目的。 选择BSTR,生成的数据类型是Cstring 1.添加属性
vs2010开发activex(MFC)控件/ie插件(一)
vs2010制作基于mfc的ie插件
VS2010开发MFC ActiveX+打包+WEB
"VS2010用于开发MFC ActiveX控件的教程,涵盖了创建、打包和在WEB中使用的全过程。"在本文中,我们将深入探讨如何使用Visual Studio 2010 (VS2010) 开发M


