没有VC的机器上,动态创建的控件不能正确创建
编号:QA004303
建立日期: 2001年7月16日 最后修改日期:2001年7月16日
所属类别:
高:
操作系统:win2000 professional
编程工具:vc6.0
问题:我是一名软件开发人员,作了一个软件,开发平台式win2000 professional ,vc6.0(with sp3),使用INSTALLSHIELD 6.0作成安装盘后,在装过VC的机器上使用都没有问题,但是在没有装过VC的机器上,软件中使用到的MSFLEXGRID控件和MSCHART控件都不能正确创建(注:我用的是控件的动态创建)。我原认为是控件的注册问题,但是我在INSTALLSHIELD中设置了自注册属性,在注册表中也发现了注册信息,并且在装了VC的机器上,停掉原来的注册的服务,安装软件后,发现服务确实是注册成功了,软件也可以正常使用。但是在没有装过VC的机器上,我用regsvr32进行手工注册,注册后提示控件注册成功,但是还是不能动态创建。请问:是否是控件的LICENSE的问题,如果这样的话,是否使用VC自带的ACTIVEX控件,在程序中动态创建的时候就无法进行软件发布了?
回答:
问题出在你是动态创建的控件。ActiveX控件的License有两种:设计时和运行时。如果你在对话框上放置控件,编译时运行时License会自动加到EXE中,所以你分发的时候即使用户机器上没有安装VC也可以运行。而你动态建立控件时没有运行时License,控件无法建立。如果机器上安装了VC,虽然没有运行时License,但控件可以在注册表中找到有关信息,所以也可以工作。要使动态建立的控件正常工作,需要一些额外的步骤,可以参考:微软的Knowledge Base的文章:“Q151804 RB: Dynamic Creation of Redistributable Control Fails”。这个例子讲的比较清楚。除非必要,我觉得还是把控件放在对话框中比较省事。
此问题由李海回答。
| |
|
|
| |
|
|