这是自动化服务超时引起,它有一个默认的响应时间,解决方法:
在App::InitInstance()里AfxOleInit()之后加上这个:
AfxOleGetMessageFilter()->EnableBusyDialog(FALSE);
AfxOleGetMessageFilter()->SetBusyReply(SERVERCALL_RETRYLATER);
AfxOleGetMessageFilter()->EnableNotRespondingDialog(TRUE);
AfxOleGetMessageFilter()->SetMessagePendingDelay (-1);
如果编译不通过,包含头文件#include <afxole.h>
COleMessageFilter类管理OLE应用程序交互所需要的并行能力。
COleMessageFilter类用于可视化编辑服务器和容器应用程序中,以及OLE自动化应用程序中。对于要调用的服务器应用程序,该类可使应用程序保持“忙”的状态,这样其他容器应用程序的调用请求就会被取消或稍后重试。当被调用的应用程序忙时,也可以使用该类确定调用者应用程序将采取什么样的动作。服务器应用程序常用的用法是在文档或其他OLE可访问的对象有可能遭到破坏的情况下调用BeginBusyState 和EndBusyState。在用户界面更新过程中,CWinApp::OnIdle将发起这些调用。
缺省地,当应用程序初始化时就分配一个COleMessageFilter对象。可以使用AfxOle