Средства разработки приложений


Отображение библиотеки DDEML в .NET


Библиотека DDEML представляет собой 32-разрядную библиотеку платформы Win32. Ее функции не могут быть вызваны непосредственно из приложения .NET. Для того, чтобы иметь возможность работать с этой библиотекой, нужно создать ее «отображение» в среде .NET, используя специальные средства. Таким образом, типы и структуры, с которыми работает библиотека будут автоматически преобразовываться средствами .NET в типы .NET и наоборот. Для доступа к функциям используется класс DLLImportAttribute, который описан в пространстве имен System.Runtime.InteropServices. Что касается типов параметров функций, как уже было сказано, среда .NET в большинстве случаев автоматически осуществляет все необходимые преобразования. В таблице 1 показаны подобные преобразования:

Win32 .NET
DWORD uint
HCONV IntPtr
HSZ IntPtr
UINT uint
DWORD * ref uint
void* far IntPtr или можно указать [Out] byte[], где [Out] – класс System.Runtime.InteropServices, который организовывает передачу данных от вызываемого объекта к вызывающему.

Для функции обратного вызова необходимо создать делегат, который имеет соответствующую сигнатуру, и указать его в качестве параметра в функции DdeInitialize:

/// <summary>

/// Делегат функции обратного вызова DDE

/// </summary>

internal delegate IntPtr DDECallBackDelegate(

uint wType,            // Код транзакции

uint wFmt,             // Формат данных

IntPtr hConv,          // Идентификатор канала

IntPtr hsz1,           // Идентификатор строки (в нашем случае, строки раздела)

IntPtr hsz2,           // Идентификатор строки (в нашем случае, элемента данных)

IntPtr hData,          // Идентификатор глобальной области данных, где находятся данные




Начало  Назад  Вперед



Книжный магазин