描述:
最近工作需要需要写一个页面中的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:
MSDN搜索“Polygon Step 1: Creating the Project”的例子。
解决方案2: 你可以在VC帮助里(或微软网站上)搜
Write ActiveX Controls Using Custom Interfaces Provided by ATL 3.0
内容,可以找到一个写ATL控件的例子,由MSJ, February在1999写的。
没有界面的组件添加一个single object就行了,在插入ActiveX浏览窗口中是不会出现的,因为他不是ActiveX控件,是一个COM对象
VC的属性窗口没有自定义的属性?一种可能是属性添加的外部名称不正确,一种可能是属性添加有误,可以看看idl文件,是否正确添加了属性
对于网页上的控件最好使用ATL,但是不如MFC方便,没有一些常用的工具类,如CString,CArray,但是如果配合WTL还是很不错的,WTL提供了CString和CSimpleArray等工具类