Re[19]: ActiveX и Word.
От: Dima2  
Дата: 07.08.01 15:20
Оценка:
Здравствуйте VladD2, вы писали:

VD>А про остольное ... ну слова, слова если кому интересно могу выслать исходники, провда они по большей части авто-генеренные.


Вышли если не тяжело, dima@sbarcode.com
Re[20]: ActiveX и Word.
От: Dima2  
Дата: 08.08.01 19:25
Оценка:
Ну вроде поборол эту заразу.

Ф-я Save все-таки не вызывалась, т.к. IsDirty возвращал E_FAIL (не надо сохранять данные). После изменения своих св-в вручную вызываю
SetDirty(TRUE) или можно m_bRequiresSave = 1;. Может кто-то автоматом
должен вызывать SetDirty() ?

Сохранение св-в делаю руками, т.к. при загрузке и сохранении данных
действительно вылазит какой-то непонятный IDispatch, хотя откуда он
берется ?

Карта св-в сохраняется нормально только для "сырых" св-в (PROP_DATA_ENTRY),
если же св-во необходимо получать через IDispatch (PROP_ENTRY), то ошибка.

PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
// PROP_ENTRY("AlignText", 1, CLSID_NULL)


Да конечно сохранение руками немного некрасиво и объемно по тексту
..........
hr = var.ReadFromStream(pStm);
put_ShowText(var.boolVal);

hr = var.ReadFromStream(pStm);
put_CalcCheck(var.boolVal);
..........

Может кто знает чего вылазит странный IDispatch в Load и Save ?
Я пробовал сам получить IDispatch внутри своего компонента, тоже
вылазит чужой, если получаю IDispatch из другой программы, то
все в порядке ???
Re[21]: ActiveX и Word.
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.08.01 22:11
Оценка:
Здравствуйте 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 лажанулись. Видима агрегируют криво. В том же Ворде, но в формах все (вроде) нормально.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: ActiveX и Word.
От: Dima2  
Дата: 16.12.01 21:29
Оценка:
Здравствуйте 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С фокус теряет
Re[22]: ActiveX и Word.
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.12.01 21:36
Оценка:
Здравствуйте Dima2, Вы писали:

D>Я извиняюсь что возвращаюсь к своим старым баранам, но в MSDN нашел

D>другое решение этой проблемы.

Зря ты извиниешся. Так и нужно поступать. Нашол решение сам... раскажи о этом другим.

D>Кстати в Word(XP) такого нет.


Интересно, а как они подсовывают расширенные свойства? Не угробили ли они что нибудь другое исправляя эту ошибку?

D>А вообще грустно все это. Чем больше работаю с ActiveX, тем

D>больше разочаровываюсь, и прихожу к выводу что чтобы заставить
D>работать контрол так как задумано надо самому написать контейнер
D>к нему

Когда "самом напишеш контейнер", то загрустишь еще больше. Поверь, мы это уже сделали.

D>Сейчас появились проблемы с 1С — Не показывается окно св-в контрола,

D>хотя 1С фокус теряет

А что за всерь "окно св-в контрола"? Страницы свойств что ли?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: ActiveX и Word.
От: Dima2  
Дата: 17.12.01 07:40
Оценка:
Здравствуйте VladD2, Вы писали:

D>>Сейчас появились проблемы с 1С — Не показывается окно св-в контрола,

D>>хотя 1С фокус теряет

VD>А что за всерь "окно св-в контрола"? Страницы свойств что ли?


Да.
Кстати до OnInitDialog ни одной из страниц дело не доходит.
Не знаю как подступиться, чтобы понять где затыкается.
Может вынести в отдельную тему ActiveX и 1С
Re[24]: ActiveX и Word.
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.12.01 19:58
Оценка:
Здравствуйте Dima2, Вы писали:

D>>>Сейчас появились проблемы с 1С — Не показывается окно св-в контрола,

D>>>хотя 1С фокус теряет

VD>>А что за всерь "окно св-в контрола"? Страницы свойств что ли?


D>Да.

D>Кстати до OnInitDialog ни одной из страниц дело не доходит.
D>Не знаю как подступиться, чтобы понять где затыкается.
D>Может вынести в отдельную тему ActiveX и 1С

Тогда нужно смотреть как 1С пытается запросить у тебя информацию о "Страницах свойств".

PS

А он вообще умеет показывать Страницы свойств (ну, у других контролов)?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.