各位高人:我一直对VC访问COM有些晕。一种方法是用#import <...filename.exe>生成.TLH和.TLI文件,在.cpp中用_ApplicationPtr myApp;来声明一个COM应用。我看ATL中又总是在讲CComPtr。两者是什么关系?这个_ApplicationPtr就是CComPtr吗?在哪里定义的?

解决方案 »

  1.   

    都是差不多的。
    CComPtr是通用智能指针模板类,通常用于对任意接口的封装。
    _ApplicationPtr是从_com_ptr_t派生的,这也是一个模板类,跟CComPtr差别不大,但它做了更多的封装,编译器导入类型库时都用它作为接口封装工具,能作为返回值类型。
    如果仔细看他们的源码,可以同时使用。
      

  2.   

    _ApplicationPtr 是已经封装好的一个智能指针CComPtr 是一个模板库,它可以封装各种类型的智能指针.
      

  3.   

    多谢两位高人。答复得很清楚。再追问一句:使用智能指针就是在使用ATL吗?
      

  4.   

    派生自IUnknown,IDispatch的应该可以吧
      

  5.   

    智能指针跟ATL没关联,谁都能用
      

  6.   

    CComPtr系属于ATL名字空间,当然CComPtr可以用于任地方。
    _com_ptr_t其名字空间根据跟你import的方式