Поделиться через


Функция DdeInitializeA (ddeml.h)

Регистрирует приложение с помощью библиотеки DDEML . Приложение должно вызывать эту функцию перед вызовом любой другой функции DDEML.

Синтаксис

UINT DdeInitializeA(
  [in, out] LPDWORD     pidInst,
  [in]      PFNCALLBACK pfnCallback,
  [in]      DWORD       afCmd,
            DWORD       ulRes
);

Параметры

[in, out] pidInst

Тип: LPDWORD

Идентификатор экземпляра приложения. При инициализации этот параметр должен указывать на 0. Если функция выполнена успешно, этот параметр указывает на идентификатор экземпляра приложения. Это значение должно передаваться в качестве параметра idInst во всех остальных функциях DDEML, которым оно требуется. Если приложение использует несколько экземпляров библиотеки динамической компоновки DDEML (DLL), приложение должно предоставлять разные функции обратного вызова для каждого экземпляра.

Если pidInst указывает на ненулевое значение, подразумевается повторная инициализация DDEML. В этом случае pidInst должен указывать на допустимый идентификатор экземпляра приложения.

[in] pfnCallback

Тип: PFNCALLBACK

Указатель на определяемую приложением функцию обратного вызова DDE. Эта функция обрабатывает транзакции DDE, отправленные системой. Дополнительные сведения см. в разделе Функция обратного вызова DdeCallback .

[in] afCmd

Тип: DWORD

Набор флагов APPCMD_, CBF_ и MF_ . Флаги APPCMD_ предоставляют специальные инструкции для DdeInitialize. Флаги CBF_ указывают фильтры, которые не позволяют определенным типам транзакций достичь функции обратного вызова. Флаги MF_ указывают типы действий DDE, отслеживаемых приложением мониторинга DDE. Использование этих флагов повышает производительность приложения DDE, устраняя ненужные вызовы функции обратного вызова.

Этот параметр может иметь одно или несколько из следующих значений.

Значение Значение
APPCLASS_MONITOR
0x00000001L
Позволяет приложению отслеживать активность DDE в системе. Этот флаг предназначен для использования приложениями мониторинга DDE. Приложение определяет типы действий DDE для отслеживания путем объединения одного или нескольких флагов монитора с флагом APPCLASS_MONITOR . Дополнительные сведения см. в следующем разделе Примечаний.
APPCLASS_STANDARD
0x00000000L
Регистрирует приложение в качестве стандартного (немониторингового) приложения DDEML.
APPCMD_CLIENTONLY
0x00000010L
Запрещает приложению стать сервером в беседе DDE. Приложение может быть только клиентом. Этот флаг снижает потребление ресурсов DDEML. Он включает функции флага CBF_FAIL_ALLSVRXACTIONS .
APPCMD_FILTERINITS
0x00000020L
Запрещает DDEML отправлять XTYP_CONNECT и XTYP_WILDCONNECT транзакции в приложение до тех пор, пока приложение не создаст свои дескрипторы строк и не зарегистрирует имена служб или не отключит фильтрацию при последующем вызове функции DdeNameService или DdeInitialize . Этот флаг всегда действует, когда приложение вызывает DdeInitialize в первый раз, независимо от того, указывает ли приложение этот флаг. При последующих вызовах DdeInitialize, не указывая этот флаг, отключает фильтры имени службы приложения, но при указании этого параметра включаются фильтры имени службы приложения.
CBF_FAIL_ALLSVRXACTIONS
0x0003f000
Запрещает функции обратного вызова получать транзакции сервера. Система возвращает DDE_FNOTPROCESSED каждому клиенту, который отправляет транзакцию в это приложение. Этот флаг эквивалентен объединению всех флагов CBF_FAIL_.
CBF_FAIL_ADVISES
0x00004000
Запрещает функции обратного вызова получать транзакции XTYP_ADVSTART и XTYP_ADVSTOP . Система возвращает DDE_FNOTPROCESSED каждому клиенту, который отправляет XTYP_ADVSTART или XTYP_ADVSTOP транзакцию на сервер.
CBF_FAIL_CONNECTIONS
0x00002000
Запрещает функции обратного вызова получать XTYP_CONNECT и XTYP_WILDCONNECT транзакции.
CBF_FAIL_EXECUTES
0x00008000
Запрещает функции обратного вызова получать XTYP_EXECUTE транзакции. Система возвращает DDE_FNOTPROCESSED клиенту, который отправляет XTYP_EXECUTE транзакцию на сервер.
CBF_FAIL_POKES
0x00010000
Запрещает функции обратного вызова получать транзакции XTYP_POKE . Система возвращает DDE_FNOTPROCESSED клиенту, который отправляет XTYP_POKE транзакцию на сервер.
CBF_FAIL_REQUESTS
0x00020000
Запрещает функции обратного вызова получать XTYP_REQUEST транзакции. Система возвращает DDE_FNOTPROCESSED клиенту, который отправляет XTYP_REQUEST транзакцию на сервер.
CBF_FAIL_SELFCONNECTIONS
0x00001000
Запрещает функции обратного вызова получать XTYP_CONNECT транзакции из собственного экземпляра приложения. Этот флаг не позволяет приложению установить беседу DDE с собственным экземпляром. Приложение должно использовать этот флаг, если ему нужно взаимодействовать с другими экземплярами себя, но не с самим собой.
CBF_SKIP_ALLNOTIFICATIONS
0x003c0000
Запрещает функции обратного вызова получать уведомления. Этот флаг эквивалентен объединению всех CBF_SKIP_ флагов.
CBF_SKIP_CONNECT_CONFIRMS
0x00040000
Запрещает функции обратного вызова получать уведомления XTYP_CONNECT_CONFIRM .
CBF_SKIP_DISCONNECTS
0x00200000
Запрещает функции обратного вызова получать уведомления XTYP_DISCONNECT .
CBF_SKIP_REGISTRATIONS
0x00080000
Запрещает функции обратного вызова получать уведомления XTYP_REGISTER .
CBF_SKIP_UNREGISTRATIONS
0x00100000
Запрещает функции обратного вызова получать уведомления XTYP_UNREGISTER .
MF_CALLBACKS
0x08000000
Уведомляет функцию обратного вызова при отправке транзакции в любую функцию обратного вызова DDE в системе.
MF_CONV
0x40000000
Уведомляет функцию обратного вызова всякий раз, когда диалог устанавливается или завершается.
MF_ERRORS
0x10000000
Уведомляет функцию обратного вызова при возникновении ошибки DDE.
MF_HSZ_INFO
0x01000000
Уведомляет функцию обратного вызова всякий раз, когда приложение DDE создает, освобождает или увеличивает количество использования дескриптора строки или когда дескриптор строки освобождается в результате вызова функции DdeUninitialize .
MF_LINKS
0x20000000
Уведомляет функцию обратного вызова при каждом запуске или завершении цикла рекомендаций.
MF_POSTMSGS
0x04000000
Уведомляет функцию обратного вызова всякий раз, когда система или приложение отправляет сообщение DDE.
MF_SENDMSGS
0x02000000
Уведомляет функцию обратного вызова всякий раз, когда система или приложение отправляет сообщение DDE.

ulRes

Тип: DWORD

Защищены; значение должно быть равно нулю.

Возвращаемое значение

Тип: UINT

Если функция выполнена успешно, возвращаемое значение будет DMLERR_NO_ERROR.

Если функция завершается сбоем, возвращается одно из следующих значений:

Комментарии

Приложение, использующее несколько экземпляров DDEML, не должно передавать объекты DDEML между экземплярами.

Приложение для мониторинга DDE не должно пытаться выполнять операции DDE (устанавливать беседы, транзакции выдачи и т. д.) в контексте одного экземпляра приложения.

Синхронная транзакция завершается сбоем с ошибкой DMLERR_REENTRANCY , если какой-либо экземпляр той же задачи уже выполняет синхронную транзакцию.

Флаг CBF_FAIL_ALLSVRXACTIONS заставляет DDEML фильтровать все серверные транзакции и может быть изменен последующим вызовом DdeInitialize. Флаг APPCMD_CLIENTONLY не позволяет DDEML создавать ключевые ресурсы для сервера и не может быть изменен последующим вызовом DdeInitialize.

Существует версия ANSI и версия Юникод DdeInitialize. Вызываемая версия определяет тип оконных процедур, используемых для управления беседами DDE (ANSI или Юникод), и значение по умолчанию для элемента iCodePage структуры CONVCONTEXT (CP_WINANSI или CP_WINUNICODE).

Примечание

Заголовок ddeml.h определяет DdeInitialize как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header ddeml.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll

См. также раздел

Общие сведения о библиотеке управления динамического обмена данными