一、该函数接收一个参数,而该参数通常是一个0,这是它的起源OLE的一个惯例。CoInitialize函数初始化COM库。在你做其它的处理之前,你需要调用这个函数。在更为专业的应用中,我们将会使用扩展的版本--CoInitializeEx。
二、你要使用ADO,要先初始化环境,使用完毕再用CoUninitialize( );
三、OLE是建立在COM之上的技术,层次比COM要高。AfxOleInit()调用的是OleInitialize(),而OleInitialize()除了调用CoInitializeEx()来初始化COM库外,还进行一些其它的操作,这些操作对OLE应用来说是必须的,这些OLE应用包括:
(1)Clipboard;
(2)Draganddrop;
(3)Objectlinkingandembedding(现在的OLE,已不再仅仅是Objectlinkingandembedding的概念);
(4)In-placeactivation;
与AfxOleInit()对应的是,AfxOleTerm()。
CoInitialize和CoUninitialize必须成对使用,后者不必。
AfxOleInit()和AfxOleTerm()其实也是需要成对的,但是,在你的程序中,AfxOleTerm()可以不出现,这是因为,MFC已经帮你做好了(有兴趣的话,你可以仔细研究一下CWinThread::m_lpfnOleTermOrFreeLib,而CWinApp是从CWinThread继承的).
四、在系统工程中通常自己建立一个ADO类,因此我们可以在构造函数中加入Olelnitialize(NULL)来初始化OLE系统,在析构函数中调用CoUninitialize()不退出调用。这样可以避免因重复调用而引起的系统错误。