C++程序崩溃
我在学习这个示例代码C++程序崩溃
一切看起来都清楚地知道C++的PowerPoint自动化筑底,但我有,当我试图改变默认的问题我的自定义模板保存在磁盘上的模板。我写了下面一行:
AutoWrap(DISPATCH_METHOD, NULL, pPres, L"ApplyTheme", 1, L"D:\\template.thmx");
这是VBA这个工作线的再现:
Call pptPres.ApplyTheme("D:\template.thmx")
的问题是,应用程序在该行崩溃。
编辑:
发现问题(笨一个),但将其固定后,仍然程序崩溃。
pPres应该是演示文稿类型,而不是演示文稿(它是演示文稿的集合)。现在
的问题是在这条线在AutoWrap功能(全码在上面的链接提供)
// Make the call
hr = pDisp->Invoke(dispID, IID_NULL, LOCALE_SYSTEM_DEFAULT,
autoType, &dp, pvResult, NULL, NULL);
创下该行我得到未处理的异常和应用程式的空档上LeaveCriticalSection在_unlock在mlock.c后。
从你给我们的例子中,你不能传递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);
已经尝试过,结果相同。还尝试过DISPATCH_PROPERTYPUT(在VBA中设置)和DISPATCH_METHOD(在VBA中调用) –
函数“ApplyTheme”的返回类型是什么?作废? – Matt
修复我的错误(我用演示文稿类型而不是演示文稿)和传递字符串作为BSTR完美工作。谢谢 –
什么是错误讯息? – Matt
程序以代码0退出,没有任何错误消息。我不知道是否有任何方法从该行获取错误代码。 –
我已经获得OLE错误代码:0x80020006 –