AfxOleGetMessageFilter()->SetBusyReply(SERVERCALL_RETRYLATER);崩溃

bsnry 2012-12-19 12:40:58

AfxOleGetMessageFilter()->EnableBusyDialog(FALSE);

AfxOleGetMessageFilter()->SetBusyReply(SERVERCALL_RETRYLATER);

AfxOleGetMessageFilter()->EnableNotRespondingDialog(TRUE);

AfxOleGetMessageFilter()->SetMessagePendingDelay(-1);

本来这几句就是防止 打开word, ppt的时候出现一个“服务器正在运行”这种提示。

结果我加了,引起崩溃,是否还有什么环境没有加啊
?

...全文
320 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bsnry 2012-12-20
  • 打赏
  • 举报
回复
研究了个半个小时,结论: 如果把以下代码: if(!app.CreateDispatch(_T("Powerpoint.Application")) ) { AfxMessageBox(_T("Couldn't start PowerPoint.")); } else // Make PowerPoint visible and display a message { TRACE(_T("PowerPoint is Running!")); } CAppliaction使一个word 2007的包装类。 这个代码如果放到消息相应函数里面,那么就可以初始化成功。 如果放到构造函数里或者initdialog或者initinstance里就失败. 非常奇怪
bsnry 2012-12-19
  • 打赏
  • 举报
回复
引用 2 楼 bsnry 的回复:
引用 1 楼 bsnry 的回复:发个inintinstance 函数的代码: BOOL CTest2App::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创……
打字错误,如果不会初始化com, 为什么可以操作ppt?
bsnry 2012-12-19
  • 打赏
  • 举报
回复
引用 1 楼 bsnry 的回复:
发个inintinstance 函数的代码: BOOL CTest2App::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONC……
发现是少了// 初始化 OLE 库 if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } 导致的。 现在的问题是: 默认的对话框工程到底会不会初始化com? 如果不会,为什么我看一操作ppt?
bsnry 2012-12-19
  • 打赏
  • 举报
回复
发个inintinstance 函数的代码: BOOL CTest2App::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); AfxEnableControlContainer(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); CTest2Dlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: 在此放置处理何时用 // “确定”来关闭对话框的代码 } else if (nResponse == IDCANCEL) { // TODO: 在此放置处理何时用 // “取消”来关闭对话框的代码 } // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, // 而不是启动应用程序的消息泵。 return FALSE; } 不知道是不是这里导致的
bsnry 2012-12-19
  • 打赏
  • 举报
回复
引用 5 楼 bsnry 的回复:
引用 4 楼 fishion 的回复:不会初始化com,是不是你在什么地方调用了CoInitialize了,不然调用组件肯定是失败的 确实没有,会不会是类型库压根就不需要。 加载的word的类型库
包装类的方式
bsnry 2012-12-19
  • 打赏
  • 举报
回复
引用 4 楼 fishion 的回复:
不会初始化com,是不是你在什么地方调用了CoInitialize了,不然调用组件肯定是失败的
确实没有,会不会是类型库压根就不需要。 加载的word的类型库
fishion 2012-12-19
  • 打赏
  • 举报
回复
不会初始化com,是不是你在什么地方调用了CoInitialize了,不然调用组件肯定是失败的

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧