1:我用 ATL创建的一个 SIMPLE COM OBJECT编译出来得 COM组件,和 ACTIVEX控件有什么区别?
2:开发ACTIVEX用ATL好一些还是用MFC?3:为什么很多时候都要用ACTIVEX,有什么好处?OCX和ACTIVEX是什么关系?4:我用 ATL创建的一个 SIMPLE COM OBJECT编译出来得 COM组件,是不是其他比如JAVA DELPHI VB等语言都可以直接在他们开发环境中使用?因为急这临时要修改WIN32 DLL,来不及从头学起,所以请大家帮忙回答一下澄清一下我的迷惑谢谢

解决方案 »

  1.   

    1.两个没有对比性。
      SIMPLE COM OBJECT是完成一些简单的接口。
      activex是专门做控件的。2.目前MFC和ATL代表了两种框架,分别面向不同类型的基于Windows的开发。MFC代表了创建独立的Windows应用的一种简单、一致的方法;ATL提供了一种框架来实现创建COM客户机和服务器所必须的样板文件代码。ATL的目标是使开发者不必重写IUnknown, IDispatch, IclassFactory和其它的分支以将常规的DLL和EXE变成基于COM的DLL和EXE。从这个角度讲,ATL是一个比MFC精简的多的框架,它设计和生成时就考虑了COM支持。它使用基于模板的方法,通过继承ATL提供的模板,开发者可以加入各种COM功能片断。这两种体系架构的区别是非常明显的。通常,MFC使得你很快完成你的工程并更快的运行起来,但是牺牲了灵活性。ATL没有那样快,那样容易使用,但是它是COM友好的。而且,好像随着ATL的成熟,它将会越来越容易使用。3.简单而不全面的说,activeX取代了ocx.4.com是二进制复用的。当然,可以在其他环境中使用。
      

  2.   

    谢谢你的回答,另外还有两个小问题:
    1:我用ATL写的一个COM组件,然后我再写了一个MFC对话框对他进行测试,发现再调试模式一调用COM组件的方法就会崩溃,如果直接运行DEBUG程序,则结果正确。请问怎么调试COM组件?2:如果我的需求只是吧一个普通WIN32 DLL改为COM组件,以让其他语言也可以简单地调用,是不是只要普通的COM组件就可以达到这个目标?而不用写成ACTIVEX?
      

  3.   

    以调试模式在IDE里运行,调用COM组件方法后崩溃。如果不以调试模式运行,直接运行DEBUG版本的程序,调用COM组件方法不会崩溃。
      

  4.   

    1.第一个问题是或许你的com里面用到了一些字符串操作,一般在com里字符串的操作都需要用宽字符串处理。
    2.是的,一般改一些就可以了,实现一些接口就可以了