受不了,用COM SDK,你要实现N个接口呀!,不用ATL的话!,我要自杀呀!

解决方案 »

  1.   

    只要不用MFC都可以啊!!帮帮我吧!
      

  2.   

        我不会用mfc编程序,但是我知道实现你的想法不是那么简单的。
        首先,只用com的sdk不能创建窗口,必须结合platformSDK一起编程。
        那个所谓控件窗口实际上可以不是一个窗口,可能就是你的窗口上的一块地方。这个地方(site)可不简单,实现了不少接口。如果这个地方能防一个控件,则要实现的接口如下:
        首先,必须实现IOleClientSite接口。一切COM客户Site一般都必须实现这个接口。不过不必实现这个接口有关链接的方法。
        如果要和控件通信,必须实现IAdviseSinkEx接口。起码要实现OnViewChange方法。这个不是必需的
        一般来说,控件都能支持,在位激活(InPlace Activation),因此必须实现IOleInPlaceSite接口。
        必须实现IOleControlSite接口,处理一些有关控件问题。
        IOleInPlaceFrame,控件可能需要显示它的工具条什么的,那就必须有这个
        IOleContainer,枚举窗口中的对象
        IDispatch,呈现环境属性
        如果支持无窗口特性,应该实现IOleInPlaceSiteWindowless.
        此外还有一些其它的要求,具体可以参见msdn.
        以上就是实现一个control容器所要干的事.
        这些工作十分琐碎,容易出错,并且有固定的套路.mfc已经为你实现了。你要是感兴趣,可以看mfc源程序。其他的控件容器的例子很少。可以看一下Inside OLE第2版的例子。
        总之,mfc的CreateControl不是那么简单的