(3)我只知道初始化COM,但到底是初始化了些什么呢,有什么用?
(2)另外如果我在App类的InitInstance()中用了CoInitialize(),该在那里用CoUninitialize()?如果用AfxOleInit(),需不需要在最后释放或者清理什么呢?
Any help would be appreciate
8 个解决方案
#1
我记得在《深入浅出ATL》中说明了这两个函数的区别
#2
OLE是建立在COM之上的技术,层次比COM要高。AfxOleInit()调用的是OleInitialize(),而OleInitialize()除了调用CoInitializeEx()来初始化COM库外,还进行一些其它的操作,这些操作对OLE应用来说是必须的,这些OLE应用包括:
(1)Clipboard;
(2)Drag and drop;
(3)Object linking and embedding(现在的OLE,已不再仅仅是Object linking and embedding的概念);
(4)In-place activation;
与AfxOleInit()对应的是,AfxOleTerm()。
(1)Clipboard;
(2)Drag and drop;
(3)Object linking and embedding(现在的OLE,已不再仅仅是Object linking and embedding的概念);
(4)In-place activation;
与AfxOleInit()对应的是,AfxOleTerm()。
#3
pcman1990(pcman):
用了CoInitialize(),是不是一定需调用CoUninitialize(),如果是该在那里调用?
同样如果用AfxOleInit()呢?
用了CoInitialize(),是不是一定需调用CoUninitialize(),如果是该在那里调用?
同样如果用AfxOleInit()呢?
#4
pcman1990(pcman) :
如果用了CoInitialize(),是不是一定要用CoUninitialize(),如果是该在那里用呢??
如果是AfxOleInit(),又怎样呢?
如果用了CoInitialize(),是不是一定要用CoUninitialize(),如果是该在那里用呢??
如果是AfxOleInit(),又怎样呢?
#5
CoInitialize和CoUninitialize必须成对使用,后者不必
#6
Put the CoUninitialize() in
CWinApp::ExitInstance(..)
CWinApp::ExitInstance(..)
#7
AfxOleInit()和AfxOleTerm()其实也是需要成对的,但是,在你的程序中,AfxOleTerm()可以不出现,这是因为,MFC已经帮你做好了(有兴趣的话,你可以仔细研究一下CWinThread::m_lpfnOleTermOrFreeLib,而CWinApp是从CWinThread继承的)。
#8
让小弟回去琢磨琢磨!!
#1
我记得在《深入浅出ATL》中说明了这两个函数的区别
#2
OLE是建立在COM之上的技术,层次比COM要高。AfxOleInit()调用的是OleInitialize(),而OleInitialize()除了调用CoInitializeEx()来初始化COM库外,还进行一些其它的操作,这些操作对OLE应用来说是必须的,这些OLE应用包括:
(1)Clipboard;
(2)Drag and drop;
(3)Object linking and embedding(现在的OLE,已不再仅仅是Object linking and embedding的概念);
(4)In-place activation;
与AfxOleInit()对应的是,AfxOleTerm()。
(1)Clipboard;
(2)Drag and drop;
(3)Object linking and embedding(现在的OLE,已不再仅仅是Object linking and embedding的概念);
(4)In-place activation;
与AfxOleInit()对应的是,AfxOleTerm()。
#3
pcman1990(pcman):
用了CoInitialize(),是不是一定需调用CoUninitialize(),如果是该在那里调用?
同样如果用AfxOleInit()呢?
用了CoInitialize(),是不是一定需调用CoUninitialize(),如果是该在那里调用?
同样如果用AfxOleInit()呢?
#4
pcman1990(pcman) :
如果用了CoInitialize(),是不是一定要用CoUninitialize(),如果是该在那里用呢??
如果是AfxOleInit(),又怎样呢?
如果用了CoInitialize(),是不是一定要用CoUninitialize(),如果是该在那里用呢??
如果是AfxOleInit(),又怎样呢?
#5
CoInitialize和CoUninitialize必须成对使用,后者不必
#6
Put the CoUninitialize() in
CWinApp::ExitInstance(..)
CWinApp::ExitInstance(..)
#7
AfxOleInit()和AfxOleTerm()其实也是需要成对的,但是,在你的程序中,AfxOleTerm()可以不出现,这是因为,MFC已经帮你做好了(有兴趣的话,你可以仔细研究一下CWinThread::m_lpfnOleTermOrFreeLib,而CWinApp是从CWinThread继承的)。
#8
让小弟回去琢磨琢磨!!