This is the status for DDE (i.e. raw dde messages) and ddeml. DDE was implemented by Micheal Veksler some time ago, it has been reported as broken by changes in the server and related parts of wine. AFAIK no-one has tried to fix these and I have not tried to test them. ddeml was untouched until December 1998 when some of the Corel/Macadamian team started writing bits that were needed by Corel for the Wordperfect Suite port. These were mainly around string handling and have been identified in the change history for each routine. They were written to cope with a single instance only. About a week later I started looking at ddeml as a whole. The initialisation was tackled first, then the routines produced by Corel/Macadamian were modified to cope with multiple instances of dde client/server and a first cut at the un-initialise routine. DdeNameService has now been produced as a first-cut routine, but the monitor notification must be tackled, followed by the main message reception routine and the invoking of the callback. Serious testing from this point may well depend on Wine thread handling settling down. The strategy so far has been to tackle the Unicode versions first. Once they have been accepted as close to complete then the 32-bit ASCII routines then the 16-bit routines. It is recognised that the solutions adopted may well not be suitable for wine-OS2, since that OS has its own DDE rotuines intermediate in integration between raw DDE and ddeml, also O/S 2 users may well want programs running under Wine to talk to native O/S 2 programs. I do not have knowledge of MacOS or the internals of BeOS, but these may suffer from the same problems. TO DO Complete initialisation, some of the 2nd call validation conditions have not been worked out yet and the code for enabling the message loop needs writing. Complete initialize and unitialize, also add the callback handling to DdeNameService. Add true Unicode handling to CreateStringHandle, QueryString, CmpStringHandles. Also find out why Initialize needs ASCII and Unicode variants. Add DdeGetLAstError and related handling in all other modules. Also find out what to do about storing errors that result in the instance failing to initialise in some way. Just about all the rest More specific items are commented in the code. Keith Matthews