timeProc里操作Excel失败,该如何处理
timeProc里操作Excel失败
VC6.0
在工程里设了一个timeSetEvent定时器,timeProc为非成员函数
在回调函数中
pPlayer->m_ExlRge.SetItem(_variant_t((long)3), _variant_t((long)1), _variant_t("hello"));
pPlayer为传入的窗口指针,
在回调函数中调用窗口的其它成员函数都可以,而m_ExlRge.SetItem在其它地方调用也没问题,
为什么在回调函数timeProc里操作Excel就会在运行时出错。
------最佳解决方案--------------------
定时器回调中操作Excel比较危险——可能会重入,除非能确保周期足够长或者使用信号/排斥量等
可以在线程中使用定时器
如果是在回调函数或线程中使用Excel,在创建接口前调用CoInitialize CoInitializeEx之类的初始化COM库
------其他解决方案--------------------
excel打开也是一个线程嘛??
------其他解决方案--------------------
不是。未用过线程
------其他解决方案--------------------
Excel是另一个进程,该怎么在定时器中操作Excel啊?
------其他解决方案--------------------
谢谢你。
那如果我在回调函数里发送一个自定义的消息,然后在消息里操作Excel呢,这方法可行吗?
------其他解决方案--------------------
利用消息的处理可以了,谢谢大家
VC6.0
在工程里设了一个timeSetEvent定时器,timeProc为非成员函数
在回调函数中
pPlayer->m_ExlRge.SetItem(_variant_t((long)3), _variant_t((long)1), _variant_t("hello"));
pPlayer为传入的窗口指针,
在回调函数中调用窗口的其它成员函数都可以,而m_ExlRge.SetItem在其它地方调用也没问题,
为什么在回调函数timeProc里操作Excel就会在运行时出错。
------最佳解决方案--------------------
定时器回调中操作Excel比较危险——可能会重入,除非能确保周期足够长或者使用信号/排斥量等
可以在线程中使用定时器
如果是在回调函数或线程中使用Excel,在创建接口前调用CoInitialize CoInitializeEx之类的初始化COM库
------其他解决方案--------------------
excel打开也是一个线程嘛??
------其他解决方案--------------------
不是。未用过线程
------其他解决方案--------------------
Excel是另一个进程,该怎么在定时器中操作Excel啊?
------其他解决方案--------------------
谢谢你。
那如果我在回调函数里发送一个自定义的消息,然后在消息里操作Excel呢,这方法可行吗?
------其他解决方案--------------------
利用消息的处理可以了,谢谢大家