DDE服务器应用程序将一个WM_DDE_DATA消息发送到DDE客户端应用程序,以将数据项传递给客户端或通知客户数据项的可用性。
WM_DDE_DATA
wParam = (WPARAM) hwnd; //发布应用程序的句柄
lParam = (LPARAM) lPackedVal; //打包DDEDATA和项目原子
参数
【HWND】
价值【wParam中】.标识发布消息的服务器窗口。
【lPackedVal】
价值【lParam的】.通过调用UnpackDDElParam函数提取打包到【lPackedVal】中的组件参数。低位字是【HDATA】或NULL。高阶词是【项目】.
参数 | 描述 |
【HDATA】 | 标识包含数据和附加信息的DDEDATA结构的全局内存对象。如果服务器通知客户端在热数据链接期间数据项值已更改,那么句柄应设置为NULL。客户端发送WM_DDE_ADVISE位设置的WM_DDE_ADVISE消息建立一个热链接。 |
【项目】 | 包含一个原子,用于标识发送数据或通知的数据项。 |
备注
发帖
服务器应用程序通过调用PostMessage功能而不是SendMessage功能发布WM_DDE_DATA消息。
服务器应用程序通过使用GMEM_DDESHARE选项调用GlobalAlloc函数来分配【HDATA】.它通过调用GlobalAddAtom功能来分配【项目】.
服务器必须通过调用PackDDElParam功能或ReuseDDElParam功能创建或重新使用WM_DDE_DATA 【lPackedVal】功能,并以【HDATA】作为低位字提供【项目】作为高位字。
如果接收(客户端)应用程序使用否定的WM_DDE_ACK消息进行响应,则发布(服务器)应用程序必须删除【HDATA】对象;否则,客户端必须通过调用UnpackDDElParam函数来提取其内容后删除【HDATA】对象。
如果服务器应用程序将DDEDATA结构的fRelease成员设置为FALSE,则服务器负责在收到肯定或否定确认后删除【HDATA】.
服务器应用程序不应将DDEDATA结构的fAckReq和fRelease成员设置为FALSE。如果两个成员都设置为FALSE,则服务器无法确定何时删除【HDATA】.
接收
如果fAckReq为TRUE,则客户端应用程序应发布WM_DDE_ACK消息以进行积极或消极的响应。当发布WM_DDE_ACK时,客户端可以重用【项目】原子,否则可以删除它并创建一个新的。
客户端必须通过调用PackDDElParam函数或ReuseDDElParam作为低位字提供的【wStatuslb】功能创建或重新使用WM_DDE_ACK 【lPackedVal】参数,并以【项目】作为高位字提供。
如果fAckReq为FALSE,则客户端应用程序应删除【项目】原子。
如果发布(服务器)应用程序将【HDATA】指定为NULL,则接收(客户端)应用程序可以通过发布WM_DDE_REQUEST消息来请求服务器发送数据。
在处理其中【HDATA】不为NULL的WM_DDE_DATA消息后,客户端应该释放【HDATA】,除非满足以下条件之一:
* fRelease成员为FALSE。
* fRelease成员为TRUE,但客户端应用程序使用负WM_DDE_ACK消息进行响应。
也可以看看
DDEDATA, FreeDDElParam, GlobalAddAtom, GlobalAlloc, PackDDElParam, PostMessage, ReuseDDElParam, SendMessage, UnpackDDElParam, WM_DDE_ACK, WM_DDE_ADVISE, WM_DDE_POKE, WM_DDE_REQUEST