1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 #ifndef _DDEIMP_HXX
25 #define _DDEIMP_HXX
26
27 #ifdef OS2
28
29 #include "ddemlos2.h"
30
31 #define WORD sal_uInt16
32 #define DWORD sal_uLong
33 #define LPBYTE sal_uInt8*
34 #define LPWORD sal_uInt16*
35 #define LPDWORD sal_uLong*
36 #define LPCTSTR PCSZ
37
38 #else
39
40 #include <tools/prewin.h>
41 #include <ddeml.h>
42 #include <tools/postwin.h>
43 #include "ddewrap.hxx"
44
45 /*
46 extern "C"
47 {
48 #define sal_Bool WIN_BOOL
49 #define sal_uInt8 WIN_BYTE
50 #undef sal_Bool
51 #undef sal_uInt8
52 };
53 */
54
55 #endif
56 #include <tools/string.hxx>
57 #include <tools/list.hxx>
58 #include <tools/shl.hxx>
59
60 class DdeService;
61 class DdeTopic;
62 class DdeItem;
63 class DdeTopics;
64 class DdeItems;
65
66 // ----------------
67 // - Conversation -
68 // ----------------
69
70 struct Conversation
71 {
72 HCONV hConv;
73 DdeTopic* pTopic;
74 };
75
76 DECLARE_LIST( ConvList, Conversation* );
77
78 // ---------------
79 // - DdeInternal -
80 // ---------------
81
82 class DdeInternal
83 {
84 public:
85 #ifdef WNT
86 static HDDEDATA CALLBACK CliCallback
87 ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
88 static HDDEDATA CALLBACK SvrCallback
89 ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
90 static HDDEDATA CALLBACK InfCallback
91 ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
92 #else
93 #if defined ( MTW ) || ( defined ( GCC ) && defined ( OS2 )) || defined( ICC )
94 static HDDEDATA CALLBACK __EXPORT CliCallback
95 ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
96 static HDDEDATA CALLBACK __EXPORT SvrCallback
97 ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
98 static HDDEDATA CALLBACK __EXPORT InfCallback
99 ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
100 #else
101 static HDDEDATA CALLBACK _export CliCallback
102 ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
103 static HDDEDATA CALLBACK _export SvrCallback
104 ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
105 static HDDEDATA CALLBACK _export InfCallback
106 ( WORD, WORD, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD );
107 #endif
108 #endif
109 static DdeService* FindService( HSZ );
110 static DdeTopic* FindTopic( DdeService&, HSZ );
111 static DdeItem* FindItem( DdeTopic&, HSZ );
112 };
113
114 // -------------
115 // - DdeString -
116 // -------------
117
118 class DdeString : public String
119 {
120 protected:
121 HSZ hString;
122 DWORD hInst;
123
124 public:
125 DdeString( DWORD, const sal_Unicode* );
126 DdeString( DWORD, const String& );
127 ~DdeString();
128
129 int operator==( HSZ );
130 operator HSZ();
131 };
132
133 // --------------
134 // - DdeDataImp -
135 // --------------
136
137 struct DdeDataImp
138 {
139 HDDEDATA hData;
140 LPBYTE pData;
141 long nData;
142 sal_uLong nFmt;
143 };
144
145 class DdeConnections;
146 class DdeServices;
147
148 struct DdeInstData
149 {
150 sal_uInt16 nRefCount;
151 DdeConnections* pConnections;
152 // Server
153 HCONV hCurConvSvr;
154 DWORD hDdeInstSvr;
155 short nInstanceSvr;
156 DdeServices* pServicesSvr;
157 // Client
158 DWORD hDdeInstCli;
159 short nInstanceCli;
160 };
161
162 #ifndef SHL_SVDDE
163 #define SHL_SVDDE SHL_SHL2
164 #endif
165
ImpGetInstData()166 inline DdeInstData* ImpGetInstData()
167 {
168 return (DdeInstData*)(*GetAppData( SHL_SVDDE ));
169 }
170 DdeInstData* ImpInitInstData();
171 void ImpDeinitInstData();
172
173 #endif // _DDEIMP_HXX
174