你使用了AfxOleInit()初始化MFC客户端时,会自动在CWinApp中设置一个COleMessageFilter数据成员。该类提供了IMessageFilter的实现,允许用户在等待异步操作的时候有选择性地处理COM操作以提高效率和避免死锁,参见IMessageFilter的文档。你可以创建你自己的COleMessageFilter类并且在此时注册。
可以用AfxOleGetMessageFilter()来访问这个对象。这个对象包含和COM服务器通讯的一些设置。
一些常用的方法
SetMessagePendingDelay(nTimeout);设置在COM调用之后,显示COM服务器忙对话框(COleBusyDialog)之前等待的时间
EnableBusyDialog(FALSE);禁用COM服务器忙对话框
EnableNotRespondingDialog(FALSE); 禁用未响应对话框。该对话框在鼠标或者键盘操作之后,COM调用超时时显示
使用OleInitialize初始化的程序不会显示这些对话框。
消息框:服务器正在运行中 OLE解决办法
最新推荐文章于 2025-10-16 13:29:35 发布
本文介绍了如何在使用AfxOleInit()初始化MFC客户端时,通过设置IMessageFilter来优化COM操作,避免死锁并提高效率。包括创建自定义的COleMessageFilter类、注册过滤器以及使用SetMessagePendingDelay、EnableBusyDialog和EnableNotRespondingDialog等方法来调整对话框显示行为。
1954

被折叠的 条评论
为什么被折叠?



