Ноя
3
Потерянный ms word addin или ососбенности ms идентификации
Ноябрь 3, 2007 |
Столкнулся с аздачей написания своей панели инструментов с несколькими кнопками для MS Word. В качестве среды разработки использовалась VS2005. Для начала был найден пример создания панели инструментов для офиса и сделан проект по образу и подобию. И вот уже при запуске ворд показывает самодельную панель инструментов с кнопкой, а по клику по кнопке выдает ”Hello World” =) Но не все так гладко как казалось…
Пока шла работа с первым экземпляром ворда - все работало, кнопка кликалась, сообщение показывалось. Но как только по Ctrl-N создавался новый экземпляр окна ворда - в нем по нажатию на кнопку сообщение уже не отображалось. Наверное создается новый экземляр и к нему не привязывается обработчик события, подумал я. Но небольшой отладочный процесс показал что это не так. Кроме того, переставала работать и кнопка в первом окне, где уж точно был рабочий экземпляр.
Копание в недрах выдачи гугла привело к ничем не примечательному свойству кнопки tag. Как человек, учивший одним из первых языков паскаль, а затем и Delphi, всегда думал что свойство tag является необязательным и используется в собственных целях. Оказалось я глубоко заблуждался =) Стоило добавить строчку
MyButton.Tag = "CoolMyButton";
при инициализации кнопки и все проблемы с несрабатыванием обработчика клика чудесным образом пропали. Получается MS Word использует свойство tag объектов чтобы не запутаться в своих кнопках =)

