| FAQ по Visual Basic |
| Содержание / Разное |
|
|
§ 8.2. Использование Type Library
С помощью Type Library можно описать структуры, интерфейсы и импортируемые функции (разумеется, и многое еще, но в данной статье будут рассмотрены только эти наиболее часто употребимые типы). Описание cтруктуры (User Defined Type) в Type Library позволяет обойти следующие трудности, возникающие в проекте Standard Exe:
Интерфейсы чаще всего описываются в Type Library для последующего их использования с ключевым словом Implements. И, наконец, описание импортируемых функций в Type Library дает следующие преимущества:
Чтобы скомпилировать Type Library, нужно воспользоваться утилитой midl. Файлы с исходным кодом для Type Library обычно имеют расширение idl (interface definition library) или odl (object definition library). Язык описания Type Library очень похож на Си. Вот пример, который поможет вам написать и свою библиотеку типов:
[
uuid(384A0C85-B593-4834-B48B-24BB82707973),
helpstring("My Type Library"),
version(1.0)
]
library MyTLB
{
importlib("stdole2.tlb");
typedef [uuid(97F7AAC4-48D5-4E17-854E-E6A8D73D3178), version(1.0)]
struct MyUDT
{
BSTR Name;
LONG Hash;
} MyUDT;
typedef struct SECURITY_ATTRIBUTES {
long nLength;
long lpSecurityDescriptor;
long bInheritHandle;
} SECURITY_ATTRIBUTES;
[dllname("kernel32.dll")]
module Kernel32
{
[entry("SetEvent")]
LONG SetEvent(
[in] LONG hEvent);
[entry("CreateEventA"), helpstring("Создание Event'а")]
LONG CreateEventA(
[in] LPVOID lpEventAttributes,
[in] LONG bManualReset,
[in] LONG bInitialState,
[in] LPSTR lpName);
[entry("CreateEventW"), helpstring("Создание Event'а")]
LONG CreateEventW(
[in] LPVOID lpEventAttributes,
[in] LONG bManualReset,
[in] LONG bInitialState,
[in] LPWSTR lpName);
};
[
odl,
uuid(720E80D2-54A3-42f1-947D-7AD8610070A3),
version(1.0),
hidden,
dual,
nonextensible,
oleautomation
]
interface ICallback : IDispatch {
[id(0x68030000)]
HRESULT FileProcessed(
[in] BSTR FileName,
[out, retval] VARIANT_BOOL *pBreak);
};
};
Все GUID'ы должны быть разными. Можно воспользоваться утилитой guidgen для их генерации. Итак, в этой библиотеке типов описаны структура SECURITY_ATTRIBUTES, две версии функции CreateEvent и интерфейс ICallback. Таблица соответствий типов:
Аргументы, которые передаются только внутрь функции и должны
уничтожаться вызывающим кодом, маркируются как Более подробное описание синтаксиса idl-файла вы можете найти в справке утилиты midl.
Автор: |
||||||||||||||||||||||||||
| Предыдущий раздел |
| © 2004. При цитировании, пожалуйста, не забудьте поставить ссылку на оригинальную страницу. |