mfc 中调用 activex 控件的问题

baibushan 2010-05-18 03:21:06
有一个第三方的activex控件,在mfc中将它引入。

我在引入那个ocx文件后,mfc给我生成了一个操作此activex的类。这个activex控件有一个属性叫做verify,生成的类中用于操作这个属性的函数是GetVerify和SetVerify。

(1).我把这个控件拖到一个对话框上,右击,选择属性,然后选择ALL标签,可以看到verify属性值是空的,这时,如果我编译,执行的话,发现弹出的对话框中activex控件显示的不是我想要得到的结果。

(2).如果我在右击activex控件,属性的ALL标签里设置verify为一个特定的值,编译,执行,可以得到正确的结果。

现在问题来了,我需要每次启动的时候,verify设置的值不一样,假如我在(1)的情况下启动,给这个activex添加一个成员变量(类型为mfc生成的操作此activex控件的类),然后在对话框的OnInitDialog函数中用SetVerify设置verify的值的话,结果依然和先前一样,不是我想要的。
我又查看了生成的类中的Create函数,此函数是调用CWnd类的CreateControl来实现的,于是我用Create函数来动态创建,创建完成后,紧接着调用SetVerify设置verify值,结果依然不是我想要的,这说明在activex初始化的过程中需要用到verify的值,但是如果我没有事先调用Create函数或者CreateControl,而直接先进行SetVerify给verify属性赋值的话,因为activex控件还没有被创建,所以就会出现错误。

对于这个问题该怎么办
...全文
301 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
baibushan 2010-05-20
  • 打赏
  • 举报
回复
我用activex control test container测试,第一次载入时,得到的结果不正确,然后我用setverify将verify设置为一个有效的值,然后save to property bag,接着save to stream 或者 save to storage保存起来。将先前载入的移除,接着从stream或者storage打开已经保存了verify的文件,显示结果正确,activex control test container截获一条消息 Property Change: Unknown property (DISPID=-1)
baibushan 2010-05-20
  • 打赏
  • 举报
回复
没人回答吗 ... 再挂两天,周六下午结贴了,郁闷啊

说说我现在的解决方法,因为activex control test container的save to storage生成的TSG文件里保存了verify属性的值,我用CreateControl根据这个TSG文件创建activex控件,可以得到正确结果,于是每次启动前,我就先得到一个verify的有效值,然后操作TSG文件,找到里面保存的老的verify,替换掉,接着再CreateControl。

十分不爽的方法,但是又没有办法。
baibushan 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 visualassist4680 的回复:]

修改mfc 代码 在 activex 初始化的时候,setverify
[/Quote]

最关键的就是这里了,如果调用CreateControl之后再setverify,没有效果
如果调用CreateControl之前setverify就会出错
visualassist4680 2010-05-19
  • 打赏
  • 举报
回复
修改mfc 代码 在 activex 初始化的时候,setverify
baibushan 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gw_net 的回复:]

你可以把代码发给我,
我帮你调试一下
gw_net@163.com
[/Quote]

这个activex控件需要硬件支持的,如果没有硬件,即使verify是有效的,也起不了作用
baibushan 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tttyd 的回复:]

这个属性应该是组件创建相关条件属性吧。
如果组件创建之后属性不能修改,那最好找技术支持,是否还需要调用其他的接口方法来刷新组件
[/Quote]

创建之后属性可以修改,因为我SetVerify之后,再调用GetVerify可以看到verify已经修改了,但是现在修改已经没有用了,因为最初出现的结果不正确

gw_net 2010-05-18
  • 打赏
  • 举报
回复
你可以把代码发给我,
我帮你调试一下
gw_net@163.com
雪影 2010-05-18
  • 打赏
  • 举报
回复
这个属性应该是组件创建相关条件属性吧。
如果组件创建之后属性不能修改,那最好找技术支持,是否还需要调用其他的接口方法来刷新组件

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧