对象不支持的属性或方法

max6270 2014-03-08 12:25:13
本人用vs2012写了一个OCX控件,并且写了一个.NET测试程序,用js调用时总是报对象不支持的属性或方法。也查阅了论坛相关的帖子,该做的都做了,但还是。。。发帖求助。。。

1.已按照【https://support.microsoft.com/kb/161873/zh-cn】增加了IE安全接口。
2.已签名,签名是公司买的,可以过IE认证。
3.在_DMFCActiveXControl1下右键增加方法。见下图。

4.WEB的相关代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<object id="objTest" classid="clsid:F978E975-6466-498C-A9ED-37B308A7B828"></object>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>ActiveX测试</title>
<script type = 'text/javascript'>
function FunTest() {
alert("test 1");
var iResult = objTest.ADD(1,2);
alert("test 2");
alert(iResult);
}
</script>
</head>
<body>
<div>
<button onclick="FunTest()"/>
</div>
</body>
</html>
5.管理员权限CMD执行 regsvr32 注册了控件。
6.方法的相关代码:

LONG CMFCActiveXControl1Ctrl::ADD(LONG Par1, LONG Par2)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

// TODO: 在此添加调度处理程序代码

return Par1 + Par2;
}
7.静态编译生成

等待大家的回复,万分感谢!
...全文
470 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
许文君 2014-03-11
  • 打赏
  • 举报
回复
先要求你的ocx支持IDispatch接口,其次看你的ocx是否能正确注册等
max6270 2014-03-11
  • 打赏
  • 举报
回复
最后问题找到了。。。。 函数声明 一定要放在 DECLARE_DISPATCH_MAP() 之前! // 调度映射 afx_msg LONG ADD(LONG Par1, LONG Par2); DECLARE_DISPATCH_MAP()
max6270 2014-03-11
  • 打赏
  • 举报
回复
引用 3 楼 xuddk727 的回复:
先要求你的ocx支持IDispatch接口,其次看你的ocx是否能正确注册等
已支持: // 调度和事件 ID public: enum { dispidADD = 1L }; protected: LONG ADD(LONG Par1, LONG Par2); REGSVR32 注册成功,在IE- 选项 -程序 - 管理加载项 中能够找到控件信息
幻夢之葉 2014-03-10
  • 打赏
  • 举报
回复
步骤和写法完全没有问题!是不是注册的控件,或者js调用的控件clsid是不是不对应!导出你的ocx类,看看是否有ADD方法!
max6270 2014-03-09
  • 打赏
  • 举报
回复
自己顶一下 。。 大侠们帮忙看一下啊
Date 对象属性constructor 返回对创建此对象的 Date 函数的引用。prototype 使您有能力向对象添加属性方法。Date 对象方法getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。getFullYear() 从 Date 对象以四位数字返回年份。getHours() 返回 Date 对象的小时 (0 ~ 23)。getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。getMonth() 从 Date 对象返回月份 (0 ~ 11)。getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。getTime() 返回 1970 年 1 月 1 日至今的毫秒数。getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。getYear() 已废弃。 请使用 getFullYear() 方法代替。parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。setFullYear() 设置 Date 对象中的年份(四位数字)。setHours() 设置 Date 对象中的小时 (0 ~ 23)。setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。setMonth() 设置 Date 对象中月份 (0 ~ 11)。setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。setTime() setTime() 方法以毫秒设置 Date 对象。setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。setUTCSeconds() setUTCSeconds() 方法用于根据世界时 (UTC) 设置指定时间的秒字段。setYear() 已废弃。请使用 setFullYear() 方法代替。toDateString() 把 Date 对象的日期部分转换为字符串。toGMTString() 已废弃。请使用 toUTCString() 方法代替。toISOString() 使用 ISO 标准返回字符串的日期格式。toJSON() 以 JSON 数据格式返回日期字符串。toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。toLocaleString() 据本地时间格式,把 Date 对象转换为字符串。toString() 把 Date 对象转换为字符串。toTimeString() 把 Date 对象的时间部分转换为字符串。toUTCString() 根据世界时,把 Date 对象转换为字符串。UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。valueOf() 返回 Date 对象的原始值。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧