Здравствуйте VladD2, вы писали:
VD>А про остольное ... ну слова, слова если кому интересно могу выслать исходники, провда они по большей части авто-генеренные.
Ф-я Save все-таки не вызывалась, т.к. IsDirty возвращал E_FAIL (не надо сохранять данные). После изменения своих св-в вручную вызываю
SetDirty(TRUE) или можно m_bRequiresSave = 1;. Может кто-то автоматом
должен вызывать SetDirty() ?
Сохранение св-в делаю руками, т.к. при загрузке и сохранении данных
действительно вылазит какой-то непонятный IDispatch, хотя откуда он
берется ?
Карта св-в сохраняется нормально только для "сырых" св-в (PROP_DATA_ENTRY),
если же св-во необходимо получать через IDispatch (PROP_ENTRY), то ошибка.
Может кто знает чего вылазит странный IDispatch в Load и Save ?
Я пробовал сам получить IDispatch внутри своего компонента, тоже
вылазит чужой, если получаю IDispatch из другой программы, то
все в порядке ???
Здравствуйте Dima2, вы писали:
D>Ну вроде поборол эту заразу.
D>Ф-я Save все-таки не вызывалась, т.к. IsDirty возвращал E_FAIL (не надо сохранять данные). После изменения своих св-в вручную вызываю D>SetDirty(TRUE) или можно m_bRequiresSave = 1;. Может кто-то автоматом D>должен вызывать SetDirty() ?
SetDirty(TRUE);
Будет культурнее, чем "m_bRequiresSave = 1" и ни когда не повредит.
D>Может кто знает чего вылазит странный IDispatch в Load и Save ? D>Я пробовал сам получить IDispatch внутри своего компонента, тоже D>вылазит чужой, если получаю IDispatch из другой программы, то D>все в порядке ???
Ну, нормальные Ax-контейнеры должны подменять диспач для реализации таких свойств как:
Name, Left, Top...
Но при встраивании контролов непосредственно в документ в MS лажанулись. Видима агрегируют криво. В том же Ворде, но в формах все (вроде) нормально.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте Dima2, Вы писали:
D>Ну вроде поборол эту заразу.
D>Ф-я Save все-таки не вызывалась, т.к. IsDirty возвращал E_FAIL (не надо сохранять данные). После изменения своих св-в вручную вызываю D>SetDirty(TRUE) или можно m_bRequiresSave = 1;. Может кто-то автоматом D>должен вызывать SetDirty() ?
D>Сохранение св-в делаю руками, т.к. при загрузке и сохранении данных D>действительно вылазит какой-то непонятный IDispatch, хотя откуда он D>берется ?
D>Карта св-в сохраняется нормально только для "сырых" св-в (PROP_DATA_ENTRY), D>если же св-во необходимо получать через IDispatch (PROP_ENTRY), то ошибка.
D> PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4) D> PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4) D>// PROP_ENTRY("AlignText", 1, CLSID_NULL)
D>Да конечно сохранение руками немного некрасиво и объемно по тексту D> .......... D> hr = var.ReadFromStream(pStm); D> put_ShowText(var.boolVal);
D> hr = var.ReadFromStream(pStm); D> put_CalcCheck(var.boolVal); D> ..........
D>Может кто знает чего вылазит странный IDispatch в Load и Save ? D>Я пробовал сам получить IDispatch внутри своего компонента, тоже D>вылазит чужой, если получаю IDispatch из другой программы, то D>все в порядке ???
Я извиняюсь что возвращаюсь к своим старым баранам, но в MSDN нашел
другое решение этой проблемы. Если кому интересно:
PRB: ATL Control Properties Do Not Persist when Embedded in Word
ID: Q241936
Оказалось дейсвительно WORD подсовывает другой IDispatch. Все
контролы Word заворачивает еще в свои обертки и при QueryInterface
подсовывает IDispatch обертки, а не контрола.
Кстати в Word(XP) такого нет.
А вообще грустно все это. Чем больше работаю с ActiveX, тем
больше разочаровываюсь, и прихожу к выводу что чтобы заставить
работать контрол так как задумано надо самому написать контейнер
к нему
Сейчас появились проблемы с 1С — Не показывается окно св-в контрола,
хотя 1С фокус теряет
Здравствуйте Dima2, Вы писали:
D>Я извиняюсь что возвращаюсь к своим старым баранам, но в MSDN нашел D>другое решение этой проблемы.
Зря ты извиниешся. Так и нужно поступать. Нашол решение сам... раскажи о этом другим.
D>Кстати в Word(XP) такого нет.
Интересно, а как они подсовывают расширенные свойства? Не угробили ли они что нибудь другое исправляя эту ошибку?
D>А вообще грустно все это. Чем больше работаю с ActiveX, тем D>больше разочаровываюсь, и прихожу к выводу что чтобы заставить D>работать контрол так как задумано надо самому написать контейнер D>к нему
Когда "самом напишеш контейнер", то загрустишь еще больше. Поверь, мы это уже сделали.
D>Сейчас появились проблемы с 1С — Не показывается окно св-в контрола, D>хотя 1С фокус теряет
А что за всерь "окно св-в контрола"? Страницы свойств что ли?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте VladD2, Вы писали:
D>>Сейчас появились проблемы с 1С — Не показывается окно св-в контрола, D>>хотя 1С фокус теряет
VD>А что за всерь "окно св-в контрола"? Страницы свойств что ли?
Да.
Кстати до OnInitDialog ни одной из страниц дело не доходит.
Не знаю как подступиться, чтобы понять где затыкается.
Может вынести в отдельную тему ActiveX и 1С
Здравствуйте Dima2, Вы писали:
D>>>Сейчас появились проблемы с 1С — Не показывается окно св-в контрола, D>>>хотя 1С фокус теряет
VD>>А что за всерь "окно св-в контрола"? Страницы свойств что ли?
D>Да. D>Кстати до OnInitDialog ни одной из страниц дело не доходит. D>Не знаю как подступиться, чтобы понять где затыкается. D>Может вынести в отдельную тему ActiveX и 1С
Тогда нужно смотреть как 1С пытается запросить у тебя информацию о "Страницах свойств".
PS
А он вообще умеет показывать Страницы свойств (ну, у других контролов)?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.