PropertyGrid & COM объекты II
От: Владимир Кананович  
Дата: 26.03.03 08:42
Оценка:
ATL. Создаем COM объект Wizard-ом. Добавляем свойства. В .NET создаем экземпляр и показываем его в PropertyGrid. Свойства есть.

MFC. Тот же путь. Однако, никаким образом свойства объекта не отображаются в PropertyGrid. Хотя врапперы генерятся практически одинаковые.. (Разве что в случае MFC — интерфейс IObjxxx имеет аттрибут InterfaceType = 0x020001, а в ATL — этот аттрибут отсутствует).. Попытка убрать этот аттрибут и пересобрать враппер для объекта, созданного с MFC, не привела к появлению свойств в гриде.

Единственный случай корректного отображения свойств mfc com-объекта — это ActiveX control — но там совсем необычный враппер и т.д.

Может кто сталкивался с подобным? .. и что можно сделать?

(Цель — получить отображение свойств для COM-объекта, созданного c MFC)

Спасибо.

22.12.03 18:33: Перенесено модератором из '.NET' — AVK
Re: PropertyGrid & COM объекты II
От: TK Лес кывт.рф
Дата: 26.03.03 08:47
Оценка:
Здравствуйте, Владимир Кананович, Вы писали:

ВК>ATL. Создаем COM объект Wizard-ом. Добавляем свойства. В .NET создаем экземпляр и показываем его в PropertyGrid. Свойства есть.

ВК>MFC. Тот же путь. Однако, никаким образом свойства объекта не отображаются в PropertyGrid. Хотя врапперы генерятся практически одинаковые.. (Разве что в случае MFC — интерфейс IObjxxx имеет аттрибут InterfaceType = 0x020001, а в ATL — этот аттрибут отсутствует).. Попытка убрать этот аттрибут и пересобрать враппер для объекта, созданного с MFC, не привела к появлению свойств в гриде.
ВК>Единственный случай корректного отображения свойств mfc com-объекта — это ActiveX control — но там совсем необычный враппер и т.д.
ВК>Может кто сталкивался с подобным? .. и что можно сделать?
ВК>(Цель — получить отображение свойств для COM-объекта, созданного c MFC)

Интерфейсы поддерживаемые MFC и ATL объектами одинаковые? у MFC объекта есть библиотека типов и объект предоставляет к ней доступ?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: PropertyGrid & COM объекты II
От: VLK1369  
Дата: 26.03.03 11:10
Оценка:
Здравствуйте, TK, Вы писали:
TK>Интерфейсы поддерживаемые MFC и ATL объектами одинаковые? у MFC объекта есть библиотека типов и объект предоставляет к ней доступ?

Интерфейс диспэтчевый, по паре свойств там и там.. В обоих случаях inproc server. TLB выглядит нормально. Регистрируется. Без проблем находится .Netом.
Также проходят след строки:
m_server.UpdateRegistry(OAT_INPLACE_SERVER);
COleObjectFactory::UpdateRegistryAll();
AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid);

В самом объекте присутствует:
DECLARE_OLETYPELIB
IMPLEMENT_OLETYPELIB

Свойства присутствуют и во враппере и во время дебага из под .НЕТа.. Они доступны для чтения и записи.. Их нет только в PropertyGrid. (

Что интересно, ни один из автоматизирующихся MFC семплов не проявил свои свойства в PropertyGrid. А с ATL такой проблемы нет..
Re[3]: PropertyGrid & COM объекты II
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.03.03 01:10
Оценка:
Здравствуйте, VLK1369, Вы писали:

MFC всю жизнь делала диспачные КОМ-объекты, а АТЛ дуальные. Может в этом дело?
... << RSDN@Home 1.0 beta 4 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: PropertyGrid & COM объекты II
От: VLK1369  
Дата: 27.03.03 07:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>MFC всю жизнь делала диспачные КОМ-объекты, а АТЛ дуальные. Может в этом дело?


Хорошая идея.. Тоже была такая мысль..
Однако, я проверил это до того, как спросил ))..
Но даже стандартный сэмпл ACDUAL не позволяет
PropertyGrid ничего отобразить.
Re[5]: PropertyGrid & COM объекты II
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.03.03 15:15
Оценка:
Здравствуйте, VLK1369, Вы писали:

Попробуй запустить этот дело под отладчиком и скажи перехватывать все исключения. Скорее всего он будет. Ну, а там тип исключени... колстек... Анакрина...
... << RSDN@Home 1.0 beta 4 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.