source: trunk/src/shell32/misc.cpp@ 3830

Last change on this file since 3830 was 3561, checked in by sandervl, 25 years ago

string api fix

File size: 11.6 KB
Line 
1/* $Id: misc.cpp,v 1.7 2000-05-19 12:09:24 sandervl Exp $ */
2
3/*
4 * Win32 SHELL32 for OS/2
5 * 1998/06/15 Patrick Haller (haller@zebra.fh-weingarten.de)
6 * Copyright 1997 Marcus Meissner
7 * Copyright 1988 Patrick Haller (adapted for win32os2)
8 * Project Odin Software License can be found in LICENSE.TXT
9 *
10 */
11
12
13/*****************************************************************************
14 * Includes *
15 *****************************************************************************/
16
17#include <odin.h>
18#include <odinwrap.h>
19#include <os2sel.h>
20
21#include <wchar.h>
22#include <wcstr.h>
23
24#define ICOM_CINTERFACE 1
25
26//#include <os2win.h>
27#include <shellapi.h>
28#include <winnls.h>
29#include "shell32_main.h"
30#include <misc.h>
31//#include <string.h>
32//#include "winbase.h"
33#include <heapstring.h>
34
35
36/*****************************************************************************
37 * Types & Defines *
38 *****************************************************************************/
39
40ODINDEBUGCHANNEL(SHELL32-MISC)
41
42
43/*****************************************************************************
44 * Name : ExtractAssociatedIconExA
45 * Purpose : Return icon for given file (either from file itself or from associated
46 * executable) and patch parameters if needed.
47 * Parameters: ???
48 * Variables :
49 * Result :
50 * Remark : SHELL.150
51 * Status : UNTESTED UNKNOWN STUB
52 *
53 * Author : Christoph Bratschi [Fri, 1999/08/6 20:00]
54 *****************************************************************************/
55
56ODINFUNCTION3(HICON, ExtractAssociatedIconExA,
57 HINSTANCE, hInst,
58 LPSTR, lpIconPath,
59 LPWORD, lpiIcon)
60{
61 dprintf(("SHELL32: undoc ExtractAssociatedIconExA\n"));
62
63 return ExtractAssociatedIconA(hInst,lpIconPath,lpiIcon);
64}
65
66/*****************************************************************************
67 * Name : ExtractAssociatedIconW
68 * Purpose : Return icon for given file (either from file itself or from associated
69 * executable) and patch parameters if needed.
70 * Parameters:
71 * Variables :
72 * Result :
73 * Remark : SHELL.36
74 * Status : UNTESTED STUB
75 *
76 * Author : Patrick Haller [Sat, 1998/07/11 11:55]
77 *****************************************************************************/
78
79ODINFUNCTION3(HICON, ExtractAssociatedIconW,
80 HINSTANCE, hInst,
81 LPWSTR, lpIconPath,
82 LPWORD, lpiIcon)
83{
84 LPSTR lpIconPathAscii = UnicodeToAsciiString(lpIconPath);
85 HICON hIcon;
86
87 hIcon = ExtractAssociatedIconA(hInst,
88 lpIconPathAscii,
89 lpiIcon);
90
91 FreeAsciiString(lpIconPathAscii);
92
93 return (hIcon);
94}
95
96/*****************************************************************************
97 * Name : ExtractAssociatedIconExW
98 * Purpose : Return icon for given file (either from file itself or from associated
99 * executable) and patch parameters if needed.
100 * Parameters: ???
101 * Variables :
102 * Result :
103 * Remark : SHELL.186
104 * Status : UNTESTED UNKNOWN STUB
105 *
106 * Author : Christoph Bratschi [Fri, 1999/08/6 20:00]
107 *****************************************************************************/
108
109ODINFUNCTION3(HICON, ExtractAssociatedIconExW,
110 HINSTANCE, hInst,
111 LPWSTR, lpIconPath,
112 LPWORD, lpiIcon)
113{
114 dprintf(("SHELL32: undoc ExtractAssociatedIconExW\n"));
115
116 return ExtractAssociatedIconW(hInst,lpIconPath,lpiIcon);
117}
118
119
120/*****************************************************************************
121 * Name : OleStrToStrN
122 * Purpose :
123 * Parameters:
124 * Variables :
125 * Result :
126 * Remark : SHELL32.78
127 * Status : UNTESTED UNKNOWN STUB
128 *
129 * Author : Patrick Haller [Tue, 1998/06/15 03:00]
130 *****************************************************************************/
131
132ODINFUNCTION4(BOOL, OleStrToStrN,
133 LPSTR, lpMulti,
134 INT, nMulti,
135 LPCWSTR, lpWide,
136 INT, nWide)
137{
138 return WideCharToMultiByte (0,
139 0,
140 lpWide,
141 nWide,
142 lpMulti,
143 nMulti,
144 NULL,
145 NULL);
146}
147
148
149/*****************************************************************************
150 * Name : StrToOleStrN
151 * Purpose :
152 * Parameters:
153 * Variables :
154 * Result :
155 * Remark : SHELL32.79
156 * Status : UNTESTED UNKNOWN STUB
157 *
158 * Author : Patrick Haller [Tue, 1998/06/15 03:00]
159 *****************************************************************************/
160
161ODINFUNCTION4(BOOL, StrToOleStrN,
162 LPWSTR, lpWide,
163 INT, nWide,
164 LPCSTR, lpMulti,
165 INT, nMulti)
166{
167 return MultiByteToWideChar (0,
168 0,
169 lpMulti,
170 nMulti,
171 lpWide,
172 nWide);
173}
174
175
176/*****************************************************************************
177 * Name : StrRetToStrN
178 * Purpose : converts a STRRET to a normal string
179 * Parameters: the pidl is for STRRET OFFSET
180 * Variables :
181 * Result :
182 * Remark : SHELL32.96
183 * Status : UNTESTED UNKNOWN STUB
184 *
185 * Author : Patrick Haller [Tue, 1998/06/15 03:00]
186 *****************************************************************************/
187
188ODINFUNCTION4(HRESULT, StrRetToStrN,
189 LPVOID, dest,
190 DWORD, len,
191 LPSTRRET, src,
192 LPITEMIDLIST, pidl)
193{
194 switch (src->uType)
195 {
196 case STRRET_WSTR:
197 WideCharToMultiByte(CP_ACP,
198 0,
199 src->u.pOleStr,
200 -1,
201 (LPSTR)dest,
202 len,
203 NULL,
204 NULL);
205 SHFree(src->u.pOleStr);
206 break;
207
208 case STRRET_CSTRA:
209 //if (VERSION_OsIsUnicode())
210 // lstrcpynAtoW((LPWSTR)dest, src->u.cStr, len);
211 //else
212 strncpy((LPSTR)dest,
213 src->u.cStr,
214 len);
215 break;
216
217 case STRRET_OFFSETA:
218 if (pidl)
219 {
220 //if(VERSION_OsIsUnicode())
221 // lstrcpynAtoW((LPWSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len);
222 //else
223 strncpy((LPSTR)dest,
224 ((LPCSTR)&pidl->mkid)+src->u.uOffset,
225 len);
226 break;
227 }
228
229 default:
230 dprintf(("SHELL32: StrRetToStrN: unknown type!\n"));
231
232 if (len)
233 *(LPSTR)dest = '\0';
234
235 return(FALSE);
236 }
237 return(TRUE);
238}
239
240
241/*****************************************************************************
242 * Name : SHELL32_654
243 * Purpose :
244 * Parameters:
245 * Variables :
246 * Result :
247 * Remark : SHELL32.654
248 * Status : UNTESTED UNKNOWN STUB
249 *
250 * Author : Patrick Haller [Tue, 1998/06/15 03:00]
251 *****************************************************************************/
252
253ODINFUNCTION2(HRESULT, SHELL32_654,
254 DWORD, x,
255 DWORD, y)
256{
257 dprintf(("SHELL32: SHELL32_654(%08xh,%08xh) not implemented.\n",
258 x,
259 y));
260 return 0;
261}
262
263
264/*****************************************************************************
265 * Name : StrToOleStr
266 * Purpose :
267 * Parameters:
268 * Variables :
269 * Result :
270 * Remark : SHELL32.163
271 * Status : UNTESTED UNKNOWN STUB
272 *
273 * Author : Patrick Haller [Tue, 1998/06/15 03:00]
274 *****************************************************************************/
275
276ODINFUNCTION2(int, StrToOleStr,
277 LPWSTR, lpWideCharStr,
278 LPCSTR, lpMultiByteString)
279{
280 return MultiByteToWideChar(0,
281 0,
282 lpMultiByteString,
283 -1,
284 lpWideCharStr,
285 MAX_PATH);
286}
287
288/*****************************************************************************
289 * Name : InternalExtractIconListA
290 * Purpose :
291 * Parameters: ???
292 * Variables :
293 * Result :
294 * Remark : SHELL32.221 - used by progman.exe
295 * Status : UNTESTED UNKNOWN STUB
296 *
297 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
298 *****************************************************************************/
299
300ODINFUNCTION1(DWORD, InternalExtractIconListA, DWORD, dwArg1)
301{
302 dprintf(("SHELL32: undoc InternalExtractIconListA \n"));
303 return 0;
304}
305
306/*****************************************************************************
307 * Name : InternalExtractIconListW
308 * Purpose :
309 * Parameters: ???
310 * Variables :
311 * Result :
312 * Remark : SHELL32.222 - used by progman.exe
313 * Status : UNTESTED UNKNOWN STUB
314 *
315 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
316 *****************************************************************************/
317
318ODINFUNCTION1(DWORD, InternalExtractIconListW, DWORD, dwArg1)
319{
320 dprintf(("SHELL32: undoc InternalExtractIconListW\n"));
321 return 0;
322}
323
324/*****************************************************************************
325 * Name : ExtractIconResInfoA
326 * Purpose :
327 * Parameters: ???
328 * Variables :
329 * Result :
330 * Remark : SHELL32.192 - used by progman.exe
331 * Status : UNTESTED UNKNOWN STUB
332 *
333 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
334 *****************************************************************************/
335
336ODINFUNCTION1(DWORD, ExtractIconResInfoA, DWORD, dwArg1)
337{
338 dprintf(("SHELL32: undoc ExtractIconResInfoA\n"));
339 return 0;
340}
341
342/*****************************************************************************
343 * Name : ExtractIconResInfoW
344 * Purpose :
345 * Parameters: ???
346 * Variables :
347 * Result :
348 * Remark : SHELL32.193 - used by progman.exe
349 * Status : UNTESTED UNKNOWN STUB
350 *
351 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
352 *****************************************************************************/
353
354ODINFUNCTION1(DWORD, ExtractIconResInfoW, DWORD, dwArg1)
355{
356 dprintf(("SHELL32: undoc ExtractIconResInfoW\n"));
357 return 0;
358}
359
360/*****************************************************************************
361 * Name : CheckEscapesA
362 * Purpose :
363 * Parameters: ???
364 * Variables :
365 * Result :
366 * Remark : SHELL32.3 - used by progman.exe
367 * Status : UNTESTED UNKNOWN STUB
368 *
369 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
370 *****************************************************************************/
371
372ODINPROCEDURE2(CheckEscapesA,
373 DWORD, x1,
374 DWORD, x2)
375{
376 dprintf(("SHELL32: undoc CheckEscapesA\n"));
377}
378
379/*****************************************************************************
380 * Name : CheckEscapesW
381 * Purpose :
382 * Parameters: ???
383 * Variables :
384 * Result :
385 * Remark : SHELL32.6 - used by progman.exe
386 * Status : UNTESTED UNKNOWN STUB
387 *
388 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
389 *****************************************************************************/
390
391ODINPROCEDURE2(CheckEscapesW,
392 DWORD, x1,
393 DWORD, x2)
394{
395 dprintf(("SHELL32: undoc CheckEscapesW\n"));
396}
397
398/*****************************************************************************
399 * Name : DuplicateIcon
400 * Purpose :
401 * Parameters: ???
402 * Variables :
403 * Result :
404 * Remark : SHELL32.138 - used by progman.exe
405 * Status : UNTESTED UNKNOWN STUB
406 *
407 * Author : Christoph Bratschi [Fri, 1999/08/6 19:00]
408 *****************************************************************************/
409
410ODINFUNCTION1(DWORD, DuplicateIcon,
411 DWORD, x1)
412{
413 dprintf(("SHELL32: undoc DuplicateIcon\n"));
414
415 return 0;
416}
417
Note: See TracBrowser for help on using the repository browser.