我正在从Visio 2010迁移到Visio 2016绘图控件。当我在主Visio应用程序外部将新文件另存为.vsd时,将引发异常。但是,文件保存在给定的位置。我将文件另存为.vsd,以实现向后兼容。这将影响重新加载/打开相同的新文件,并引发异常。下面的代码片段与Visio 2010配合良好。
BOOL Doc::SaveAs(vbPath)
{
success = TRUE;
if (!SUCCEEDED(CVisioDocument::SaveAsEx(vbPath, visSaveAsWS))) //SaveAsEx return 0
{
success = FALSE;
}
// Now do a save to get the drawing on the Most Recently Used list
short saveRc=0;
if (!SUCCEEDED(CVisioDocument::Save(&saveRc))) //Get exception here in Save method
ASSERT(0);
return success;
}
CVisioDocument :: SaveAsEx(vbPath,visSaveAsWS)返回“ 0”。这意味着成功保存了新文档。但是,在我尝试之后,CVisioDocument :: Save(&saveRc)会引发异常,因为在保存文档之前,Save方法会生成错误。另一方面,我可以毫无例外地将新文档保存在主Visio应用程序中。该文件正在主Visio应用程序中打开。
所以,您能帮我摆脱上述问题吗?
[我发现有人在Visio 2013中也存在类似的问题,http://visguy.com/vgforum/index.php?topic=4819.0
Visio的文件格式在2013年更改为.vsdx软件包格式,因此从2013年开始保存是一条路。
2013+将以兼容模式打开二进制(.vsd)和平面xml(.vdx)文件,但仅保存为新的包(.vsdx)格式。
为了获得与Visio 2010的向后兼容性,可以安装“ Visio兼容性包”,使2010能够打开较新的程序包格式文件:
https://www.microsoft.com/en-us/download/details.aspx?id=39640