DdeClientTransaction 函数 (ddeml.h)

开始客户端和服务器之间的数据事务。 只有动态数据交换 (DDE) 客户端应用程序才能调用此函数,并且应用程序只能在与服务器建立会话后使用它。

语法

HDDEDATA DdeClientTransaction(
  [in, optional]  LPBYTE  pData,
  [in]            DWORD   cbData,
  [in]            HCONV   hConv,
  [in, optional]  HSZ     hszItem,
  [in]            UINT    wFmt,
  [in]            UINT    wType,
  [in]            DWORD   dwTimeout,
  [out, optional] LPDWORD pdwResult
);

参数

[in, optional] pData

类型: LPBYTE

客户端必须传递到服务器的数据的开头。

(可选)应用程序可以指定要传递到服务器的 HDDEDATA) (数据句柄,在这种情况下, cbData 参数应设置为 -1。 仅当 wType 参数 XTYP_EXECUTEXTYP_POKE时才需要此参数。 否则,此参数应为 NULL

对于此参数的可选用法, XTYP_POKEpData 是数据句柄的事务,该句柄必须由之前调用 DdeCreateDataHandle 函数创建,并且采用 wFmt 参数中指定的相同数据格式。

[in] cbData

类型:DWORD

如果数据是字符串,则 pData 参数指向的数据的长度(包括终止 NULL)。 值为 -1 表示 pData 是标识所发送数据的数据句柄。

[in] hConv

类型: HCONV

要在其中发生事务的会话的句柄。

[in, optional] hszItem

类型: HSZ

事务期间要为其交换数据的数据项的句柄。 此句柄必须由之前对 DdeCreateStringHandle 函数的调用创建。 (忽略此参数,如果XTYP_EXECUTE wType 参数,则应将此参数设置为 0L )

[in] wFmt

类型: UINT

提交或请求数据项的标准剪贴板格式。

如果 wType 参数指定的事务未传递数据或 XTYP_EXECUTE,则此参数应为零。

如果 wType 参数指定的事务引用非执行 DDE 数据 ( XTYP_POKEXTYP_ADVSTARTXTYP_ADVSTOPXTYP_REQUEST) , 则 wFmt 值必须是有效的预定义 (CF_) DDE 格式或有效的已注册剪贴板格式。

[in] wType

类型: UINT

事务类型。 此参数的取值可为下列值之一:

含义
XTYP_ADVSTART
0x1030
开始建议循环。 会话中可以存在任意数量的不同建议循环。 应用程序可以通过将 XTYP_ADVSTART 事务类型与以下一个或多个标志组合来更改建议循环类型:
  • XTYPF_NODATA。 指示服务器通知客户端任何数据更改,而无需实际发送数据。 此标志使客户端可以选择忽略通知或从服务器请求更改的数据。
  • XTYPF_ACKREQ。 指示服务器等待,直到客户端确认它收到了上一个数据项,然后再发送下一个数据项。 此标志可防止快速服务器发送数据的速度超过客户端处理数据的速度。
XTYP_ADVSTOP
0x8040
结束建议循环。
XTYP_EXECUTE
0x4050
开始执行事务。
XTYP_POKE
0x4090
开始戳事务。
XTYP_REQUEST
0x20B0
开始请求事务。

[in] dwTimeout

类型:DWORD

客户端在同步事务中等待服务器应用程序响应的最长时间(以毫秒为单位)。 应为异步事务 TIMEOUT_ASYNC 此参数。

[out, optional] pdwResult

类型: LPDWORD

指向接收事务结果的变量的指针。 不检查结果的应用程序可以为此值使用 NULL。 对于同步事务,此变量的低序字包含事务产生的任何适用的DDE_标志。 这为依赖于 DDE_APPSTATUS 位的应用程序提供支持。 但是,建议应用程序不再使用这些位,因为它们在 动态数据交换管理库 (DDEML) 的未来版本中可能不受支持。 对于异步事务,此变量使用唯一的事务标识符填充,以便与 DdeAbandonTransaction 函数和 XTYP_XACT_COMPLETE 事务一起使用。

返回值

类型: HDDEDATA

如果函数成功,则返回值是一个数据句柄,用于标识客户端需要服务器数据的成功同步事务的数据。 对于成功的异步事务和客户端不需要数据的同步事务,返回值为非零值。 对于所有不成功的事务,返回值为零。

DdeGetLastError 函数可用于获取错误代码,该错误代码可以是以下值之一:

注解

当应用程序使用 完 DdeClientTransaction 返回的数据句柄后,应用程序应通过调用 DdeFreeDataHandle 函数释放句柄。

事务可以是同步的,也可以是异步的。 在同步事务期间,在事务成功完成或失败之前 ,DdeClientTransaction 不会返回 。 同步事务会导致客户端在等待各种异步事件时进入模式循环。 因此,客户端应用程序在等待同步事务时仍可以响应用户输入,但由于与第一个事务关联的活动,应用程序无法开始第二个同步事务。 如果同一任务的任何实例已在进行同步事务,则 DdeClientTransaction 将失败。

在异步事务期间, DdeClientTransaction 在事务开始后返回 ,并传递事务标识符以供参考。 当服务器的 DDE 回调函数处理完异步事务时,系统会向客户端发送 XTYP_XACT_COMPLETE 事务。 此事务为客户端提供它通过调用 DdeClientTransaction 启动的异步事务的结果。 客户端应用程序可以通过调用 DdeAbandonTransaction 函数来选择放弃异步事务。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 ddeml.h (包括 Windows.h)
Library User32.lib
DLL User32.dll

请参阅

概念性

DdeAbandonTransaction

DdeAccessData

DdeConnect

DdeConnectList

DdeCreateDataHandle

DdeCreateStringHandle

DdeFreeDataHandle

动态数据交换管理库

引用

XTYP_ADVSTART

XTYP_ADVSTOP

XTYP_EXECUTE

XTYP_POKE

XTYP_REQUEST