Сохраните диаграмму visio 2016 в формате vsd программно
Я мигрирую на Visio 2016 drawing control из Visio 2010. Когда я сохраняю новый файл как .vsd вне основного приложения Visio, он создает исключение. Однако файл сохраняется в заданном месте. Я сохраняю файл как .vsd для обратной совместимости. Это повлияет на перезагрузку/открытие одного и того же нового файла, и он вызовет исключение. Приведенный ниже фрагмент кода хорошо работает с Visio 2010.
BOOL Doc::SaveAs(vbPath) { success = TRUE; if (!SUCCEEDED(CVisioDocument::SaveAsEx(vbPath, visSaveAsWS))) { success = FALSE; } // Now do a save to get the drawing on the Most Recently Used list short saveRc=0; if (!SUCCEEDED(CVisioDocument::Save(&saveRc))) //exception in Save 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
CHill60
Не хотите ли вы рассказать нам, что такое исключение на самом деле?
Вы пробовали все предложения по ссылке, которую вы дали? Получаете ли вы одни и те же/разные ошибки?
Вы имеете в виду файлы .vsd, но 2016 сохраняет файлы .vsdx - может быть, это ваша проблема?
Sagar SLS
Прямо сейчас я поймал исключение в специальном блоке catch под названием ‘catch all’ catch (...), который можно использовать для перехвата всех типов исключений. Так что не уточняйте, что же было фактическим исключением. Я сообщу вам, если получу этот конкретный тип исключения.
Я не пробовал все предложения, но я верю, что получу то же самое поведение, что и он.
Да, я имею в виду файлы .vsd, и здесь SaveAsEx() однако хранит файл .vsd в заданном местоположении, но Save() дает исключение. Но я не уверен, что 2016 пытается сохранить как .vsdx, и это вызывает проблему.
CHill60
2016 делает использовать .последние. Вы сказали в своем вопросе: "это бросает исключение." Что это за исключение?
Sagar SLS
Я пытался получить подробную информацию об исключении, поймав исключение, но оно всегда выбрасывает catch (...), так что исключение-это неизвестное (не стандартное исключение).
CHill60
Попробуйте удалить свой try-catch, чтобы отображалось исключение. Или засунуть туда сообщение. Вы говорите, что он бросает исключение, так что вы, должно быть, что-то видели! Вы не помогаете нам помочь вам