Чтение онлайн

ЖАНРЫ

Программирование на Visual C++. Архив рассылки

Jenter Алекс

Шрифт:

[in] ULONG cRequired,

[in,unique,size_is(cRequired)] CATID rgcatidReq[],

[out] IEnumCLSID** ppenumClsid);

 [local]

 HRESULT IsClassOfCategories([in] REFCLSID rclsid,

[in] ULONG cImplemented,

[in,size_is(cImplemented)] CATID rgcatidImpl[],

[in] ULONG cRequired,

[in,size_is(cRequired)] CATID rgcatidReq[]);

 [call_as(IsClassOfCategories)]

 HRESULT RemoteIsClassOfCategories([in] REFCLSID rclsid,

[in] ULONG cImplemented,

[in,unique,size_is(cImplemented)] CATID rgcatidImpl[],

[in] ULONG cRequired,

[in,unique,size_is(cRequired)] CATID rgcatidReq[]);

 HRESULT EnumImplCategoriesOfClass([in] REFCLSID rclsid,

[out] IEnumCATID** ppenumCatid);

 HRESULT EnumReqCategoriesOfClass([in] REFCLSID rclsid,

[out] IEnumCATID** ppenumCatid);

}

C#

[ComImport, Guid("0002E000-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

 public interface IEnumGUID {

 [PreserveSig]

 int Next([In] uint celt,

[Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] Guid[] rgelt,

[Out] out uint pceltFetched);

 [PreserveSig]

 int Skip([In] uint celt);

 void Reset;

 [return : MarshalAs(UnmanagedType.Interface)]

 IEnumGUID Clone;

};

[ComImport, Guid("0002E011-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

public interface IEnumCATEGORYINFO {

 [PreserveSig]

 int Next([In] uint celt,

[Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] CATEGORYINFO[] rgelt,

[Out] out uint pceltFetched);

 [PreserveSig]

 int Skip([In] uint celt);

 void Reset;

 [return : MarshalAs(UnmanagedType.Interface)]

 IEnumCATEGORYINFO Clone;

};

[ComImport, Guid("0002E013-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

public interface ICatInformation {

 [return : MarshalAs(UnmanagedType.Interface)]

 IEnumCATEGORYINFO EnumCategories([In] uint lcid);

 [return : MarshalAs(UnmanagedType.LPWStr)]

 String GetCategoryDesc([In] ref Guid rcatid, [In] uint lcid);

 [return : MarshalAs(UnmanagedType.Interface)]

 IEnumGUID EnumClassesOfCategories([In] uint cImplemented,

[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] Guid[] rgcatidImpl,

[In] uint cRequired,

[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=2)] Guid[] rgcatidReq);

 [return : MarshalAs(UnmanagedType.Interface)]

 IEnumGUID RemoteEnumClassesOfCategories([In] uint cImplemented,

[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] Guid[] rgcatidImpl,

[In] uint cRequired,

[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=2)] Guid[] rgcatidReq);

 [PreserveSig]

 int IsClassOfCategories([In] ref Guid rclsid,

[In] uint cImplemented,

[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] Guid[] rgcatidImpl,

[In] uint cRequired,

[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=2)] Guid[] rgcatidReq);

 [PreserveSig]

 int RemoteIsClassOfCategories([In] ref Guid rclsid,

[In] uint cImplemented,

[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] Guid[] rgcatidImpl,

[In] uint cRequired,

[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=2)] Guid[] rgcatidReq);

 [return : MarshalAs(UnmanagedType.Interface)]

 IEnumGUID EnumImplCategoriesOfClass([In] ref Guid rclsid);

 [return : MarshalAs(UnmanagedType.Interface)]

 IEnumGUID EnumReqCategoriesOfClass([In] ref Guid rclsid);

};
 

Описание
классов

Для описания классов также используются атрибуты ComImport и Guid. Классы с атрибутом ComImport не могут иметь никаких данных и методов.

Пример описания класса

IDL

Описание отсутствует 

C#

[ComImport, Guid("0002E005-0000-0000-C000-000000000046")]

public class StdComponentCategoriesMgr{};
 

Пример использования класса

C#

using System;

using System.ComponentModel;

using System.Runtime.InteropServices;

using ComCatWrapper;

public class Test {

 static void Main {

StdComponentCategoriesMgr mgr = new StdComponentCategoriesMgr;

ICatInformation catInfoItf = (ICatInformation)mgr;

IEnumCATEGORYINFO enumCInfoItf = сatInfoItf.EnumCategories(0);

Поделиться с друзьями: