Как программно сменить файл основного меню?

Автор Тема: Как программно сменить файл основного меню?  (Прочитано 13897 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Алексей КуликАвтор темы

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Добавь сюда вертикалки - и жить станет значительно интереснее :)
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Базовый API один и тот же. :)

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
При помощи COM API можно выгрузить все загруженные в AutoCAD меню, в т.ч. и основное меню. Для этого через MenuGroups нужно выполнить итерацию по каждому объекту MenuGroup, вызывая его экземплярный метод Unload. Основное меню акада так же присутствует в этой коллекции в виде обычного элемента MenuGroup.

Однако после выгрузки всех меню, перерисовка основного окна акада не происходит автоматом. Если ты завершишь работу акада и снова запустишь, то увидишь, что менюшки полностью отсутствуют, однако конечно же перегружать акад для регенерации основного окна автокада - это не "кошерно"...

В своих расширениях я проделывал такой фокус: изменял значение системной переменной, указывающей имя текущего воркспейса, указывая ей в качестве нового значения текущее же значение этой же переменной. Этот фокус проходил на "ура" - происходила перерисовка всего экрана и программно подгруженные мною файлы частичного меню успешно отображались тут же.

Однако такой способ регенерации не пройдёт в случае выгрузки из акада сразу всех меню, т.к. в этом случае и воркспейсов текущих так же не существует, ибо они живут в контексте выгруженных менюшек...

Если кто-нить знает, как в подобной ситуации вызвать полную перерисовку основного окна приложения, то с интересом и сам почитаю. :)

НО!
Если после выгрузки всех менюшек, затем загрузить набор необходимых (через MenuGroups.Load), то воркспейсы появятся (если они определены в составе подгруженных меню) и обозначенный мною выше финт ушами (по теме регенерации) можен снова пригодиться. :)