VC 制作ActiveX 控件(OCX)
1、vc6下建立一下activeX工程
详见【http://hi.baidu.com/mailrabbit/blog/item/0624a608bde798346b60fbb6.html】
2、在页面中调用
2.1:注册ocx到系统
3、过程中遇到的一些问题
3.1、xxx.odl 中支持boolean; .cpp和.h中不支持boolean只能用BOOL;
xxx.odl 中不支持int 支持long .参数写成int时 ctrl+w就不管用了,报
“Parsing error: "int" is not a valid OLE parameter type。”
3.2、接口函数都写在 xxxCtl.cpp中
3.3、VC设置编译时活动的工程
3.3.1>menu---Project---Settings(具体的项目,无参考价值,请读者忽略!)
3.3.2>menu---Build---Set Active Configuration
3.4、用regsvr32 注册不到系统里报“找不到指定模块”错误。
分析:有可能控件有依赖的其它DLL文件没有在系统System32下。
解决办法:用工具depends查看一下ocx 控件的依赖关系,其中有黄色标记的dll 就是该控件所需要的。将其放到system32下就可以了。(这个方法百试不爽,同样可以解决浏览器有些可以加载有些加载不上去的问题)
3.5、解决ActiveX 工程无法用vc 调试的问题
方法一:笨办法 AfxMessageBox();(在适当的时候用,这个太费劲了,特别是大项目时)
方法二:曲线救国 ;
在一个工作空间中分别建ActiveX工程 和Dialog工程,用dialog 工程来管理ActiveX工程。具体办法 就是用dialog 工程来加载ActiveX工程下你自己写的程序文件,然后编译调试就OK
在这期间遇到dialog中无法编译源程序,提示找不到头文件。解决方法如下: 1、Project -->Settings-->如下图:
3.6、很多时候,在本机编写ocx时,本机上的浏览器加载不到这个控件,今天终于发现如何解决了。
其实不是找不到,是因为浏览器通过clsid 已经找到本机有自己制作的控件了,所以它就默认不再加载控件到浏览器控件的目录了。如果这时候,你把vc工程清理一下,再通过浏览器访问你的页面时,就会加载你的控件。害我迷糊了好长时间,甚至要测试我还要换一台机器。希望新手可以解惑!!!!


