各种数据结构:
BSTR:与MFC的CString可以相互转换,BSTR = CString .AllocSysString();
VARIANT_BOOL:/* 0 == FALSE, -1 == TRUE */ typedef short VARIANT_BOOL;
碰到的问题如下:
原因:属于BUG,IE7->IE6解决。
原因:IE8/IE9默认是多进程工作的,所以默认情况下不能进行调试,解决办法:避免IE用多进程方式打开网页。
方法1:
运行gpedit.msc组策略管理器。在“计算机配置—》管理模板—》windows组件—》Internet Explore”中打开“设置选项卡进程增长”,设置为已启用,选项卡进程增长为0。应用之后IE8就进入单进程模式。
方法2:
1. 点击【开始】->【运行】 命令:regedit.
2. 定位到HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet Explorer -> Main
3. 在【右边区域】【右键】新建一个名称为TabProcGrowth的DWORD值, 数值数据设置为0.
4.重启电脑。
原因:OCX注册时候,找不到依赖的库。
以CxxxOCX的工程为例,打开“Class View”,找到"CxxxOCXLib“,找到"_DCxxxOCX",即可添加。
删除工程的ncb文件。
OCX注册失败,错误码0x80040200
需要以管理员身份运行CMD。
OCX在IE上加载失败
以IE为例,
1 点“工具”,点“Internet选项”,点“高级”,选中下面两项:
允许活动内容在我的计算机的文件中运行* //允许一些脚本文件在此计算机上运行,比如一些网页上的javascript编写的脚本
允许运行或安装软件,即使签名无效*
2 点“安全”,点“可信站点”,点“站点”,添加要访问的地址,如“http://172.16.200.25”,点“关闭”。
再点“自定义级别”,对于“ActiveX控件和插件”这一栏,全部选启动。
3 如果还是不能加载,手动注册下控件。
更改函数名或参数,需要修改地方
除了消息定义,消息映射,消息声明,还有个隐蔽的地方需要修改,idl文件里的dispinterface _D(工程名),如果是函数名改变,还需更改dispidxxx的定义(在XXCtrl.h里)。
如何在OCX中调用OCX
首先在XXApp::InitInstance()中加入AfxEnableControlContainer(); 其次添加一个对话框资源,修改属性为:Border:None,Style:Child,然后在对话框上添加另一个OCX。