有界面的ActiveX 控件,网页调用

时间:2021-03-28 21:01:43

     最近实验室的一位低年级的同学问我ActiveX 控件的问题,说要编写一个有界面的ActiveX 控件,放在网页中,这样做的目的是利用Internet Web的便捷,替代一般的客户端.

    在查资料时,发现问类似问题的人很多,但回答的一般都不够详细,于是我把我最近弄出来的一点小经验共享下,望对后来人有所帮助.

    利用MFC向导建立ActiveX控件后,会生成几个类,其中COleControl (CYouProjectNameCtrl) 的父类是CWnd ,我们就可以在其上建立我们需要的子窗口了. 

    首先建立一个对话框资源,选 IDD_FORMVIEW,为其建立关联类,基于CDailog,命名为CActXInterface.

            选择对话框的属性:

                 英文版VC:style - child,border - dialog frame, visible, control, static edge

                 中文版VC:"样式"设置为"下层","更多样式"中选"可见","控件".

    第二步:在CYouProjectNameCtrl头文件中添加CActXInterface Dialog 变量:(记得加入头文件)

                 CActXInterface ActXInterface;

    第三步:为CYouProjectNameCtrl添加消息WM_CREAT ,对应函数OnCreat();在其中创建对话框

                ActXInterface.Create(IDD_FORMVIEW,this);//IDD_FORMVIEW为资源ID

    第四步:在CYouProjectNameCtrl的OnDraw()消息中显示你的对话框.

                ActXInterface.MoveWindow(rcBounds,TRUE);

编译,OK.用VC自带容器工具测试.Tool-->ActiveX Control Test...

 

    第五步:注册控件,VC在编译时已自动将控件注册了.要是控件被移动了,要记得重新注册.

    第六步:编写HTML文件:加入如下段.

            <OBJECT id=DOcxtest1 classid=clsid:706B8249-D5F8-438F-B391-FE7D620C946C    </OBJECT>

            clsid为控件的注册id,需要改成该运行环境的注册id,见VC工程目录中odl文件中如下段(该段在文件最后,别弄错了id)

            //  Class information for CAxtiveX_InterfaceCtrl

            [ uuid(706B8249-D5F8-438F-B391-FE7D620C946C),
            helpstring("AxtiveX_Interface Control"), control ]

    第七步:按以上步骤做了之后,用IE打开HTML文件,发现ActiveX控件界面很小,这个可以在容器(HTML文件)中设定:

            如:

           <OBJECT id=DOcxtest1 classid=clsid:706B8249-D5F8-438F-B391-FE7D620C946C width="532"   height="356">   
            <PARAM NAME="_Version" VALUE="65536">
            <PARAM NAME="_ExtentX" VALUE="2646">
            <PARAM NAME="_ExtentY" VALUE="1323">
            <PARAM NAME="_StockProps" VALUE="0">
            </OBJECT>

 至此,全部ok,你可以方便地在该对话框中建立你想要的控件,如按钮,Edit等

        原代码下载