Merge from Corel tree. Contributors are:
- Corel (Sean Langley, Michael Abd-El-Malek, Rick Mutzke, Bill Xing)
- Macadamian on behalf of Corel (Louis-Philippe Gagnon, Jean-Claude Batista)
Also added a few bits:
- Complete window model for several instances and conversations.
- Support for asynchronous transactions.
- Fixed some code (WM_DDE_REQUEST, WM_DDE_ADVISE, WM_DDE_REQUEST) handling.
- Support for wild connections.

diff --git a/include/ddeml.h b/include/ddeml.h
index b66aed8..7aef612 100644
--- a/include/ddeml.h
+++ b/include/ddeml.h
@@ -32,12 +32,49 @@
 
 #define EXPENTRY CALLBACK
 
+#define SZDDESYS_TOPIC		TEXT("System")
+#define SZDDESYS_ITEM_TOPICS	TEXT("Topics")
+#define SZDDESYS_ITEM_SYSITEMS	TEXT("SysItems")
+#define SZDDESYS_ITEM_RTNMSG	TEXT("ReturnMessage")
+#define SZDDESYS_ITEM_STATUS	TEXT("Status")
+#define SZDDESYS_ITEM_FORMATS	TEXT("Formats")
+#define SZDDESYS_ITEM_HELP	TEXT("Help")
+#define SZDDE_ITEM_ITEMLIST	TEXT("TopicItemList")
+
 /***************************************************
 
       FLAGS Section - copied from Microsoft SDK as must be standard, probably Copyright Microsoft Corporation
 
 ***************************************************/
 
+#define     XST_NULL              0
+#define     XST_INCOMPLETE        1
+#define     XST_CONNECTED         2
+#define     XST_INIT1             3
+#define     XST_INIT2             4
+#define     XST_REQSENT           5
+#define     XST_DATARCVD          6
+#define     XST_POKESENT          7
+#define     XST_POKEACKRCVD       8
+#define     XST_EXECSENT          9
+#define     XST_EXECACKRCVD      10
+#define     XST_ADVSENT          11
+#define     XST_UNADVSENT        12
+#define     XST_ADVACKRCVD       13
+#define     XST_UNADVACKRCVD     14
+#define     XST_ADVDATASENT      15
+#define     XST_ADVDATAACKRCVD   16
+
+#define     ST_CONNECTED            0x0001
+#define     ST_ADVISE               0x0002
+#define     ST_ISLOCAL              0x0004
+#define     ST_BLOCKED              0x0008
+#define     ST_CLIENT               0x0010
+#define     ST_TERMINATED           0x0020
+#define     ST_INLIST               0x0040
+#define     ST_BLOCKNEXT            0x0080
+#define     ST_ISSELF               0x0100
+
 /*
  * Callback filter flags for use with standard apps.
  */
@@ -138,6 +175,8 @@
 #define XTYP_MASK		0x00F0
 #define XTYP_SHIFT		4
 
+#define TIMEOUT_ASYNC           0xFFFFFFFF
+
 /**************************************************
 
 	End of Message Types Section
@@ -159,6 +198,10 @@
 #define DDE_FAPPSTATUS		0x00FF
 #define DDE_FNOTPROCESSED	0x0000
 
+#define DDE_FACKRESERVED        (~(DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS))
+#define DDE_FADVRESERVED        (~(DDE_FACKREQ | DDE_FDEFERUPD))
+#define DDE_FDATRESERVED        (~(DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED))
+#define DDE_FPOKRESERVED        (~(DDE_FRELEASE))
 
 /*****************************************************
 
@@ -197,6 +240,8 @@
 
 #define     DMLERR_LAST                        0x4011
 
+#define     HDATA_APPOWNED          	       0x0001
+
 /*****************************************************
 
       End of Return Codes and Microsoft section
@@ -205,10 +250,10 @@
 
 
 
-DECLARE_OLD_HANDLE(HCONVLIST);
-DECLARE_OLD_HANDLE(HCONV);
-DECLARE_OLD_HANDLE(HSZ);
-DECLARE_OLD_HANDLE(HDDEDATA);
+DECLARE_HANDLE(HCONVLIST);
+DECLARE_HANDLE(HCONV);
+DECLARE_HANDLE(HSZ);
+DECLARE_HANDLE(HDDEDATA);
 
 
 
@@ -218,8 +263,8 @@
 
 *******************************************************/
 
-typedef HDDEDATA CALLBACK (*PFNCALLBACK)(UINT,UINT,HCONV,HSZ,HSZ,
-                                           HDDEDATA,DWORD,DWORD);
+typedef HDDEDATA CALLBACK (*PFNCALLBACK)(UINT, UINT, HCONV, HSZ, HSZ,
+					 HDDEDATA, DWORD, DWORD);
 
 /***************************************************
 
@@ -227,7 +272,13 @@
 
 ***************************************************/
 
-typedef struct
+typedef struct tagHSZPAIR
+{
+    HSZ hszSvc;
+    HSZ hszTopic;
+} HSZPAIR, *PHSZPAIR, *LPHSZPAIR;
+
+typedef struct tagCONVCONTEXT
 {
     UINT  cb;
     UINT  wFlags;
@@ -237,7 +288,7 @@
     DWORD   dwSecurity;
 } CONVCONTEXT, *LPCONVCONTEXT;
 
-typedef struct
+typedef struct tagCONVINFO
 {
     DWORD		cb;
     DWORD 		hUser;