Sagar SLS Ответов: 0

Сохраните диаграмму 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, чтобы отображалось исключение. Или засунуть туда сообщение. Вы говорите, что он бросает исключение, так что вы, должно быть, что-то видели! Вы не помогаете нам помочь вам

0 Ответов