码迷,mamicode.com
首页 > 移动开发 > 详细

子线程中CApplication::CreateDispatch失败的解决方法

时间:2015-12-31 13:01:38      阅读:908      评论:0      收藏:0      [点我收藏+]

标签:c++

问题描述:

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失败排查方法

  1. 检查计算机本身是否安装相应的程序,如Excel。

  2. 如果安装了相应的程序,检查是否兼容。

  3. 使用release而不是debug。


说明:以上排查方法是上网看到总结的,因为自己没遇到过,所以不确保准确性。

子线程中CApplication::CreateDispatch失败的解决方法

标签:c++

原文地址:http://feather.blog.51cto.com/4767437/1730266

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!