C++ 程序在应用主题方法上崩溃
C++ Program crash on ApplyTheme method
我正在学习基于此示例代码C++PowerPoint自动化
http://code.msdn.microsoft.com/office/CppAutomatePowerPoint-024b696c/sourcecode?fileId=52793&pathId=1940694257
一切对我来说都很清楚,但是当我尝试将默认模板更改为保存在磁盘上的自定义模板时,我遇到了问题。我写了以下行:
AutoWrap(DISPATCH_METHOD, NULL, pPres, L"ApplyTheme", 1, L"D:\template.thmx" );
这是从VBA复制的这条工作线:
Call pptPres.ApplyTheme("D:template.thmx")
问题是应用程序在此行上崩溃。
编辑:
找到了问题(愚蠢的问题),但修复后程序仍然崩溃。
pPres 应该是演示文稿的类型,而不是演示文稿(演示文稿的集合)。
现在的问题出在自动换行函数中的这一行(上面的链接中提供了完整的代码)
// Make the call
hr = pDisp->Invoke(dispID, IID_NULL, LOCALE_SYSTEM_DEFAULT,
autoType, &dp, pvResult, NULL, NULL);
在达到该行后,我在 mlock.c 的 _unlock 中在 LeaveCriticalSection 上收到未经处理的异常和应用程序中断。
从您给我们的示例中,您不能将 wchar_t* 字符串作为要在 AutoWrap 中调用的函数参数传递,您需要将其打包为 BSTR 类型,其内存布局与 wchar_t* 字符串的内存布局不同,因此会导致崩溃。
正确的方法是在您给我们的示例中:
VARIANT x;
x.vt = VT_BSTR;
x.bstrVal = SysAllocString(L"All-In-One Code Framework");
AutoWrap(DISPATCH_PROPERTYPUT, NULL, pTxtRange, L"Text", 1, x);
VariantClear(&x);
相关文章:
- 将方法转换为调用该方法的成员函子对象会导致崩溃
- 类指针方法崩溃程序
- 使用push_back方法获取智能指针矢量时应用崩溃
- 在崩溃时释放分配的指针的正确方法
- 具有协变返回类型的方法在 VC++ 上崩溃
- C++ 程序在应用主题方法上崩溃
- 这种遍历二叉树的递归方法在一些递归后崩溃!为什么?
- 为什么我的C++程序有时会在离开方法时崩溃
- 我的 Word Addin 在调用 IDTExtensibility2 的 OnDisconnection 方法后崩溃
- 使用成员编写移动构造函数的正确方法unique_ptr(崩溃)
- QTimer 在以单独的方法启动时崩溃
- Push_back指针向量的方法会导致崩溃C++
- OpenGL - 重新排序渲染方法后崩溃
- 获取方法上的代码崩溃,C++
- Android JNI :调用对象方法时应用程序崩溃
- C# 应用程序在对 COM 类的方法调用时崩溃
- 调用不访问 null 对象指针上数据的方法有时有效,有时崩溃。为什么它不总是崩溃?
- 带有自定义对象的矢量:当我想使用用.at方法接收的矢量时崩溃
- 同名类之间的共享 vtables:强制转换为基类型时,对虚拟方法的调用崩溃
- 类的实例只允许1个方法或程序崩溃