描述:
class _Application : public COleDispatchDriver
{
.....
}
类_Application 从COleDispatchDriver继承
在线程中调用下面程序段
DWORD WINAPI ReadFileData(LPVOID p)
{
COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR),vtTrue((short) TRUE),vtFalse((short)FALSE);
_Application *ExcelApp = new _Application;
ExcelApp->CreateDispatch("excel.application");
}
为什么在调用ExcelApp->CreateDispatch("excel.application")的时候,从vc的调试窗口中可以看到如下内容:
-ExcelApp
|_COleDispatchDriver
|
|+ m_lpDispatch
|__m_bAutoRelease
从调试窗口看m_lpDispatch的值每次都是空,所以ExcelApp->CreateDispatch("excel.application")的调用都返回FALSE.
为什么在其他函数中(非线程函数中),调用上面的程序段.m_lpDispatch的值将不为空,ExcelApp->CreateDispatch("excel.application")返回值为TRUE.
大家帮我解答一下,为什么会是这样啊?
解决方案1:
每个线程都必须Initialize,Uninitialize.
这个问题MS已经强调若干次了
调用CoInitialize先
解决方案3:明显在创建COM对象之前没初始化COM