43594 (662702), страница 8
Текст из файла (страница 8)
Если приложение указывает флаг HDATA_APPOWNED в параметре atCmd при вызове функции DdeCreateDataHandle, оно обязательно должно вызывать функцию DdeFreeDataHandle для очистки памяти вне зависимости от того, передавался ли идентификатор данных DDEML или нет. Перед тем как оборвать диалог, приложение должно вызывать функцию DdeFreeDataHandle для очистки всех созданных идентификаторов, но которые так и не были переданы DDEML.
Если приложение еще не передало идентификатор DDE-объекта DDEML, то оно может добавить данные к уже существующему объекту или полностью заменить их в нем. Все эти сервисные функции обслуживаются функцией DdeAddData.
Обычно приложение использует эту функцию для новой инициализации старых не уничтоженных DDE-объектов. После того, как приложение передает идентификатор данных DDEML, DDE-объект, идентифицирующий этот идентификатор НЕ может быть изменен, однако он может быть уничтожен.
Классы транзакций
DDEML содержит четыре класса транзакций. Каждый класс описывается некоторой константой, начинающейся с префикса XCLASS. Эти классы полностью описаны в соответствующем заголовочном файле DDEML. Каждая константа является комбинацией типов транзакций и передается функции обратного вызова приложения, получающего данные от сервера в текущий момент времени.
Вышеописанные классы определяют возвращаемое
значение, которое ожидает получить DDEML от функции
обратного вызова приложения, обрабатывающего данную
транзакцию. Ниже представлена сводная таблица возвращаемых
значений функции обратного вызова, а также типов
транзакций, связанных с каждым из четырех классов
транзакций.
Класс | Возвращ | е значение | Транзакция | |||
XCLASS_BOOL | TRUE или FALSE | TYP_ADVSTART TYP_CONNECT | ||||
XCLASS_DATA | Идентификатор данных, CBR_BLOCK или NULL | XTYP XTYP XTYP | ADVREQ REQUEST WILDCONNECT | |||
XCLASS_FLAGS | Флаг транзакций: DDE_FACK DDE_FNOTPROCESSED DDE_FBUSY | XTYP_ADVDATA XTYP_EXECUTE XTYP_POKE | ||||
XCLASS_NOTIFICATION | Не возвращает | XTYP XTYP XTYP XTYP XTYP XTYP XTYP | ADVSTOP CONNECT_CONFIRM DISCONNECT ERROR REGISTER UNREGISTER XACT_COMPLETE |
Определение ошибок
Если исполнение DDEML-функции завершилось аварийно, приложение может вызвать функцию DdeGetLastError для определения причины сбоя. DdeGetLastError возвращает код ошибки, по-которому можно определить причины фатального завершения DDEML-функции.
-49-
СПИСОК ЛИТЕРАТУРЫ
1. НОРТОН П., ЙАО П. Программирование на Borland C++ в среде Windows: В 2-х томах. Киев:"Диалектика", 1993.
2. Гладков С.А. Фролов Г.В. Программирование в Microsoft Windows:
В 2-х частях. М.:"ДИАЛОГ-МИФИ", 1992.
3. Microsoft Windows Software Development Kit. Version 3. Programmer's Reference, Programming Tools, Windows Extensions.
4. Charles Petzold. Programming Windows. Microsoft Press.
5. Библия Windows 3.X. М.: И.В.К. - Софт, 1992.