Merge from Corel tree. Contributors are:
[wine] / dlls / user / dde / ddeml16.c
1 /* -*- tab-width: 8; c-basic-offset: 8 -*- */
2
3 /*
4  * DDEML library
5  *
6  * Copyright 1997 Alexandre Julliard
7  * Copyright 1997 Len White
8  * Copyright 1999 Keith Matthews
9  * Copyright 2000 Corel
10  * Copyright 2001 Eric Pouech
11  */
12
13 #include <string.h>
14 #include "winbase.h"
15 #include "windef.h"
16 #include "wine/windef16.h"
17 #include "wingdi.h"
18 #include "winuser.h"
19 #include "winerror.h"
20 #include "dde.h"
21 #include "ddeml.h"
22 #include "debugtools.h"
23
24 DEFAULT_DEBUG_CHANNEL(ddeml);
25
26
27 typedef HDDEDATA CALLBACK (*PFNCALLBACK16)(UINT16,UINT16,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD);
28
29 typedef struct
30 {
31     UINT16  cb;
32     UINT16  wFlags;
33     UINT16  wCountryID;
34     INT16   iCodePage;
35     DWORD   dwLangID;
36     DWORD   dwSecurity;
37 } CONVCONTEXT16, *LPCONVCONTEXT16;
38
39 typedef struct
40 {
41     DWORD          cb;
42     DWORD          hUser;
43     HCONV          hConvPartner;
44     HSZ            hszSvcPartner;
45     HSZ            hszServiceReq;
46     HSZ            hszTopic;
47     HSZ            hszItem;
48     UINT16         wFmt;
49     UINT16         wType;
50     UINT16         wStatus;
51     UINT16         wConvst;
52     UINT16         wLastError;
53     HCONVLIST      hConvList;
54     CONVCONTEXT16  ConvCtxt;
55 } CONVINFO16, *LPCONVINFO16;
56
57
58 /******************************************************************************
59  *            DdeInitialize16   (DDEML.2)
60  */
61 UINT16 WINAPI DdeInitialize16(LPDWORD pidInst, PFNCALLBACK16 pfnCallback,
62                               DWORD afCmd, DWORD ulRes)
63 {
64      return (UINT16)DdeInitializeA(pidInst,(PFNCALLBACK)pfnCallback,
65                                    afCmd, ulRes);
66 }
67
68 /*****************************************************************
69  *            DdeUninitialize16   (DDEML.3)
70  */
71 BOOL16 WINAPI DdeUninitialize16(DWORD idInst)
72 {
73      FIXME(" stub calling DdeUninitialize\n");
74      return (BOOL16)DdeUninitialize(idInst);
75 }
76
77 /*****************************************************************
78  * DdeConnectList16 [DDEML.4]
79  */
80
81 HCONVLIST WINAPI DdeConnectList16(DWORD idInst, HSZ hszService, HSZ hszTopic,
82                                   HCONVLIST hConvList, LPCONVCONTEXT16 pCC)
83 {
84      return DdeConnectList(idInst, hszService, hszTopic, hConvList, 
85                            (LPCONVCONTEXT)pCC);
86 }
87
88 /*****************************************************************
89  * DdeQueryNextServer16 [DDEML.5]
90  */
91 HCONV WINAPI DdeQueryNextServer16(HCONVLIST hConvList, HCONV hConvPrev)
92 {
93      return DdeQueryNextServer(hConvList, hConvPrev);
94 }
95
96 /*****************************************************************
97  *            DdeDisconnectList (DDEML.6)
98  */
99 BOOL16 WINAPI DdeDisconnectList16(HCONVLIST hConvList)
100 {
101      return (BOOL16)DdeDisconnectList(hConvList);
102 }
103
104
105 /*****************************************************************
106  *              DdeQueryString16 (DDEML.23)
107  */
108 DWORD WINAPI DdeQueryString16(DWORD idInst, HSZ hsz, LPSTR lpsz, DWORD cchMax, INT16 codepage)
109 {
110      FIXME("(%ld, 0x%x, %p, %ld, %d): stub \n", 
111            idInst, hsz, lpsz, cchMax, codepage);
112      return 0;
113 }
114
115 /*****************************************************************
116  *            DdeConnect16   (DDEML.7)
117  */
118 HCONV WINAPI DdeConnect16(DWORD idInst, HSZ hszService, HSZ hszTopic,
119                           LPCONVCONTEXT16 pCC16)
120 {
121      CONVCONTEXT        cc;
122      CONVCONTEXT*       pCC = NULL;
123      
124      if (pCC16) {
125           pCC = &cc;
126           cc.cb = sizeof(cc);
127           cc.wFlags = pCC16->wFlags;
128           cc.iCodePage = pCC16->iCodePage;
129           cc.dwLangID = pCC16->dwLangID;
130           cc.dwSecurity = pCC16->dwSecurity;
131      }
132      return DdeConnect(idInst, hszService, hszTopic, pCC);
133 }
134
135 /*****************************************************************
136  *            DdeDisconnect16   (DDEML.8)
137  */
138 BOOL16 WINAPI DdeDisconnect16(HCONV hConv)
139 {
140      return (BOOL16)DdeDisconnect(hConv);
141 }
142
143 /*****************************************************************
144  *            DdeSetUserHandle16 (DDEML.10)
145  */
146 BOOL16 WINAPI DdeSetUserHandle16(HCONV hConv, DWORD id, DWORD hUser)
147 {
148      FIXME("(%d,%ld,%ld): stub\n",hConv,id, hUser);
149      return 0;
150 }
151
152 /*****************************************************************
153  *            DdeCreateDataHandle16 (DDEML.14)
154  */
155 HDDEDATA WINAPI DdeCreateDataHandle16(DWORD idInst, LPBYTE pSrc, DWORD cb, 
156                                       DWORD cbOff, HSZ hszItem, UINT16 wFmt, 
157                                       UINT16 afCmd)
158 {
159      return DdeCreateDataHandle(idInst, pSrc, cb, cbOff, hszItem, wFmt, afCmd);
160 }
161
162 /*****************************************************************
163  *            DdeCreateStringHandle16   (DDEML.21)
164  */
165 HSZ WINAPI DdeCreateStringHandle16(DWORD idInst, LPCSTR str, INT16 codepage)
166 {
167      if  (codepage)
168      {
169           return DdeCreateStringHandleA(idInst, str, codepage);
170      } else {
171           TRACE("Default codepage supplied\n");
172           return DdeCreateStringHandleA(idInst, str, CP_WINANSI);
173      }
174 }
175
176 /*****************************************************************
177  *            DdeFreeStringHandle16   (DDEML.22)
178  */
179 BOOL16 WINAPI DdeFreeStringHandle16(DWORD idInst, HSZ hsz)
180 {
181      FIXME("idInst %ld hsz 0x%x\n",idInst,hsz);
182      return (BOOL)DdeFreeStringHandle(idInst, hsz);
183 }
184
185 /*****************************************************************
186  *            DdeFreeDataHandle16   (DDEML.19)
187  */
188 BOOL16 WINAPI DdeFreeDataHandle16(HDDEDATA hData)
189 {
190      return (BOOL)DdeFreeDataHandle(hData);
191 }
192
193 /*****************************************************************
194  *            DdeKeepStringHandle16   (DDEML.24)
195  */
196 BOOL16 WINAPI DdeKeepStringHandle16(DWORD idInst, HSZ hsz)
197 {
198      return (BOOL)DdeKeepStringHandle(idInst, hsz);
199 }
200
201 /*****************************************************************
202  *            DdeClientTransaction16  (DDEML.11)
203  */
204 HDDEDATA WINAPI DdeClientTransaction16(LPVOID pData, DWORD cbData,
205                                        HCONV hConv, HSZ hszItem, UINT16 wFmt,
206                                        UINT16 wType, DWORD dwTimeout,
207                                        LPDWORD pdwResult)
208 {
209      return DdeClientTransaction((LPBYTE)pData, cbData, hConv, hszItem,
210                                  wFmt, wType, dwTimeout, pdwResult);
211 }
212
213 /*****************************************************************
214  *
215  *            DdeAbandonTransaction16 (DDEML.12)
216  *
217  */
218 BOOL16 WINAPI DdeAbandonTransaction16(DWORD idInst, HCONV hConv, 
219                                       DWORD idTransaction)
220 {
221      FIXME("empty stub\n");
222      return TRUE;
223 }
224
225 /*****************************************************************
226  * DdePostAdvise16 [DDEML.13]
227  */
228 BOOL16 WINAPI DdePostAdvise16(DWORD idInst, HSZ hszTopic, HSZ hszItem)
229 {
230      return (BOOL16)DdePostAdvise(idInst, hszTopic, hszItem);
231 }
232
233 /*****************************************************************
234  *            DdeAddData16 (DDEML.15)
235  */
236 HDDEDATA WINAPI DdeAddData16(HDDEDATA hData, LPBYTE pSrc, DWORD cb,
237                              DWORD cbOff)
238 {
239      return DdeAddData(hData, pSrc, cb, cbOff);
240 }
241
242 /*****************************************************************
243  * DdeGetData16 [DDEML.16]
244  */
245 DWORD WINAPI DdeGetData16(
246      HDDEDATA hData,
247      LPBYTE pDst,
248      DWORD cbMax, 
249      DWORD cbOff)
250 {
251      return DdeGetData(hData, pDst, cbMax, cbOff);
252 }
253
254 /*****************************************************************
255  *            DdeAccessData16 (DDEML.17)
256  */
257 LPBYTE WINAPI DdeAccessData16(HDDEDATA hData, LPDWORD pcbDataSize)
258 {
259      return DdeAccessData(hData, pcbDataSize);
260 }
261
262 /*****************************************************************
263  *            DdeUnaccessData16 (DDEML.18)
264  */
265 BOOL16 WINAPI DdeUnaccessData16(HDDEDATA hData)
266 {
267      return DdeUnaccessData(hData);
268 }
269
270 /*****************************************************************
271  *            DdeEnableCallback16 (DDEML.26)
272  */
273 BOOL16 WINAPI DdeEnableCallback16(DWORD idInst, HCONV hConv, UINT16 wCmd)
274 {
275      return DdeEnableCallback(idInst, hConv, wCmd);
276 }
277
278 /*****************************************************************
279  *            DdeNameService16  (DDEML.27)
280  */
281 HDDEDATA WINAPI DdeNameService16(DWORD idInst, HSZ hsz1, HSZ hsz2,
282                                  UINT16 afCmd)
283 {
284      return DdeNameService(idInst, hsz1, hsz2, afCmd);
285 }
286
287 /*****************************************************************
288  *            DdeGetLastError16  (DDEML.20)
289  */
290 UINT16 WINAPI DdeGetLastError16(DWORD idInst)
291 {
292      return (UINT16)DdeGetLastError(idInst);
293 }
294
295 /*****************************************************************
296  *            DdeCmpStringHandles16 (DDEML.36)
297  */
298 INT16 WINAPI DdeCmpStringHandles16(HSZ hsz1, HSZ hsz2)
299 {
300      return DdeCmpStringHandles(hsz1, hsz2);
301 }
302
303 /******************************************************************
304  *              DdeQueryConvInfo16 (DDEML.9)
305  *
306  */
307 UINT16 WINAPI DdeQueryConvInfo16(HCONV hconv, DWORD idTransaction, LPCONVINFO16 lpConvInfo)
308 {
309      FIXME("stub.\n");
310      return 0;
311 }