我需要一个简单的例子,网页代码调用我的ActiveX,传给我一个参数,然后我的ActiveX函数处理完返回给网页几个参数,网页不需要展现我的ActiveX控件,只需要调用我的函数完成数据的读取。
    
    我在网上找了好久,由于我是初学者,资料一般都很复杂,我都看了好几天的资料了,好像是要一个MFCServer的ActiveX的工程就能完成,可是我建工程就建立不出来server的工程。
    
    各位高手,帮帮忙!谢谢!activexmfc服务器控件

解决方案 »

  1.   

    你怎么不看看孙鑫视频呢 activeX控件那一章节.看1~2遍 自己就能写个
      

  2.   

    http://www.vckbase.com/index.php/wv/1216.html
    不管是MFCServer还是其它的什么COM组件,都可以用ATL简单对象来创建, 所以不用担心这样写出来的东西网页调用不了编译之后可以使用regsvr32注册/卸载这个控件
    注册:regsvr32 "Release/XXX.ocx"
    卸载:regsvr32 /u "Release/XXX.ocx"如果你编译的后缀名是dll就改成dll, 默认都是dll的后缀名, 这个没有影响网页里面调用示例:
    <HTML> 
    <HEAD> 
    <TITLE>TMS</TITLE> 
    <object id=MyActiveX classid="CLSID:9E282FFE-F5D0-44F4-BB74-B99323342EB7"></object> 
    红色的字就是你工程里面这个控件的UID,在idl文件的末尾处在[]之间的就是这个uid, 或者你搜索class DECLSPEC_UUID 后面跟的串就是这个控件的uid
    用这个股uid在html页面里面就创建了控件的对象, 使用MyActiveX可以调用控件里面提供的方法。
    如:
    function Add(x, y)
    {
       MyActiveX.Add(x, y);
    }
      

  3.   

    补充一下。
    1、按照杨老师的方法创建一个ATL工程, 编译Realease版本
    2、开始--运行--cmd打开命令行,敲入regsvr32+空格+Realease目录下的控件名(XXX。DLL)
    3、网页代码里面使用这个控件:
    <HTML> 
    <HEAD> 
    <TITLE>TMS</TITLE> 
    <object id=MyActiveX classid="CLSID:9E282FFE-F5D0-44F4-BB74-B99323342EB7"></object> 
    <script language="javascript">
       function Add(X, Y)
       {
          MyActiveX.Add(X, Y);
       }
    </script> 
    </HEAD>
    <BODY> 
    <input type="button" value="add" id="btnAdd" onclick="Add();"></input> 
    </BODY> 
    </HTML>
      

  4.   

    非常感谢 wumn29 的讲解,谢谢!由于对于基于ATL和MFC之间区别不是很清楚,所以一直徘徊在MFC的ActiveX的区域中。
    弱弱的问一下,我的vs2008好像不能建立ATL的ActiveX控件。
    下面是我的工程建立过程:在最后这个选择中,无论我选不选COM那个复选框,得到的工程编译时都没有.ocx文件生成,好奇怪了。知道原因吗?
      

  5.   


    你这样建立工程是对的,建立之后有两个工程, 那个XXXServer的不用管, 只管XXX就行了,编译之后默认是生成一个dll, 可以在属性--链接器--输出文件 改扩展名为ocx选择工程的右键菜单---添加--类 ,然后弹出窗口, 如下图选择ATL简单对象即可