home *** CD-ROM | disk | FTP | other *** search
- //=--------------------------------------------------------------------------=
- // CatHelp.Cpp
- //=--------------------------------------------------------------------------=
- // Copyright 1995 - 1997 Microsoft Corporation. All Rights Reserved.
- //
- // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
- // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
- // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
- // PARTICULAR PURPOSE.
- //=--------------------------------------------------------------------------=
- //
- // contains the Component Category helper functions.
- //
-
- #include "comcat.h"
-
- // Helper function to create a component category and associated description
- HRESULT CreateComponentCategory(CATID catid, WCHAR* catDescription)
- {
-
- ICatRegister* pcr = NULL ;
- HRESULT hr = S_OK ;
-
- hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,
- NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);
- if (FAILED(hr))
- return hr;
-
- // Make sure the HKCR\Component Categories\{..catid...}
- // key is registered
- CATEGORYINFO catinfo;
- catinfo.catid = catid;
- catinfo.lcid = 0x0409 ; // english
-
- // Make sure the provided description is not too long.
- // Only copy the first 127 characters if it is
- int len = wcslen(catDescription);
- if (len>127)
- len = 127;
- wcsncpy(catinfo.szDescription, catDescription, len);
- // Make sure the description is null terminated
- catinfo.szDescription[len] = '\0';
-
- hr = pcr->RegisterCategories(1, &catinfo);
- pcr->Release();
-
- return hr;
- }
-
- // Helper function to register a CLSID as belonging to a component category
- HRESULT RegisterCLSIDInCategory(REFCLSID clsid, CATID catid)
- {
- // Register your component categories information.
- ICatRegister* pcr = NULL ;
- HRESULT hr = S_OK ;
- hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,
- NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);
- if (SUCCEEDED(hr))
- {
- // Register this category as being "implemented" by
- // the class.
- CATID rgcatid[1] ;
- rgcatid[0] = catid;
- hr = pcr->RegisterClassImplCategories(clsid, 1, rgcatid);
- }
-
- if (pcr != NULL)
- pcr->Release();
-
- return hr;
- }
-
- // Helper function to unregister a CLSID as belonging to a component category
- HRESULT UnRegisterCLSIDInCategory(REFCLSID clsid, CATID catid)
- {
- ICatRegister* pcr = NULL ;
- HRESULT hr = S_OK ;
- hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,
- NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);
- if (SUCCEEDED(hr))
- {
- // Unregister this category as being "implemented" by
- // the class.
- CATID rgcatid[1] ;
- rgcatid[0] = catid;
- hr = pcr->UnRegisterClassImplCategories(clsid, 1, rgcatid);
- }
-
- if (pcr != NULL)
- pcr->Release();
-
- return hr;
- }
-