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

Здесь есть возможность читать онлайн «Алекс Jenter - Программирование на Visual C++. Архив рассылки» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование на Visual C++. Архив рассылки: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование на Visual C++. Архив рассылки»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ
, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.

Программирование на Visual C++. Архив рассылки — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование на Visual C++. Архив рассылки», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Атрибут MarshalAs задает правила передачи параметров, наиболее часто он используется в следующих видах:

• MarshalAs(UnmanagedType.LPWStr)– Unicode-строка. Память под строку распределяется и освобождается через системные функции.

• MarshalAs(UnmanagedType.LPArray, SizeParamIndex=n)– передается одномерный массив, размер массива задается параметром с номером n, нумерация параметров начинается с нуля.

• MarshalAs(UnmanagedType.Interface)– передается COM интерфейс.

Примеры интерфейсов

IDL

[object, uuid(0002E000-0000-0000-C000-000000000046), pointer_default(unique)]

interface IEnumGUID : IUnknown {

HRESULT Next([in] ULONG celt,

[out, size_is(celt), length_is(*pceltFetched)] GUID *rgelt,

[out] ULONG *pceltFetched);

HRESULT Skip([in] ULONG celt);

HRESULT Reset();

HRESULT Clone([out] IEnumGUID **ppenum);

}

[object, uuid(0002E011-0000-0000-C000-000000000046), pointer_default(unique)]

interface IEnumCATEGORYINFO : IUnknown {

HRESULT Next([in] ULONG celt,

[out, size_is(celt), length_is(*pceltFetched)] CATEGORYINFO *rgelt,

[out] ULONG *pceltFetched);

HRESULT Skip([in] ULONG celt);

HRESULT Reset();

HRESULT Clone([out] IEnumCATEGORYINFO **ppenum);

}

[object, uuid(0002E013-0000-0000-C000-000000000046), pointer_default(unique)]

interface ICatInformation : IUnknown {

HRESULT EnumCategories([in] LCID lcid,

[out] IEnumCATEGORYINFO** ppenumCategoryInfo);

HRESULT GetCategoryDesc([in] REFCATID rcatid,

[in] LCID lcid,

[out] LPWSTR* pszDesc);

[local]

HRESULT EnumClassesOfCategories([in] ULONG cImplemented,

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

[in] ULONG cRequired,

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

[out] IEnumCLSID** ppenumClsid);

[call_as(EnumClassesOfCategories)]

HRESULT RemoteEnumClassesOfCategories([in] ULONG cImplemented,

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

[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")]

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Программирование на Visual C++. Архив рассылки» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Алексей Макеев - Смертельный архив
Алексей Макеев
libcat.ru: книга без обложки
Алексей Апухтин
Отзывы о книге «Программирование на Visual C++. Архив рассылки»

Обсуждение, отзывы о книге «Программирование на Visual C++. Архив рассылки» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x