从PowerPoint API中的CustomLayoutsPtr获取CustomLayoutPtr

Get CustomLayoutPtr from CustomLayoutsPtr in PowerPoint API

本文关键字:获取 CustomLayoutPtr CustomLayoutsPtr 中的 PowerPoint API      更新时间:2023-10-16

我正在尝试加载一个pot文件,并根据需要使用它的布局。

在VBA中,它是这样的:

    Sub setLayout()
    Call LoadDesign
    ActivePresentation.Slides(1).CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(3)
    End Sub
    Sub LoadDesign()
        ActivePresentation.Designs.Load TemplateName:="C:myPptTemplate.pot", Index:=1
    End Sub

在C++中,我尝试过:

    PowerPoint::DesignPtr my_design= my_active_presentation->Designs->Load(as_bstr(template_filename), 1);
    PowerPoint::CustomLayoutsPtr my_layouts = my_design->SlideMaster->CustomLayouts;
    PowerPoint::CustomLayoutPtr my_layout = my_layouts->Item(_variant_t(1));

它在VBA中运行良好,但在C++中则不然。我无法从my_layouts获取CustomLayoutPtr。它抛出一个异常E_INVALIDARG。

如果你能告诉我如何解决这个问题,我将不胜感激。

参考:

MSO API 2007

VS2008

解决方案是使用:

    long i=1;
    _variant_t index(i, VT_I4);

VT_I4 4 4字节带符号整数。

在32位系统上,VT_INT是一个32位有符号整数。

在64位系统上,VT_INT是一个64位有符号整数。

我有一个64位,但VT_INT仍然不起作用。也许是一些内部问题。

希望它能有所帮助。