Можно ли добавить дополнительные GUID для библиотеки типов? - PullRequest
0 голосов
/ 23 августа 2009

У меня есть typelib, которая описывает некоторые интерфейсы. Поскольку некоторые из этих интерфейсов используются в качестве категории, я хочу добавить идентификаторы категорий в библиотеку типов. Итак, вопрос:

а) как это можно сделать в Delphi (2007 и выше)?

или как альтернатива

б) Можно ли и желательно использовать GUID интерфейса для CATID?

1 Ответ

1 голос
/ 23 августа 2009

Для а) я не знаю Delphi. Но в C ++ это просто добавление описания интерфейса в файл MIDL. Поскольку вы, похоже, действительно используете только интерфейс, вам, вероятно, также не нужна реализация CoClass, так что этого уже будет достаточно. Как вы добавили другие интерфейсы в библиотеку типов? Сделай то же самое сейчас.

[править] Я нашел краткое руководство по использованию typelib-editor . Похоже, что добавление интерфейсов зависит только от правильного ключевого слова. [/ Edit]

Что касается б), я не вижу проблем с использованием интерфейсов в качестве идентификатора категории, но этот вопрос немного расплывчатый ... Поскольку набор возможных категорий фиксирован, и вы не используете какое-либо наследование, например поведение (по крайней мере, я так думаю, поскольку вы сказали, что используете GUID интерфейса, а не сам интерфейс), почему бы просто не использовать перечислитель? Использование интерфейсов и т. Д. Кажется слишком сложным решением, за исключением случаев, когда интерфейсы действительно используются как таковые, то есть обеспечивают доступ к некоторому поведению, характерному для категории.

[править] Когда вы говорите о ICatRegister и др., Я понимаю, почему вы хотите использовать GUID. Поскольку GUID категории находятся в другом пространстве имен, чем GUID интерфейса COM, обязательно используйте то же самое. В любом случае GUID вашего интерфейса должен быть уникальным в той же области, что и идентификаторы категорий, и наличие сопоставления 1: 1 кажется простой моделью для обслуживания. [/ Edit]

...