Составители:
по возможности, должен выполнить команду из функции обратного вызова до того, как
будет возвращен результат.
В ответ на принудительную или командную транзакцию сервер возвращает одно из
трех значений:
DDE_PACK - Данные получены и подтверждены.
DDE_FBUSY - Сервер занят и не может обработать данные или инструкции; повторите
попытку позже.
DDE_FNOTPROCESSED - Данные или инструкции отклонены.
Флаги, установленные в функции DdeInitialize, позволяют отфильтровывать неже-
лательные сообщения о принудительных (флаг CBF_FAIL_POKES) или командных
(флаг CBF_FAIL_EXECUTES) транзакциях для серверов, не поддерживающих эти тран-
закции [12].
8.4.4. Завершение DDE-диалога
При необходимости прекратить DDE-диалог клиент или сервер вызывают либо
функцию DdeDisconnect (завершить указанный диалог), либо функцию DdeDisconnect-
List (завершить группу диалогов). В обоих случаях конкретному приложению или всем
приложениям передается сообщение XTYP_DISCONNECT. Синтаксис вызова функции
DdeDisconpect имеет следующий вид:
DdeDisconnect( hConv );
где параметр hConv представляет собой дескриптор диалога, возвращаемый функцией
DdeConnect. Функция DdeDisconnectList вызывается так:
DdeDisconnectList( hConvList);
где параметр hConvList представляет собой дескриптор, возвращаемый функцией Dde-
ConnectList.
Когда DDEML получает сообщение XTYP_DISCONNECT, все активные в данный
момент транзакции текущего диалога (или диалогов) прекращаются. Согласно догово-
ренности, диалоги могут завершаться только приложениями-клиентами. Однако при
особых обстоятельствах подключения могут разрываться и приложениями-серверами
(например, в случае их закрытия).
Как клиенты, так и серверы должны быть готовы в любой момент получить сооб-
щение о разрыве подключения. При этом они должны закрыть соответствующие струк-
туры данных. В случае закрытия приложения или если оно больше не собирается уста-
навливать подключения к другим приложениям, программа должна отменить
инициализацию всех DDEML-функций обратного вызова.
При вызове функции DdeUninitialize информация о сервисе удаляется из DDEML-
таблиц, все активные в данный момент диалоги прекращаются и происходит рассылка
сообщения XTYP_UNREGISTER всем DDEML-функциям обратного вызова. Этапы
процесса завершения диалога и отключения от DDEML показаны на рис.8.4.
208
по возможности, должен выполнить команду из функции обратного вызова до того, как будет возвращен результат. В ответ на принудительную или командную транзакцию сервер возвращает одно из трех значений: DDE_PACK - Данные получены и подтверждены. DDE_FBUSY - Сервер занят и не может обработать данные или инструкции; повторите попытку позже. DDE_FNOTPROCESSED - Данные или инструкции отклонены. Флаги, установленные в функции DdeInitialize, позволяют отфильтровывать неже- лательные сообщения о принудительных (флаг CBF_FAIL_POKES) или командных (флаг CBF_FAIL_EXECUTES) транзакциях для серверов, не поддерживающих эти тран- закции [12]. 8.4.4. Завершение DDE-диалога При необходимости прекратить DDE-диалог клиент или сервер вызывают либо функцию DdeDisconnect (завершить указанный диалог), либо функцию DdeDisconnect- List (завершить группу диалогов). В обоих случаях конкретному приложению или всем приложениям передается сообщение XTYP_DISCONNECT. Синтаксис вызова функции DdeDisconpect имеет следующий вид: DdeDisconnect( hConv ); где параметр hConv представляет собой дескриптор диалога, возвращаемый функцией DdeConnect. Функция DdeDisconnectList вызывается так: DdeDisconnectList( hConvList); где параметр hConvList представляет собой дескриптор, возвращаемый функцией Dde- ConnectList. Когда DDEML получает сообщение XTYP_DISCONNECT, все активные в данный момент транзакции текущего диалога (или диалогов) прекращаются. Согласно догово- ренности, диалоги могут завершаться только приложениями-клиентами. Однако при особых обстоятельствах подключения могут разрываться и приложениями-серверами (например, в случае их закрытия). Как клиенты, так и серверы должны быть готовы в любой момент получить сооб- щение о разрыве подключения. При этом они должны закрыть соответствующие струк- туры данных. В случае закрытия приложения или если оно больше не собирается уста- навливать подключения к другим приложениям, программа должна отменить инициализацию всех DDEML-функций обратного вызова. При вызове функции DdeUninitialize информация о сервисе удаляется из DDEML- таблиц, все активные в данный момент диалоги прекращаются и происходит рассылка сообщения XTYP_UNREGISTER всем DDEML-функциям обратного вызова. Этапы процесса завершения диалога и отключения от DDEML показаны на рис.8.4. 208
Страницы
- « первая
- ‹ предыдущая
- …
- 204
- 205
- 206
- 207
- 208
- …
- следующая ›
- последняя »