<html>
<head>
<script type="text/javascript">
function disp_alert()
{var obj=document.getElementById("ColorButton");
alert(obj.GetColor());}
</script>
</head>
<body>
<OBJECT id="ColorButton" WIDTH=507 HEIGHT=440 
CLASSID="CLSID:19A0033D-75D3-4083-8C75-CB46A9122711" 
codebase="chentao.cab#version=1,0,0,1">
</OBJECT>
<input type="button" onclick="disp_alert()" value="确定" /></body>
</html>
上面是我的html代码,调用出现的错误是:对象不支持此方法或属性,我的activex是自己用vc写的,自定义了属性color,该属性可以在网页中得到它的值
而GetColor()是这样的:
OLE_COLOR CColorButtonCtrl::GetColor() 
{
returnPOST http://forum.csdn.net/PointForum/Forum/PostTopic��义color是自动生成的CColorButtonCtrl类成员变量,请问各位高手该怎么在js中调用这个方法啊,我连activex的基本重绘函数Invalidate()都调用不了,为什么啊???请指教

解决方案 »

  1.   

    OLE_COLOR应该不被脚本支持,更何况还作为alert参数.如果需要给脚本使用,需要注意参数及返回值的语言兼容性.
      

  2.   

    可是我为什么连Invalidate()都不能调用呢?请指教谢谢
      

  3.   

    var obj=document.getElementById("ColorButton"); 这有成功了吗?obj有值吗?
      

  4.   

    有啊,alert(document.getElementById("ColorButton").color)都成功了,color是我自定义的一个属性,m_color是对应的类成员变量 
      

  5.   

    你有小的demo么,要不发个到我邮箱让我看看,好么?[email protected]
      

  6.   

    楼主调用的可能不是控件的接口函数,而是你在控件内部声明的一个函数吧?你到VC类视图下去看一下控件的_DColorButton下面有你那个GetColor()函数么? 如果没有 需要在ClassWizard的Animation选项卡上去给控件添加一个这样的接口函数,你用JavaScript才能调用。
    如果你的这个函数定义在了CColorButtonCtrl类当中,那么这个函数就是一个内部函数,对JavaScript来说这个函数是看不到的。要记住,你开发的控件跟一个类是不一样的。控件只是把接口部分提供给用户,其他的部分都是内部实现的部分,外界不能调用。楼主可以建立一个Dialog工程,然后将你的控件添加到Dialog中,在工程中会增加一个这个控件的类,你到这个类里面去看看
    肯定不会有你的那个GetColor函数,原因就是这个方法是个内部方法,不是一个接口(对外的方法)。给控件添加接口主要是三个:属性/方法/事件用VC写的时候属性和方法要ClassWizard的Animation选项卡添加,事件要在Event选项卡添加。另外,你JavaScript调用方法的代码没有错误。
      

  7.   


    嗯,应该�%APOST http://forum.csdn.net/PointForum/Forum/ReplyTopi95试,确定对了,马上给分,谢谢了啊
      

  8.   

    Tinary3v0  说的很有道理,正在测试,有空再请教你
      

  9.   

    有空去看看孙鑫的教程第18课 那里面说的很详细 毕竟是有图像有声音的 你能了解的更多 我其实就是看了那个视频才会的ActiveX开发的。
      

  10.   

    alert(obj.color);
    既然是属性,就不要直接调用内部的GetColor函数,使用obj.color会自动调用实现中的GetColor()的
      

  11.   

    http://msdn.microsoft.com/en-us/library/1dz0z0az(VS.80).aspx