Force Powerpoint主窗口更新

时间:2012-01-19 17:16:45

标签: .net winapi vsto ms-office powerpoint

我在VSTO中有一个Powerpoint AddIn,可以执行一些操作,例如从模板导入幻灯片。

为方便用户使用WithWindow = MsoTriState.msoFalse打开模板

插入幻灯片后,幻灯片窗格不会刷新。

我尝试了一些类似RedrawWindow的WinAPI调用,但它不起作用

如何强制整个powerpoint的窗口刷新?

2 个答案:

答案 0 :(得分:0)

调用表示对象的NewWindow方法。这是一个VBA示例:

Sub ShowYourStuff()

    Dim oPres As Presentation
    Set oPres = Presentations.Add(msoFalse)
    oPres.Slides.Add 1, ppLayoutChart
    oPres.Slides.Add 1, ppLayoutFourObjects

    MsgBox "Ready to show the user stuff?"

    oPres.NewWindow

End Sub

答案 1 :(得分:0)

我想我已经使用了InvalidateRect来强制PowerPoint重新绘制窗口,但是如果将它与空矩形一起使用则要记得有困难。

你可以试试这个

<StructLayout(LayoutKind.Sequential)> _
Public Structure RECT
    Public left As Integer
    Public top As Integer
    Public right As Integer
    Public bottom As Integer
End Structure

...
Dim windowRect As RECT
GetWindowRect(New IntPtr(Application.HWND), windowRect)
InvalidateRect(New IntPtr(Application.HWND), New Rectangle(0, 0, windowRect.right - windowRect.left, windowRect.bottom - windowRect.top), True)