comparison dwt/dnd/HTMLTransfer.d @ 253:fbb9174f2a2c

Reuse the tango windows api
author Frank Benoit <benoit@tionex.de>
date Fri, 11 Jul 2008 23:01:25 +0200
parents fd9c62a2998e
children da968414c383
comparison
equal deleted inserted replaced
252:dffb802cad03 253:fbb9174f2a2c
132 buffer.append(string); 132 buffer.append(string);
133 buffer.append(SUFFIX); 133 buffer.append(SUFFIX);
134 134
135 auto wstrz = StrToTCHARz(OS.CP_UTF8,buffer.toString); 135 auto wstrz = StrToTCHARz(OS.CP_UTF8,buffer.toString);
136 cchMultiByte = OS.WideCharToMultiByte(OS.CP_UTF8, 0, wstrz, -1, null, 0, null, null); 136 cchMultiByte = OS.WideCharToMultiByte(OS.CP_UTF8, 0, wstrz, -1, null, 0, null, null);
137 auto lpMultiByteStr = cast(CHAR*) OS.GlobalAlloc(OS.GMEM_FIXED | OS.GMEM_ZEROINIT, cchMultiByte); 137 auto lpMultiByteStr = cast(PCHAR) OS.GlobalAlloc(OS.GMEM_FIXED | OS.GMEM_ZEROINIT, cchMultiByte);
138 OS.WideCharToMultiByte(OS.CP_UTF8, 0, wstrz, -1, lpMultiByteStr, cchMultiByte, null, null); 138 OS.WideCharToMultiByte(OS.CP_UTF8, 0, wstrz, -1, lpMultiByteStr, cchMultiByte, null, null);
139 transferData.stgmedium = new STGMEDIUM(); 139 transferData.stgmedium = new STGMEDIUM();
140 transferData.stgmedium.tymed = COM.TYMED_HGLOBAL; 140 transferData.stgmedium.tymed = COM.TYMED_HGLOBAL;
141 transferData.stgmedium.unionField = lpMultiByteStr; 141 transferData.stgmedium.unionField = lpMultiByteStr;
142 transferData.stgmedium.pUnkForRelease = null; 142 transferData.stgmedium.pUnkForRelease = null;
165 data.Release(); 165 data.Release();
166 if (transferData.result !is COM.S_OK) return null; 166 if (transferData.result !is COM.S_OK) return null;
167 auto hMem = stgmedium.unionField; 167 auto hMem = stgmedium.unionField;
168 168
169 try { 169 try {
170 auto lpMultiByteStr = cast(CHAR*) OS.GlobalLock(hMem); 170 auto lpMultiByteStr = cast(PCHAR) OS.GlobalLock(hMem);
171 if (lpMultiByteStr is null) return null; 171 if (lpMultiByteStr is null) return null;
172 try { 172 try {
173 /* NOTE: CF_HTML uses UTF-8 encoding. 173 /* NOTE: CF_HTML uses UTF-8 encoding.
174 * The MSDN documentation for MultiByteToWideChar states that dwFlags must be set to 0 for UTF-8. 174 * The MSDN documentation for MultiByteToWideChar states that dwFlags must be set to 0 for UTF-8.
175 * Otherwise, the function fails with ERROR_INVALID_FLAGS. */ 175 * Otherwise, the function fails with ERROR_INVALID_FLAGS. */