Категории
От: SergH Россия  
Дата: 28.09.02 13:08
Оценка: 33 (2)
Здравствуйте.

Сижу, разбираюсь с категориями. Вроде всё просто, однако, работает не всё...

Вопрос №1:
При перечислении всех категорий через IEnumCATEGORYINFO перечисляются несколько категорий (штук десять), после чего очережой вызов Next заканчивается ошибкой E_OUTOFMEMORY. Если попытаться получить все скопом, в массив, то результат тот же, только сразу.

Внимательное изучение реестра дало следующее (я чуть не обалдел):

HKEY_CLASSES_ROOT\Component Categories\
    ... разные категории, которые нормально перечисляются...

    {7DD95801-9882-11CF-9FA9-00AA006C42C4  - вот тут IEnumCATEGORYINFO->Next падает. И я даже не удивлён этим...
         409 Controls that are safely scriptable
    {7DD95801-9882-11CF-9FA9-00AA006C42C4}
         409 Controls that are safely scriptable
         800 Safe for scripting
    {7DD95802-9882-11CF-9FA9-00AA006C42C4
         409 Controls safely initializable from persistent data
    {7DD95802-9882-11CF-9FA9-00AA006C42C4}
         409 Controls safely initializable from persistent data
         800 Safe for initializing

    ... разные категории, которые выглядят нормально...


OleView, не сомневаясь в своей правоте, отображает всё (если встать на Grouped by Component Categories), видимо черпает информацию прямо из реестра, без ICatInformation... Но там, где показывает компоненты в категориях он тоже не видит ни одной категории после сбойной.

Всё это в Win 2000 Pro.

Собственно, вопрос: насколько это нормально и что с этим делать?

Вопрос №2:
Некоторые категории имеют несколько строчек с описением. Например

HKEY_CLASSES_ROOT\Component Categories\{40FC6ED3-2438-11CF-A3DB-080036F12502}
    409 Embeddable Objects
    800 Insertable


Мне при перечислении возвращается тольк "Insertable", а OleView показывает "Embeddable Objects". Почему такая разница, можно ли получить все варианты описания? И как для своей категории задать несколько вариантов?
Делай что должно, и будь что будет
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.