在 Windows API 的 Dynamic Data Exchange Management Library(DDEML)中,MONCONVSTRUCT 结构体用于描述 DDEML 的监视事件中与 DDE 会话相关的信息。以下是 MONCONVSTRUCT 结构体的定义:
typedef struct tagMONCONVSTRUCT {
  UINT   cb;           // 结构体的大小,用于版本控制
  DWORD  dwTime;       // 事件发生的时间
  HANDLE hTask;        // 任务的句柄
  DWORD  dwRet;        // 事件处理的返回值
  UINT   wType;        // 事件类型
  UINT   wFmt;         // 数据格式
  HCONV  hConvClient;  // 客户端 DDE 会话的句柄
  HCONV  hConvServer;  // 服务器端 DDE 会话的句柄
  HSZ    hszSvc;       // 服务名字符串句柄
  HSZ    hszTopic;     // 话题字符串句柄
  HSZ    hszItem;      // 项字符串句柄
  UINT   wFmtConnect;  // 连接请求的数据格式
  UINT   wTypeConnect; // 连接请求的类型
  CONVCONTEXT cc;      // 与事件相关的 DDE 会话的上下文信息
  UINT   iRetry;       // 连接重试次数
  UINT   wStatus;      // 会话的状态
  UINT   wConvst;      // 会话的状态(数值形式)
  UINT   wLastError;   // 最后的错误码
} MONCONVSTRUCT, *PMONCONVSTRUCT;

各个字段的含义如下:

  •  cb: 结构体的大小,用于版本控制。在使用前,需要将这个字段设置为结构体的大小,可以使用 sizeof(MONCONVSTRUCT)。

  •  dwTime: 事件发生的时间。

  •  hTask: 任务的句柄。

  •  dwRet: 事件处理的返回值。

  •  wType: 事件类型,表示 DDE 事件的类型,例如 XTYP_ADVDATA、XTYP_CONNECT 等。

  •  wFmt: 数据格式,表示与事件相关的数据的格式。

  •  hConvClient 和 hConvServer: 客户端和服务器端 DDE 会话的句柄。

  •  hszSvc, hszTopic, hszItem: 服务名、话题和项字符串句柄,用于传递与事件相关的字符串。

  •  wFmtConnect: 连接请求的数据格式。

  •  wTypeConnect: 连接请求的类型。

  •  cc: 与事件相关的 DDE 会话的上下文信息。

  •  iRetry: 连接重试次数。

  •  wStatus: 会话的状态。

  •  wConvst: 会话的状态(数值形式)。

  •  wLastError: 最后的错误码。


这个结构体通常用于在 DDEML 的监视事件回调函数中,提供有关 DDE 会话的详细信息。

以下是一个简单的示例,演示了如何在监视事件的回调函数中使用 MONCONVSTRUCT 结构:
#include <Ddeml.h>

// ...

HDDEDATA CALLBACK DdeCallback(
    UINT   uType,
    UINT   uFmt,
    HCONV  hConv,
    HSZ    hsz1,
    HSZ    hsz2,
    HDDEDATA hData,
    ULONG_PTR dwData1,
    ULONG_PTR dwData2
) {
    if (uType == XTYP_MONITOR) {
        MONCONVSTRUCT* pMonConvData = (MONCONVSTRUCT*)hData;
        // 处理监视事件信息
        // ...
    }

    // 处理其他 DDE 事件

    return NULL;
}

在实际应用中,你需要根据具体的监视事件的需求,使用 MONCONVSTRUCT 结构体中的字段信息。


转载请注明出处:http://www.zyzy.cn/article/detail/26500/Win32 API/Ddeml.h/MONCONVSTRUCT