哪位高手能够详细的说一下ActiveX控件和Windows标准控件,如Button,Edit等有什么相同和不同?
谢谢!

解决方案 »

  1.   

    ActiveX控件是一个组件,实用COM类接口对外公开,有点像独立程序的特性
    普通控件就是一个或几个类,封装了数据显示的功能而已
      

  2.   

    相同的话,都是从CWnd派生的窗口类;不同的话,就是各自对应不同的应用。龙生九子,各有各样。关心它们的相同和不同的意义不大。
      

  3.   

    一个MFC实现,一个ATL实现,可以看vc的代码,ATL的很多都是从MFC借鉴的
      

  4.   

    本质都是一样的,只是对HWND封装不一样而已.可以理解为使用同样的材料,构建不同的工具
      

  5.   

    我觉得还是有很大不同,比如做自动测试的时候,Windows标准控件很容易做到获取属性,但是对于ActiveX控件,则比较难吧!通过HWND去获取控件对象的方式不一样啊。
    此外,如1楼所说,ActiveX实现了COM接口,我认为应该是一种Server/Client的模式。获取到的实际上是ActiveX的Client对象,还有,ActiveX还有控件容器什么的,具体我不是很清楚,所以才问的!
      

  6.   

    对,就是有不同,可是Button和Edit的获取方法又是一样的。这中间到底有什么不同呢?
      

  7.   

    普通窗口是以HWND为基础的,只能通过消息和窗口API跟它打交道;ActiveX控件以COM为基础,可以有也可以没有HWND,通过COM调用方式打交道,当它没有HWND时,消息和窗口API对它一概无效,它必须寄生在其它窗口中。
      

  8.   

    ActiveX是进程内的COM,为STA模式,具有属性页,但属性页的实现也有特殊要求。因为为STA模式,因此对象是自然而然的线程安全。CWnd类型的窗口,也就是说标准窗口控件,对象不具有特殊的属性页面。
    据说,C#的控件,使用的便是ActiveX控件类型封装的。