home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / ddeml.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  18KB  |  497 lines

  1.  
  2. /*++ BUILD Version: 0001 // Increment this if a change has global effects --*/
  3.  
  4. /*****************************************************************************\
  5. *                                                                             *
  6. *  ddeml.h -    DDEML API header file                                         *
  7. *                                                                             *
  8. *               Version 3.10                                                  *
  9. *                                                                             *
  10. *               Copyright (c) 1993-1998, Microsoft Corp.  All rights reserved.*
  11. *                                                                             *
  12. \*****************************************************************************/
  13. #ifndef _INC_DDEMLH
  14. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  15. #define _INC_DDEMLH
  16.  
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif /* __cplusplus */
  20.  
  21. /******** public types ********/
  22.  
  23. DECLARE_HANDLE(HCONVLIST);
  24. DECLARE_HANDLE(HCONV);
  25. DECLARE_HANDLE(HSZ);
  26. DECLARE_HANDLE(HDDEDATA);
  27. #define EXPENTRY        CALLBACK
  28.  
  29. /* the following structure is for use with XTYP_WILDCONNECT processing. */
  30.  
  31. typedef struct tagHSZPAIR {
  32.     HSZ hszSvc;
  33.     HSZ hszTopic;
  34. } HSZPAIR;
  35. typedef HSZPAIR FAR *PHSZPAIR;
  36.  
  37. /* The following structure is used by DdeConnect() and DdeConnectList() and
  38.    by XTYP_CONNECT and XTYP_WILDCONNECT callbacks. */
  39.  
  40. typedef struct tagCONVCONTEXT {
  41.     UINT        cb;             /* set to sizeof(CONVCONTEXT) */
  42.     UINT        wFlags;         /* none currently defined. */
  43.     UINT        wCountryID;     /* country code for topic/item strings used. */
  44.     int         iCodePage;      /* codepage used for topic/item strings. */
  45.     DWORD       dwLangID;       /* language ID for topic/item strings. */
  46.     DWORD       dwSecurity;     /* Private security code. */
  47.     SECURITY_QUALITY_OF_SERVICE qos;  /* client side's quality of service */
  48. } CONVCONTEXT;
  49. typedef CONVCONTEXT FAR *PCONVCONTEXT;
  50.  
  51.  
  52. /* The following structure is used by DdeQueryConvInfo(): */
  53.  
  54. typedef struct tagCONVINFO {
  55.     DWORD   cb;            /* sizeof(CONVINFO)  */
  56.     DWORD   hUser;         /* user specified field  */
  57.     HCONV   hConvPartner;  /* hConv on other end or 0 if non-ddemgr partner  */
  58.     HSZ     hszSvcPartner; /* app name of partner if obtainable  */
  59.     HSZ     hszServiceReq; /* AppName requested for connection  */
  60.     HSZ     hszTopic;      /* Topic name for conversation  */
  61.     HSZ     hszItem;       /* transaction item name or NULL if quiescent  */
  62.     UINT    wFmt;          /* transaction format or NULL if quiescent  */
  63.     UINT    wType;         /* XTYP_ for current transaction  */
  64.     UINT    wStatus;       /* ST_ constant for current conversation  */
  65.     UINT    wConvst;       /* XST_ constant for current transaction  */
  66.     UINT    wLastError;    /* last transaction error.  */
  67.     HCONVLIST hConvList;   /* parent hConvList if this conversation is in a list */
  68.     CONVCONTEXT ConvCtxt;  /* conversation context */
  69.     HWND    hwnd;          /* window handle for this conversation */
  70.     HWND    hwndPartner;   /* partner window handle for this conversation */
  71. } CONVINFO;
  72. typedef CONVINFO FAR *PCONVINFO;
  73.  
  74. /***** conversation states (usState) *****/
  75.  
  76. #define     XST_NULL              0  /* quiescent states */
  77. #define     XST_INCOMPLETE        1
  78. #define     XST_CONNECTED         2
  79. #define     XST_INIT1             3  /* mid-initiation states */
  80. #define     XST_INIT2             4
  81. #define     XST_REQSENT           5  /* active conversation states */
  82. #define     XST_DATARCVD          6
  83. #define     XST_POKESENT          7
  84. #define     XST_POKEACKRCVD       8
  85. #define     XST_EXECSENT          9
  86. #define     XST_EXECACKRCVD      10
  87. #define     XST_ADVSENT          11
  88. #define     XST_UNADVSENT        12
  89. #define     XST_ADVACKRCVD       13
  90. #define     XST_UNADVACKRCVD     14
  91. #define     XST_ADVDATASENT      15
  92. #define     XST_ADVDATAACKRCVD   16
  93.  
  94. /* used in LOWORD(dwData1) of XTYP_ADVREQ callbacks... */
  95. #define     CADV_LATEACK         0xFFFF
  96.  
  97. /***** conversation status bits (fsStatus) *****/
  98.  
  99. #define     ST_CONNECTED            0x0001
  100. #define     ST_ADVISE               0x0002
  101. #define     ST_ISLOCAL              0x0004
  102. #define     ST_BLOCKED              0x0008
  103. #define     ST_CLIENT               0x0010
  104. #define     ST_TERMINATED           0x0020
  105. #define     ST_INLIST               0x0040
  106. #define     ST_BLOCKNEXT            0x0080
  107. #define     ST_ISSELF               0x0100
  108.  
  109. /* DDE constants for wStatus field */
  110.  
  111. #define DDE_FACK                0x8000
  112. #define DDE_FBUSY               0x4000
  113. #define DDE_FDEFERUPD           0x4000
  114. #define DDE_FACKREQ             0x8000
  115. #define DDE_FRELEASE            0x2000
  116. #define DDE_FREQUESTED          0x1000
  117. #define DDE_FAPPSTATUS          0x00ff
  118. #define DDE_FNOTPROCESSED       0x0000
  119.  
  120. #define DDE_FACKRESERVED        (~(DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS))
  121. #define DDE_FADVRESERVED        (~(DDE_FACKREQ | DDE_FDEFERUPD))
  122. #define DDE_FDATRESERVED        (~(DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED))
  123. #define DDE_FPOKRESERVED        (~(DDE_FRELEASE))
  124.  
  125. /***** message filter hook types *****/
  126.  
  127. #define     MSGF_DDEMGR             0x8001
  128.  
  129. /***** codepage constants ****/
  130.  
  131. #define CP_WINANSI      1004    /* default codepage for windows & old DDE convs. */
  132. #define CP_WINUNICODE   1200
  133. #ifdef UNICODE
  134. #define CP_WINNEUTRAL   CP_WINUNICODE
  135. #else  // !UNICODE
  136. #define CP_WINNEUTRAL   CP_WINANSI
  137. #endif // !UNICODE
  138.  
  139. /***** transaction types *****/
  140.  
  141. #define     XTYPF_NOBLOCK            0x0002  /* CBR_BLOCK will not work */
  142. #define     XTYPF_NODATA             0x0004  /* DDE_FDEFERUPD */
  143. #define     XTYPF_ACKREQ             0x0008  /* DDE_FACKREQ */
  144.  
  145. #define     XCLASS_MASK              0xFC00
  146. #define     XCLASS_BOOL              0x1000
  147. #define     XCLASS_DATA              0x2000
  148. #define     XCLASS_FLAGS             0x4000
  149. #define     XCLASS_NOTIFICATION      0x8000
  150.  
  151. #define     XTYP_ERROR              (0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
  152. #define     XTYP_ADVDATA            (0x0010 | XCLASS_FLAGS         )
  153. #define     XTYP_ADVREQ             (0x0020 | XCLASS_DATA | XTYPF_NOBLOCK )
  154. #define     XTYP_ADVSTART           (0x0030 | XCLASS_BOOL          )
  155. #define     XTYP_ADVSTOP            (0x0040 | XCLASS_NOTIFICATION)
  156. #define     XTYP_EXECUTE            (0x0050 | XCLASS_FLAGS         )
  157. #define     XTYP_CONNECT            (0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK)
  158. #define     XTYP_CONNECT_CONFIRM    (0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
  159. #define     XTYP_XACT_COMPLETE      (0x0080 | XCLASS_NOTIFICATION  )
  160. #define     XTYP_POKE               (0x0090 | XCLASS_FLAGS         )
  161. #define     XTYP_REGISTER           (0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
  162. #define     XTYP_REQUEST            (0x00B0 | XCLASS_DATA          )
  163. #define     XTYP_DISCONNECT         (0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
  164. #define     XTYP_UNREGISTER         (0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
  165. #define     XTYP_WILDCONNECT        (0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK)
  166.  
  167. #define     XTYP_MASK                0x00F0
  168. #define     XTYP_SHIFT               4  /* shift to turn XTYP_ into an index */
  169.  
  170. /***** Timeout constants *****/
  171.  
  172. #define     TIMEOUT_ASYNC           0xFFFFFFFF
  173.  
  174. /***** Transaction ID constants *****/
  175.  
  176. #define     QID_SYNC                0xFFFFFFFF
  177.  
  178. /****** public strings used in DDE ******/
  179.  
  180. #ifdef UNICODE
  181. #define SZDDESYS_TOPIC         L"System"
  182. #define SZDDESYS_ITEM_TOPICS   L"Topics"
  183. #define SZDDESYS_ITEM_SYSITEMS L"SysItems"
  184. #define SZDDESYS_ITEM_RTNMSG   L"ReturnMessage"
  185. #define SZDDESYS_ITEM_STATUS   L"Status"
  186. #define SZDDESYS_ITEM_FORMATS  L"Formats"
  187. #define SZDDESYS_ITEM_HELP     L"Help"
  188. #define SZDDE_ITEM_ITEMLIST    L"TopicItemList"
  189. #else
  190. #define SZDDESYS_TOPIC         "System"
  191. #define SZDDESYS_ITEM_TOPICS   "Topics"
  192. #define SZDDESYS_ITEM_SYSITEMS "SysItems"
  193. #define SZDDESYS_ITEM_RTNMSG   "ReturnMessage"
  194. #define SZDDESYS_ITEM_STATUS   "Status"
  195. #define SZDDESYS_ITEM_FORMATS  "Formats"
  196. #define SZDDESYS_ITEM_HELP     "Help"
  197. #define SZDDE_ITEM_ITEMLIST    "TopicItemList"
  198. #endif
  199.  
  200.  
  201. /****** API entry points ******/
  202.  
  203. typedef HDDEDATA CALLBACK FNCALLBACK(UINT wType, UINT wFmt, HCONV hConv,
  204.         HSZ hsz1, HSZ hsz2, HDDEDATA hData, ULONG_PTR dwData1, ULONG_PTR dwData2);
  205. typedef HDDEDATA (CALLBACK *PFNCALLBACK)(UINT wType, UINT wFmt, HCONV hConv,
  206.         HSZ hsz1, HSZ hsz2, HDDEDATA hData, ULONG_PTR dwData1, ULONG_PTR dwData2);
  207.  
  208. #define     CBR_BLOCK           ((HDDEDATA)0xffffffffL)
  209.  
  210. /* DLL registration functions */
  211.  
  212. UINT WINAPI DdeInitializeA( IN OUT LPDWORD pidInst, IN PFNCALLBACK pfnCallback,
  213.         IN DWORD afCmd, IN DWORD ulRes);
  214. UINT WINAPI DdeInitializeW( IN OUT LPDWORD pidInst, IN PFNCALLBACK pfnCallback,
  215.         IN DWORD afCmd, IN DWORD ulRes);
  216. #ifdef UNICODE
  217. #define DdeInitialize  DdeInitializeW
  218. #else
  219. #define DdeInitialize  DdeInitializeA
  220. #endif // !UNICODE
  221.  
  222. /*
  223.  * Callback filter flags for use with standard apps.
  224.  */
  225.  
  226. #define     CBF_FAIL_SELFCONNECTIONS     0x00001000
  227. #define     CBF_FAIL_CONNECTIONS         0x00002000
  228. #define     CBF_FAIL_ADVISES             0x00004000
  229. #define     CBF_FAIL_EXECUTES            0x00008000
  230. #define     CBF_FAIL_POKES               0x00010000
  231. #define     CBF_FAIL_REQUESTS            0x00020000
  232. #define     CBF_FAIL_ALLSVRXACTIONS      0x0003f000
  233.  
  234. #define     CBF_SKIP_CONNECT_CONFIRMS    0x00040000
  235. #define     CBF_SKIP_REGISTRATIONS       0x00080000
  236. #define     CBF_SKIP_UNREGISTRATIONS     0x00100000
  237. #define     CBF_SKIP_DISCONNECTS         0x00200000
  238. #define     CBF_SKIP_ALLNOTIFICATIONS    0x003c0000
  239.  
  240. /*
  241.  * Application command flags
  242.  */
  243. #define     APPCMD_CLIENTONLY            0x00000010L
  244. #define     APPCMD_FILTERINITS           0x00000020L
  245. #define     APPCMD_MASK                  0x00000FF0L
  246.  
  247. /*
  248.  * Application classification flags
  249.  */
  250. #define     APPCLASS_STANDARD            0x00000000L
  251. #define     APPCLASS_MASK                0x0000000FL
  252.  
  253. BOOL WINAPI DdeUninitialize( IN DWORD idInst);
  254.  
  255. /*
  256.  * conversation enumeration functions
  257.  */
  258.  
  259. HCONVLIST WINAPI DdeConnectList( IN DWORD idInst, IN HSZ hszService, IN HSZ hszTopic,
  260.         IN HCONVLIST hConvList, IN PCONVCONTEXT pCC);
  261. HCONV WINAPI DdeQueryNextServer( IN HCONVLIST hConvList, IN HCONV hConvPrev);
  262. BOOL WINAPI DdeDisconnectList( IN HCONVLIST hConvList);
  263.  
  264. /*
  265.  * conversation control functions
  266.  */
  267.  
  268. HCONV WINAPI DdeConnect( IN DWORD idInst, IN HSZ hszService, IN HSZ hszTopic,
  269.         IN PCONVCONTEXT pCC);
  270. BOOL WINAPI DdeDisconnect( IN OUT HCONV hConv);
  271. HCONV WINAPI DdeReconnect( IN HCONV hConv);
  272. UINT WINAPI DdeQueryConvInfo( IN HCONV hConv, IN DWORD idTransaction, IN OUT PCONVINFO pConvInfo);
  273. BOOL WINAPI DdeSetUserHandle( IN HCONV hConv, IN DWORD id, IN DWORD hUser);
  274. BOOL WINAPI DdeAbandonTransaction( IN DWORD idInst, IN HCONV hConv, IN DWORD idTransaction);
  275.  
  276.  
  277. /*
  278.  * app server interface functions
  279.  */
  280.  
  281. BOOL WINAPI DdePostAdvise( IN DWORD idInst, IN HSZ hszTopic, IN HSZ hszItem);
  282. BOOL WINAPI DdeEnableCallback( IN DWORD idInst, IN HCONV hConv, IN UINT wCmd);
  283. BOOL WINAPI DdeImpersonateClient( IN HCONV hConv);
  284.  
  285. #define EC_ENABLEALL            0
  286. #define EC_ENABLEONE            ST_BLOCKNEXT
  287. #define EC_DISABLE              ST_BLOCKED
  288. #define EC_QUERYWAITING         2
  289.  
  290. HDDEDATA WINAPI DdeNameService( IN DWORD idInst, IN HSZ hsz1, IN HSZ hsz2, IN UINT afCmd);
  291.  
  292. #define DNS_REGISTER        0x0001
  293. #define DNS_UNREGISTER      0x0002
  294. #define DNS_FILTERON        0x0004
  295. #define DNS_FILTEROFF       0x0008
  296.  
  297. /*
  298.  * app client interface functions
  299.  */
  300.  
  301. HDDEDATA WINAPI DdeClientTransaction( IN LPBYTE pData, IN DWORD cbData,
  302.         IN HCONV hConv, IN HSZ hszItem, IN UINT wFmt, IN UINT wType,
  303.         IN DWORD dwTimeout, OUT LPDWORD pdwResult);
  304.  
  305. /*
  306.  *data transfer functions
  307.  */
  308.  
  309. HDDEDATA WINAPI DdeCreateDataHandle( IN DWORD idInst, IN LPBYTE pSrc, IN DWORD cb,
  310.         IN DWORD cbOff, IN HSZ hszItem, IN UINT wFmt, IN UINT afCmd);
  311. HDDEDATA WINAPI DdeAddData( IN HDDEDATA hData, IN LPBYTE pSrc, IN DWORD cb, IN DWORD cbOff);
  312. DWORD WINAPI DdeGetData( IN HDDEDATA hData, OUT LPBYTE pDst, IN DWORD cbMax, IN DWORD cbOff);
  313. LPBYTE WINAPI DdeAccessData( IN HDDEDATA hData, OUT LPDWORD pcbDataSize);
  314. BOOL WINAPI DdeUnaccessData( IN HDDEDATA hData);
  315. BOOL WINAPI DdeFreeDataHandle( IN OUT HDDEDATA hData);
  316.  
  317. #define     HDATA_APPOWNED          0x0001
  318.  
  319.  
  320. UINT WINAPI DdeGetLastError( IN DWORD idInst);
  321.  
  322. #define     DMLERR_NO_ERROR                    0       /* must be 0 */
  323.  
  324. #define     DMLERR_FIRST                       0x4000
  325.  
  326. #define     DMLERR_ADVACKTIMEOUT               0x4000
  327. #define     DMLERR_BUSY                        0x4001
  328. #define     DMLERR_DATAACKTIMEOUT              0x4002
  329. #define     DMLERR_DLL_NOT_INITIALIZED         0x4003
  330. #define     DMLERR_DLL_USAGE                   0x4004
  331. #define     DMLERR_EXECACKTIMEOUT              0x4005
  332. #define     DMLERR_INVALIDPARAMETER            0x4006
  333. #define     DMLERR_LOW_MEMORY                  0x4007
  334. #define     DMLERR_MEMORY_ERROR                0x4008
  335. #define     DMLERR_NOTPROCESSED                0x4009
  336. #define     DMLERR_NO_CONV_ESTABLISHED         0x400a
  337. #define     DMLERR_POKEACKTIMEOUT              0x400b
  338. #define     DMLERR_POSTMSG_FAILED              0x400c
  339. #define     DMLERR_REENTRANCY                  0x400d
  340. #define     DMLERR_SERVER_DIED                 0x400e
  341. #define     DMLERR_SYS_ERROR                   0x400f
  342. #define     DMLERR_UNADVACKTIMEOUT             0x4010
  343. #define     DMLERR_UNFOUND_QUEUE_ID            0x4011
  344.  
  345. #define     DMLERR_LAST                        0x4011
  346.  
  347. HSZ  WINAPI DdeCreateStringHandleA( IN DWORD idInst, IN LPCSTR psz, IN int iCodePage);
  348. HSZ  WINAPI DdeCreateStringHandleW( IN DWORD idInst, IN LPCWSTR psz, IN int iCodePage);
  349. #ifdef UNICODE
  350. #define DdeCreateStringHandle  DdeCreateStringHandleW
  351. #else
  352. #define DdeCreateStringHandle  DdeCreateStringHandleA
  353. #endif // !UNICODE
  354. DWORD WINAPI DdeQueryStringA( IN DWORD idInst, IN HSZ hsz, IN OUT LPSTR psz, IN DWORD cchMax, IN int iCodePage);
  355. DWORD WINAPI DdeQueryStringW( IN DWORD idInst, IN HSZ hsz, IN OUT LPWSTR psz, IN DWORD cchMax, IN int iCodePage);
  356. #ifdef UNICODE
  357. #define DdeQueryString  DdeQueryStringW
  358. #else
  359. #define DdeQueryString  DdeQueryStringA
  360. #endif // !UNICODE
  361. BOOL WINAPI DdeFreeStringHandle( IN DWORD idInst, IN OUT HSZ hsz);
  362. BOOL WINAPI DdeKeepStringHandle( IN DWORD idInst, IN OUT HSZ hsz);
  363. int WINAPI DdeCmpStringHandles( IN HSZ hsz1, IN HSZ hsz2);
  364.  
  365.  
  366. #ifndef NODDEMLSPY
  367. /*
  368.  * DDEML public debugging header file info
  369.  */
  370.  
  371. typedef struct tagDDEML_MSG_HOOK_DATA {    // new for NT
  372.     UINT_PTR uiLo;  // unpacked lo and hi parts of lParam
  373.     UINT_PTR uiHi;
  374.     DWORD cbData;   // amount of data in message, if any. May be > than 32 bytes.
  375.     DWORD Data[8];  // data peeking by DDESPY is limited to 32 bytes.
  376. } DDEML_MSG_HOOK_DATA, *PDDEML_MSG_HOOK_DATA;
  377.  
  378.  
  379. typedef struct tagMONMSGSTRUCT {
  380.     UINT    cb;
  381.     HWND    hwndTo;
  382.     DWORD   dwTime;
  383.     HANDLE  hTask;
  384.     UINT    wMsg;
  385.     WPARAM  wParam;
  386.     LPARAM  lParam;
  387.     DDEML_MSG_HOOK_DATA dmhd;       // new for NT
  388. } MONMSGSTRUCT, *PMONMSGSTRUCT;
  389.  
  390. typedef struct tagMONCBSTRUCT {
  391.     UINT   cb;
  392.     DWORD  dwTime;
  393.     HANDLE hTask;
  394.     DWORD  dwRet;
  395.     UINT   wType;
  396.     UINT   wFmt;
  397.     HCONV  hConv;
  398.     HSZ    hsz1;
  399.     HSZ    hsz2;
  400.     HDDEDATA hData;
  401.     ULONG_PTR dwData1;
  402.     ULONG_PTR dwData2;
  403.     CONVCONTEXT cc;                 // new for NT for XTYP_CONNECT callbacks
  404.     DWORD  cbData;                  // new for NT for data peeking
  405.     DWORD  Data[8];                 // new for NT for data peeking
  406. } MONCBSTRUCT, *PMONCBSTRUCT;
  407.  
  408. typedef struct tagMONHSZSTRUCTA {
  409.     UINT   cb;
  410.     BOOL   fsAction;    /* MH_ value */
  411.     DWORD  dwTime;
  412.     HSZ    hsz;
  413.     HANDLE hTask;
  414.     CHAR    str[1];
  415. } MONHSZSTRUCTA, *PMONHSZSTRUCTA;
  416. typedef struct tagMONHSZSTRUCTW {
  417.     UINT   cb;
  418.     BOOL   fsAction;    /* MH_ value */
  419.     DWORD  dwTime;
  420.     HSZ    hsz;
  421.     HANDLE hTask;
  422.     WCHAR   str[1];
  423. } MONHSZSTRUCTW, *PMONHSZSTRUCTW;
  424. #ifdef UNICODE
  425. typedef MONHSZSTRUCTW MONHSZSTRUCT;
  426. typedef PMONHSZSTRUCTW PMONHSZSTRUCT;
  427. #else
  428. typedef MONHSZSTRUCTA MONHSZSTRUCT;
  429. typedef PMONHSZSTRUCTA PMONHSZSTRUCT;
  430. #endif // UNICODE
  431.  
  432. #define MH_CREATE   1
  433. #define MH_KEEP     2
  434. #define MH_DELETE   3
  435. #define MH_CLEANUP  4
  436.  
  437. typedef struct tagMONERRSTRUCT {
  438.     UINT    cb;
  439.     UINT    wLastError;
  440.     DWORD   dwTime;
  441.     HANDLE  hTask;
  442. } MONERRSTRUCT, *PMONERRSTRUCT;
  443.  
  444. typedef struct tagMONLINKSTRUCT {
  445.     UINT    cb;
  446.     DWORD   dwTime;
  447.     HANDLE  hTask;
  448.     BOOL    fEstablished;
  449.     BOOL    fNoData;
  450.     HSZ     hszSvc;
  451.     HSZ     hszTopic;
  452.     HSZ     hszItem;
  453.     UINT    wFmt;
  454.     BOOL    fServer;
  455.     HCONV   hConvServer;
  456.     HCONV   hConvClient;
  457. } MONLINKSTRUCT, *PMONLINKSTRUCT;
  458.  
  459. typedef struct tagMONCONVSTRUCT {
  460.     UINT    cb;
  461.     BOOL    fConnect;
  462.     DWORD   dwTime;
  463.     HANDLE  hTask;
  464.     HSZ     hszSvc;
  465.     HSZ     hszTopic;
  466.     HCONV   hConvClient;        // Globally unique value != apps local hConv
  467.     HCONV   hConvServer;        // Globally unique value != apps local hConv
  468. } MONCONVSTRUCT, *PMONCONVSTRUCT;
  469.  
  470. #define     MAX_MONITORS            4
  471. #define     APPCLASS_MONITOR        0x00000001L
  472. #define     XTYP_MONITOR            (0x00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
  473.  
  474. /*
  475.  * Callback filter flags for use with MONITOR apps - 0 implies no monitor
  476.  * callbacks.
  477.  */
  478. #define     MF_HSZ_INFO                  0x01000000
  479. #define     MF_SENDMSGS                  0x02000000
  480. #define     MF_POSTMSGS                  0x04000000
  481. #define     MF_CALLBACKS                 0x08000000
  482. #define     MF_ERRORS                    0x10000000
  483. #define     MF_LINKS                     0x20000000
  484. #define     MF_CONV                      0x40000000
  485.  
  486. #define     MF_MASK                      0xFF000000
  487. #endif /* NODDEMLSPY */
  488.  
  489. #ifdef __cplusplus
  490. }
  491. #endif  /* __cplusplus */
  492.  
  493. #pragma option pop /*P_O_Pop*/
  494. #endif /* _INC_DDEMLH */
  495.  
  496.  
  497.