Основы программирования в Win32API. Марапулец Ю.В. - 120 стр.

UptoLike

Составители: 

сможете вызвать функцию DdeUninitialize(), осуществляющую корректное за-
вершение сеанса.
После инициализации сервер должен зарегистрировать имена предлагае-
мых сервисов. Для этой цели служит функция DdeNameService(), которая вы-
зывается с указанием дескриптора строки, содержащей имя сервиса,
и идентификатора экземпляра данного сервиса. По идентификатору экземпля-
ра DDEML узнает о том, какая процедура обратного вызова и какой поток
поддерживают данный сервис:
HDDEDATA DdeMameService (DWORD dwInstID, // идентификатор экземпляра
HSZ hszl, // строка с именем сервиса
HSZ hszRes, // зарезервирован
UINT uFlags // флаги);…
Значение параметра dwInstID возвращается функцией DdeInitialize(). Па-
раметр uFlags может содержать следующие флаги:
DNS REGISTER – регистрация имени сервиса;
DNS UNREGISTER – отмена регистрации имени сервиса; если аргумент
hszl имеет значение NULL,
происходит отмена регистрации всех сервисов дан-
ного сервера;
DNS FILTERON – предотвращает получение сервером сообщений
XTYP_CONNECT
для незарегистрированных сервисов;
DNS FILTEROFF – позволяет серверу получать сообщения XTYP_CONNECT
при вызове любой DDE -программой функции DdeConnect().
Возвращаемый функцией DdeNameService() результат в действительности
представляет собой логическое значение, причем он соответствует ошибке, а
ненулевое значениеуспешному выполнению функции. Но в настоящее время
он имеет тип HDDEDATA,
что позволяет в будущем расширить диапазон зна-
чений этого индикатора.
Если приложение поддерживает более одного сервиса, каждый из них
должен регистрироваться отдельно. Использование для каждого сервиса от-
дельного потока также имеет ряд преимуществ (в частности, в этом случае
обеспечивается неизменность дескриптора экземпляра потока на протяжении
всего времени существования данного сервиса).
«Сердцем» любого DDEML-приложения является функция DdeCallback().
Windows передает ей восемь параметров вызова. Функция DdeCallback() анало-
гична функции WndProc() в том, что возвращаемый ею ответ определяется прило-
жением. Ниже приведен список поступающих в функцию DdeCallback() сооб-
щений с указанием типов ожидаемых ответов (табл. 9.1).
Таблица 9.1
Сообщение Ответ
120
сможете вызвать функцию DdeUninitialize(), осуществляющую корректное за-
вершение сеанса.
    После инициализации сервер должен зарегистрировать имена предлагае-
мых сервисов. Для этой цели служит функция DdeNameService(), которая вы-
зывается с указанием дескриптора строки, содержащей имя сервиса,
и идентификатора экземпляра данного сервиса. По идентификатору экземпля-
ра DDEML узнает о том, какая процедура обратного вызова и какой поток
поддерживают данный сервис:

HDDEDATA DdeMameService (DWORD dwInstID, // идентификатор экземпляра
                        HSZ hszl,   // строка с именем сервиса
                        HSZ hszRes,   // зарезервирован
                        UINT uFlags   // флаги);…

     Значение параметра dwInstID возвращается функцией DdeInitialize(). Па-
раметр uFlags может содержать следующие флаги:
     DNS REGISTER – регистрация имени сервиса;
     DNS UNREGISTER – отмена регистрации имени сервиса; если аргумент
hszl имеет значение NULL, происходит отмена регистрации всех сервисов дан-
ного сервера;
     DNS FILTERON – предотвращает получение сервером сообщений
XTYP_CONNECT для незарегистрированных сервисов;
     DNS FILTEROFF – позволяет серверу получать сообщения XTYP_CONNECT
при вызове любой DDE -программой функции DdeConnect().
     Возвращаемый функцией DdeNameService() результат в действительности
представляет собой логическое значение, причем он соответствует ошибке, а
ненулевое значение – успешному выполнению функции. Но в настоящее время
он имеет тип HDDEDATA, что позволяет в будущем расширить диапазон зна-
чений этого индикатора.
     Если приложение поддерживает более одного сервиса, каждый из них
должен регистрироваться отдельно. Использование для каждого сервиса от-
дельного потока также имеет ряд преимуществ (в частности, в этом случае
обеспечивается неизменность дескриптора экземпляра потока на протяжении
всего времени существования данного сервиса).
     «Сердцем» любого DDEML-приложения является функция DdeCallback().
Windows передает ей восемь параметров вызова. Функция DdeCallback() анало-
гична функции WndProc() в том, что возвращаемый ею ответ определяется прило-
жением. Ниже приведен список поступающих в функцию DdeCallback()       сооб-
щений с указанием типов ожидаемых ответов (табл. 9.1).




                                                                  Таблица 9.1

          Сообщение                               Ответ

                                    120