imporve:PPT墨迹保存

This commit is contained in:
2025-09-21 08:26:55 +08:00
parent 630b4edf91
commit e9c20255a6
4 changed files with 66 additions and 11 deletions
+4 -4
View File
@@ -174,14 +174,14 @@ namespace Ink_Canvas.Helpers
var manager = GetCurrentManager();
if (manager != null)
{
// 先创建备份
// 保存到管理器
manager.SaveCurrentSlideStrokes(slideIndex, strokes);
// 只有在保存成功后才创建备份
if (!string.IsNullOrEmpty(_currentActivePresentationId))
{
CreateStrokeBackup(_currentActivePresentationId, slideIndex, strokes);
}
// 保存到管理器
manager.SaveCurrentSlideStrokes(slideIndex, strokes);
// 检查是否需要执行定期备份
CheckAndPerformBackup();
+7
View File
@@ -473,6 +473,13 @@ namespace Ink_Canvas.Helpers
return true;
}
// 如果当前页面不是锁定页面,但锁定时间很短(小于50ms),允许写入
// 这样可以确保旧页面的墨迹能够及时保存
if (DateTime.Now - (_inkLockUntil.AddMilliseconds(-InkLockMilliseconds)) < TimeSpan.FromMilliseconds(50))
{
return true;
}
// 只有在快速切换且页面不同时才锁定
return false;
}
+17 -3
View File
@@ -850,10 +850,24 @@ namespace Ink_Canvas.Helpers
// 如果在放映模式,获取放映窗口的演示文稿
if (IsInSlideShow && PPTApplication.SlideShowWindows.Count > 0)
{
var slideShowWindow = PPTApplication.SlideShowWindows[1];
if (slideShowWindow?.View != null)
try
{
return (Presentation)slideShowWindow.View.Slide.Parent;
var slideShowWindow = PPTApplication.SlideShowWindows[1];
if (slideShowWindow?.View != null)
{
return (Presentation)slideShowWindow.View.Slide.Parent;
}
}
catch (COMException comEx)
{
var hr = (uint)comEx.HResult;
if (hr == 0x80048240) // Integer out of range
{
LogHelper.WriteLogToFile($"验证PPT放映窗口失败: {comEx.Message}", LogHelper.LogType.Warning);
// 放映窗口已不存在,返回null
return null;
}
throw; // 重新抛出其他COM异常
}
}