问题描述:
CApplication appExcel;
BOOL bCreateRet = appExcel.CreateDispatch("Excel.Application");
以上代码在主线程中bCreateRet返回TRUE,在子线程中bCreateRet返回FALSE。
问题原因:
执行线程时没有初始化。
解决办法:
添加初始化函数。
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CoInitialize(NULL);
AfxEnableControlContainer();
CApplication appExcel;
BOOL bCreateRet = appExcel.CreateDispatch("Excel.Application");
说明:小白表示不晓得初始化都做了什么,并且只加上CoInitialize(NULL);这一句就解决了我的问题。以上解决方法来自论坛:
[多线程时的CreateDispatch问题](http://bbs.csdn.net/topics/310088635)
另:CApplication::CreateDispatch失败排查方法
检查计算机本身是否安装相应的程序,如Excel。
如果安装了相应的程序,检查是否兼容。
使用release而不是debug。
说明:以上排查方法是上网看到总结的,因为自己没遇到过,所以不确保准确性。
转载于:https://blog.51cto.com/feather/1730266