最近工作需要需要写一个页面中的ActiveX插件,无奈以前对com了解甚少,不求甚解、匆匆忙忙凑了一个,勉强能用,目前遇到几个问题,知道的请指点一二,谢谢:
1。我使用ATL创建了一个工程,增加了两个ATL Object,一个是Single Object类型,一个是Full Control类型,但是在使用的时候(例如在VC的对话框中插入ActiveX组件时,弹出的组件浏览对话框中),找不到前一个类型。请问这是否是正常现象,如果是,我想创建一个没有界面窗口的object,选择什么ATL Object最合适。
2。上面提到Full Control类型的组件可以正常使用,然后我给该object增加了若干属性,但是在VC对话框中插入组件时,组件的属性窗口上找不到我定义的属性,请问如何处理才能在组件属性框中直接编辑我预先定义的属性。(我不需要增加一个独立的组件属性对话框这样的功能,仅仅在通用框架下能够编辑预定义属性即可,就像media player等控件一样),知道的话,给我一些思路或者例子,要是说看看某本书的就算了,火烧屁股了:)此外,还有一个疑惑,对IE页面中应用的Activex插件而言,如果不考虑链接MFC库带来的容量问题,ATL和MFC ActiveX工程写的组件有什么分别,哪一个更为合适。在线等代,及时接贴,谢谢!
1。我使用ATL创建了一个工程,增加了两个ATL Object,一个是Single Object类型,一个是Full Control类型,但是在使用的时候(例如在VC的对话框中插入ActiveX组件时,弹出的组件浏览对话框中),找不到前一个类型。请问这是否是正常现象,如果是,我想创建一个没有界面窗口的object,选择什么ATL Object最合适。
2。上面提到Full Control类型的组件可以正常使用,然后我给该object增加了若干属性,但是在VC对话框中插入组件时,组件的属性窗口上找不到我定义的属性,请问如何处理才能在组件属性框中直接编辑我预先定义的属性。(我不需要增加一个独立的组件属性对话框这样的功能,仅仅在通用框架下能够编辑预定义属性即可,就像media player等控件一样),知道的话,给我一些思路或者例子,要是说看看某本书的就算了,火烧屁股了:)此外,还有一个疑惑,对IE页面中应用的Activex插件而言,如果不考虑链接MFC库带来的容量问题,ATL和MFC ActiveX工程写的组件有什么分别,哪一个更为合适。在线等代,及时接贴,谢谢!
谢谢答复,不过第二个问题还是有些疑问,属性应该正确添加了,因为在javascript可以通过脚本访问,而且有正确的结果。不过在插入组件的时候,无论VC的资源编辑器中,还是frontpage中,都无法看到该属性,因而无法设置属性
Write ActiveX Controls Using Custom Interfaces Provided by ATL 3.0
内容,可以找到一个写ATL控件的例子,由MSJ, February在1999写的。
ATL工程中,在哪里设置外部名称?此外新建了一个MFC ActiveX的工程,查了些资料,感觉是不是这类问题还跟实现IDispatch接口有关?
现在问题可以明确为:
1。创建ATL工程,所有设置默认
2。增加ATL Object,选择类型Controls->Full Controls,所有设置默认
3。在classview中选择刚添加的组件,Add Property
编译后,在VC的对话框Insert ActiveX Control时,组件的属性框可以看到刚定义的属性,但是在FrontPage中,插入ActiveX控件,组件的属性框上则看不到这些属性。