首页 > 移动平台 > 详细

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

时间:2015-12-31 13:00:59      阅读:463      评论:0      收藏:0      [点我收藏+]

问题描述:

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失败的解决方法

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!