Збереження і завантаження фігур visio в потік - unmanaged visio

Ця статися розкриває дане повідомлення в microsoft.public.visio.developers newsgroup (яка, до речі, вже померла), і надає інформацію про те, як можна зберігати фігури Visio в зовнішньому джерелі даних, і завантажувати їх назад. Зверніть увагу, що це не має нічого спільного з даними фігур. Про те як використовувати дані фігур, можна прочитати в керівництві по Visio, або в блозі Visio. Тут же розглядається саме завантаження і збереження самих фігур. Загалом, я думаю, ця статися може бути корисна, якщо тільки якщо ви розробляєте що-небудь досить хардконое під Visio =)







Отже, для того, щоб зберегти фігуру в зовнішньому джерелі можна:







Даний блок даних може бути збережений де побажаєте (база даних / пам'ять / файл / що завгодно). Код прикладу просто зберігає його в строкову змінну в base64. Тепер, щоб покласти фігуру назад на діаграму, можна використовувати метод «Drop» у об'єкта Document / Page. Виявляється, ці функції цілком щасливі, якщо в якості параметра їм підсовувати IDataObject, і не вимагаю обов'язково Shape або Master в якості параметра. Отже, щоб покласти збережену фігуру назад потрібно:

- Створити об'єкт, що реалізує інтерфейс IDataObject.
- Коли Visio запросить дані, віддати їх з цього об'єкта.
- Передати його функцію «Drop» (наприклад в Page.Drop)

Для .NET, це все можна зробити з використовуючи клас "DataObject" з .NET Framework, який зробить всю брудну роботу. Основна ідея:

Для С ++ доведеться написати трохи більше (див. Вихідні нижче).

Покращений шаблон проекту для створення інсталятора для Visio на WiX - тепер з WiX Extension