OLE是建立在COM上的一种技术.
本来OLE是先于COM而出现的,不过最早的OLE有很多缺点,用的人也少,后来MS改写了OLE的机制,用COM作它的基础,发展成了现在这种比较成熟的模式.大致说来,COM是比较底层的东西,而OLE是比较高层的,用到了COM的一些高级概念,不过它只是COM的一个分支.
要学习COM尽管从理论上来说不必要掌握C++,不过如果有了C++的一些基本概念学COM会轻松得多,因为COM的很多思想是从C++的思想发展而来的,而且C++是写COM组件最基本也是很常用的语言.不过我的经验是,即使你懂C++,学COM也会很吃力的,COM实在是不那么容易掌握的技术.
要编控件的话看你的需要了,如果是简单的或者想利用现有的功能可以修改Windows控制的行为,不必完全自己写起;如果要完全实现象ActiveX控制这方面的内容,你有两种选择,要么从COM的基本原理学起,要么用现成的已经构筑好的基本框架,几乎所有的编译器如VC,VB,Delphi,BCB都提供了这样的框架.前者入门的时候非常不容易,但是到后来会很轻松;后者很容易入门,但学到一定阶段还是要回过头来补基本概念.要用哪一种方法就看你自己了.