Сущность технологии COM



Категории компонентов - часть 4


// deindicate a class requires one or more categories // перестаем показывать, требует ли класс одну или более категорий HRESULT UnRegisterClassReqCategones([in] REFCLSID rclsid, [in] ULONG cCategories, [in, size_is(cCategories)] CATID rgcatid[]); }

Для определяемых пользователем СОМ-классов нет необходимости реализовывать этот интерфейс. Он существует единственно для того, чтобы серверы смогли сами зарегистрировать свои категории компонентов с использованием реализации предоставляемого СОМ менеджера категорий компонентов.

В случае примера с Chimp следующий код зарегистрирует правильную информацию о каждой категории:

// get the standard category manager // получим стандартный менеджер категорий

ICatRegister *pcr = 0; HRESULT hr = CoCreateInstance( CLSID_StdComponentCategoriesMgr, 0, CLSCTX_ALL, IID_ICatRegister, (void**)&pcr); if (SUCCEEDED(hr)) { // build descriptions of each category // формируем описания каждой категории CATECORYINFO rgcc[4]; rgcc[0].catid = CATID_Simian; rgcc[1].catid = CATID_Mammal; rgcc[2].catid = CATID_HasOxygen; rgcc[3].catid = CATID_HasWater; rgcc[0].lcid = rgcc[1].lcid = rgcc[2].lcid = rgcc[3].lcid = 0х409; wcscpy(rgcc[0].szDescription, OLESTR("Eats Bananas")); wcscpy(rgcc[1].szDescription, OLESTR("Bears live young")); wcscpy(rgcc[2].szDescription, OLESTR("Provides Oxygen")); wcscpy(rgcc[3].szDescription, OLESTR("Provides Water"));

// register information regarding categories // регистрируем информацию о категориях pcr->RegisterCategories(4, rgcc);

// note that Chimps are Simians and mammals // отметим, что Chimps (шимпанзе) являются Simian // (обезьянами) и Mammal (млекопитающими) CATID rgcid[2]; rgcid[0] = CATID_Simian; rgcid[1] = CATID_Mammal; pcr->RegisterClassImplCategories(CLSID_Chimp, 2, rgcid);

// note that Chimps require Oxygen and Water // отметим, что Chimps (шимпанзе) нуждаются // в кислороде (Oxygen) и воде (Water) rgcid[0] = CATID_HasOxygen; rgcid[1] = CATID_HasWater; pcr->RegisterClassReqCategories(CLSID_Chimp, 2, rgcid); pcr->Release(); }




Содержание  Назад  Вперед