Changeset 3243 for trunk/src/shell32
- Timestamp:
- Mar 26, 2000, 6:34:57 PM (26 years ago)
- Location:
- trunk/src/shell32
- Files:
-
- 1 added
- 45 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/shell32/brsfolder.cpp
r3183 r3243 1 /* $Id: brsfolder.cpp,v 1. 3 2000-03-21 17:33:21cbratschi Exp $ */1 /* $Id: brsfolder.cpp,v 1.4 2000-03-26 16:34:38 cbratschi Exp $ */ 2 2 3 3 /* … … 8 8 * Project Odin Software License can be found in LICENSE.TXT 9 9 * 10 * Corel WINE 20000324 level 10 11 */ 11 12 … … 55 56 ODINDEBUGCHANNEL(shell32-brsfolder) 56 57 58 #define BRS_SPACE 40 59 #define BRS_MARGIN 6 57 60 #define IDD_TREEVIEW 99 58 61 … … 282 285 } 283 286 287 /************************************************************************* 288 * ResizeControls (temporary solution and will be removed 289 * if a horizontal scroll bar added to a tree control) 290 */ 291 292 void ResizeConrols(HWND hWnd, int Cx, int Cy) 293 { 294 POINT pt; 295 HWND hBtn; 296 RECT rcCtl; 297 298 // Move the treeView control 299 if(hwndTreeView) 300 { 301 GetWindowRect(hwndTreeView, &rcCtl); 302 pt.y = rcCtl.top; 303 pt.x = rcCtl.left; 304 ScreenToClient(hWnd, &pt); 305 MoveWindow(hwndTreeView, pt.x, pt.y, Cx - pt.x - BRS_MARGIN, Cy - BRS_SPACE, TRUE); 306 } 307 308 // Move the OK button 309 hBtn = GetDlgItem(hWnd, IDOK); 310 if(hBtn) 311 { 312 GetWindowRect(hBtn, &rcCtl); 313 pt.y = Cy - (BRS_MARGIN + (rcCtl.bottom - rcCtl.top)); 314 pt.x = Cx - 2 * (2 * BRS_MARGIN + (rcCtl.right - rcCtl.left)); 315 MoveWindow(hBtn, pt.x, pt.y, rcCtl.right - rcCtl.left, rcCtl.bottom - rcCtl.top, TRUE); 316 } 317 318 // MOve the cancel button 319 hBtn = GetDlgItem(hWnd, IDCANCEL); 320 if(hBtn) 321 { 322 pt.x = Cx - (2 * BRS_MARGIN + (rcCtl.right - rcCtl.left)); 323 MoveWindow(hBtn, pt.x, pt.y, rcCtl.right - rcCtl.left, rcCtl.bottom - rcCtl.top, TRUE); 324 } 325 } 284 326 285 327 /************************************************************************* … … 305 347 306 348 InitializeTreeView ( hWnd); 349 { 350 RECT rcDlg; 351 352 GetClientRect(hWnd, &rcDlg); 353 ResizeConrols(hWnd, rcDlg.right, rcDlg.bottom); 354 } 307 355 return 1; 356 357 case WM_SIZE: 358 ResizeConrols(hWnd, LOWORD(lParam), HIWORD(lParam)); 359 break; 308 360 309 361 case WM_NOTIFY: -
trunk/src/shell32/classes.cpp
r1543 r3243 1 /* $Id: classes.cpp,v 1. 2 1999-11-02 18:50:15 phallerExp $ */1 /* $Id: classes.cpp,v 1.3 2000-03-26 16:34:39 cbratschi Exp $ */ 2 2 3 3 /* … … 8 8 * Project Odin Software License can be found in LICENSE.TXT 9 9 * 10 * Corel WINE 20000324 level 10 11 */ 11 12 … … 193 194 ret = TRUE; 194 195 } 195 else if (IsEqualIID(riid, & IID_MyComputer))196 else if (IsEqualIID(riid, &CLSID_MyComputer)) 196 197 { 197 198 LoadStringA(shell32_hInstance, IDS_MYCOMPUTER, szDest, buflen); … … 209 210 * 210 211 * gets the folder attributes of a class 212 * 213 * FIXME 214 * verify the defaultvalue for *szDest 211 215 */ 212 216 BOOL HCR_GetFolderAttributes (REFIID riid, LPDWORD szDest) … … 225 229 TRACE("%s\n",xriid ); 226 230 231 if (!szDest) return FALSE; 232 *szDest = SFGAO_FOLDER|SFGAO_FILESYSTEM; 233 227 234 strcat (xriid, "\\ShellFolder"); 228 235 -
trunk/src/shell32/contmenu.cpp
r1214 r3243 1 /* $Id: contmenu.cpp,v 1. 1 1999-10-09 11:13:18 sandervlExp $ */1 /* $Id: contmenu.cpp,v 1.2 2000-03-26 16:34:39 cbratschi Exp $ */ 2 2 3 3 /* … … 7 7 * Project Odin Software License can be found in LICENSE.TXT 8 8 * 9 * Corel WINE 20000324 level 9 10 */ 10 11 … … 40 41 41 42 #include "shell32_main.h" 43 #include "shresdef.h" 42 44 43 45 #include <heapstring.h> … … 90 92 } IContextMenuImpl; 91 93 92 93 94 //static struct ICOM_VTABLE(IContextMenu) cmvt; 94 95 … … 370 371 { /* folder menu */ 371 372 fExplore = uFlags & CMF_EXPLORE; 373 /* patch, the MFS_GRAYED items are not implemented yet */ 372 374 if(fExplore) 373 { _InsertMenuItem(hmenu, indexMenu++, TRUE, idCmdFirst+IDM_EXPLORE, MFT_STRING, "&Explore", MFS_ENABLED|MFS_DEFAULT); 375 { 376 _InsertMenuItem(hmenu, indexMenu++, TRUE, idCmdFirst+IDM_EXPLORE, MFT_STRING, "&Explore", MFS_GRAYED|MFS_DEFAULT); 374 377 _InsertMenuItem(hmenu, indexMenu++, TRUE, idCmdFirst+IDM_OPEN, MFT_STRING, "&Open", MFS_ENABLED); 375 378 } 376 379 else 377 380 { _InsertMenuItem(hmenu, indexMenu++, TRUE, idCmdFirst+IDM_OPEN, MFT_STRING, "&Open", MFS_ENABLED|MFS_DEFAULT); 378 _InsertMenuItem(hmenu, indexMenu++, TRUE, idCmdFirst+IDM_EXPLORE, MFT_STRING, "&Explore", MFS_ ENABLED);381 _InsertMenuItem(hmenu, indexMenu++, TRUE, idCmdFirst+IDM_EXPLORE, MFT_STRING, "&Explore", MFS_GRAYED); 379 382 } 380 383 … … 408 411 SHELLEXECUTEINFOA sei; 409 412 int i; 413 int iItem; 414 int hwndListView = GetDlgItem(lpcmi->hwnd,ID_LISTVIEW); 410 415 411 416 dprintf(("SHELL32:contmenu:IContextMenu_fnInvokeCommand(%08xh,%08xh,%08xh,%08xh)\n", … … 450 455 451 456 case IDM_RENAME: 452 MessageBeep(MB_OK);453 /*handle rename for the view here*/457 iItem = ListView_GetNextItem(hwndListView,0, LVNI_FOCUSED); 458 ListView_EditLabelA(hwndListView, iItem); 454 459 break; 455 460 } -
trunk/src/shell32/dataobject.cpp
r3217 r3243 1 /* $Id: dataobject.cpp,v 1. 2 2000-03-24 17:17:26cbratschi Exp $ */1 /* $Id: dataobject.cpp,v 1.3 2000-03-26 16:34:40 cbratschi Exp $ */ 2 2 3 3 /* … … 7 7 * Project Odin Software License can be found in LICENSE.TXT 8 8 * 9 * Corel WINE 20000324 level 9 10 */ 10 11 … … 809 810 return (LPDATAOBJECT)dto; 810 811 } 811 -
trunk/src/shell32/enumidlist.cpp
r1214 r3243 1 /* $Id: enumidlist.cpp,v 1. 1 1999-10-09 11:13:18 sandervlExp $ */1 /* $Id: enumidlist.cpp,v 1.2 2000-03-26 16:34:40 cbratschi Exp $ */ 2 2 3 3 /* … … 7 7 * Project Odin Software License can be found in LICENSE.TXT 8 8 * 9 * Corel WINE 20000324 level 9 10 */ 10 11 11 12 /* 12 * 13 * IEnumIDList 13 14 * 14 * Copyright 1998Juergen Schmied <juergen.schmied@metronet.de>15 * Copyright 1998 Juergen Schmied <juergen.schmied@metronet.de> 15 16 */ 16 17 … … 47 48 typedef struct tagENUMLIST 48 49 { 49 struct tagENUMLIST*pNext;50 LPITEMIDLISTpidl;50 struct tagENUMLIST *pNext; 51 LPITEMIDLIST pidl; 51 52 52 53 } ENUMLIST, *LPENUMLIST; … … 54 55 typedef struct 55 56 { 56 ICOM_VTABLE(IEnumIDList)*lpvtbl;57 DWORDref;58 LPENUMLISTmpFirst;59 LPENUMLISTmpLast;60 LPENUMLISTmpCurrent;57 ICOM_VTABLE(IEnumIDList)* lpvtbl; 58 DWORD ref; 59 LPENUMLIST mpFirst; 60 LPENUMLIST mpLast; 61 LPENUMLIST mpCurrent; 61 62 62 63 } IEnumIDListImpl; … … 68 69 */ 69 70 static BOOL AddToEnumList( 70 71 72 { 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 71 IEnumIDList * iface, 72 LPITEMIDLIST pidl) 73 { 74 ICOM_THIS(IEnumIDListImpl,iface); 75 76 LPENUMLIST pNew; 77 78 TRACE("(%p)->(pidl=%p)\n",This,pidl); 79 pNew = (LPENUMLIST)SHAlloc(sizeof(ENUMLIST)); 80 if(pNew) 81 { 82 /*set the next pointer */ 83 pNew->pNext = NULL; 84 pNew->pidl = pidl; 85 86 /*is This the first item in the list? */ 87 if(!This->mpFirst) 88 { 89 This->mpFirst = pNew; 90 This->mpCurrent = pNew; 91 } 92 93 if(This->mpLast) 94 { 95 /*add the new item to the end of the list */ 96 This->mpLast->pNext = pNew; 97 } 98 99 /*update the last item pointer */ 100 This->mpLast = pNew; 101 TRACE("-- (%p)->(first=%p, last=%p)\n",This,This->mpFirst,This->mpLast); 102 return TRUE; 103 } 104 return FALSE; 104 105 } 105 106 … … 108 109 */ 109 110 static BOOL CreateFolderEnumList( 110 111 112 113 { 114 115 116 LPITEMIDLISTpidl=NULL;117 WIN32_FIND_DATAA stffile; 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 111 IEnumIDList * iface, 112 LPCSTR lpszPath, 113 DWORD dwFlags) 114 { 115 ICOM_THIS(IEnumIDListImpl,iface); 116 117 LPITEMIDLIST pidl=NULL; 118 WIN32_FIND_DATAA stffile; 119 HANDLE hFile; 120 CHAR szPath[MAX_PATH]; 121 122 TRACE("(%p)->(path=%s flags=0x%08lx) \n",This,debugstr_a(lpszPath),dwFlags); 123 124 if(!lpszPath || !lpszPath[0]) return FALSE; 125 126 strcpy(szPath, lpszPath); 127 PathAddBackslashA(szPath); 128 strcat(szPath,"*.*"); 129 130 /*enumerate the folders*/ 131 if(dwFlags & SHCONTF_FOLDERS) 132 { 133 TRACE("-- (%p)-> enumerate SHCONTF_FOLDERS of %s\n",This,debugstr_a(szPath)); 134 hFile = FindFirstFileA(szPath,&stffile); 135 if ( hFile != INVALID_HANDLE_VALUE ) 136 { 137 do 138 { 139 if ( (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && strcmp (stffile.cFileName, ".") && strcmp (stffile.cFileName, "..")) 140 { 141 pidl = _ILCreateFolder (&stffile); 142 if(pidl && AddToEnumList((IEnumIDList*)This, pidl)) 143 { 144 continue; 145 } 146 return FALSE; 147 } 148 } while( FindNextFileA(hFile,&stffile)); 149 FindClose (hFile); 150 } 151 } 152 153 /*enumerate the non-folder items (values) */ 154 if(dwFlags & SHCONTF_NONFOLDERS) 155 { 156 TRACE("-- (%p)-> enumerate SHCONTF_NONFOLDERS of %s\n",This,debugstr_a(szPath)); 157 hFile = FindFirstFileA(szPath,&stffile); 158 if ( hFile != INVALID_HANDLE_VALUE ) 159 { 160 do 161 { 162 if (! (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) 163 { 164 pidl = _ILCreateValue(&stffile); 165 if(pidl && AddToEnumList((IEnumIDList*)This, pidl)) 166 { 167 continue; 168 } 169 return FALSE; 170 } 171 } while( FindNextFileA(hFile,&stffile)); 172 FindClose (hFile); 173 } 174 } 175 return TRUE; 175 176 } 176 177 … … 179 180 */ 180 181 static BOOL CreateDesktopEnumList( 181 182 183 { 184 185 186 LPITEMIDLISTpidl=NULL;187 188 charszPath[MAX_PATH];189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 182 IEnumIDList * iface, 183 DWORD dwFlags) 184 { 185 ICOM_THIS(IEnumIDListImpl,iface); 186 187 LPITEMIDLIST pidl=NULL; 188 HKEY hkey; 189 char szPath[MAX_PATH]; 190 191 TRACE("(%p)->(flags=0x%08lx) \n",This,dwFlags); 192 193 /*enumerate the root folders */ 194 if(dwFlags & SHCONTF_FOLDERS) 195 { 196 /*create the pidl for This item */ 197 pidl = _ILCreateMyComputer(); 198 if(pidl) 199 { 200 if(!AddToEnumList((IEnumIDList*)This, pidl)) 201 return FALSE; 202 } 203 204 if (! RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\explorer\\desktop\\NameSpace", 0, KEY_READ, &hkey)) 205 { 206 char iid[50]; 207 int i=0; 208 209 while (1) 210 { 211 DWORD size = sizeof (iid); 212 213 if (ERROR_SUCCESS!=RegEnumKeyExA(hkey, i, iid, &size, 0, NULL, NULL, NULL)) 214 break; 215 216 pidl = _ILCreateSpecial(iid); 217 218 if(pidl) 219 AddToEnumList((IEnumIDList*)This, pidl); 220 221 i++; 222 } 223 RegCloseKey(hkey); 224 } 225 } 226 #ifndef SHELL_NO_DESKTOP 227 /*enumerate the elements in %windir%\desktop */ 228 SHGetSpecialFolderPathA(0, szPath, CSIDL_DESKTOPDIRECTORY, FALSE); 229 CreateFolderEnumList( (IEnumIDList*)This, szPath, dwFlags); 230 #endif 231 return TRUE; 231 232 } 232 233 … … 235 236 */ 236 237 static BOOL CreateMyCompEnumList( 237 238 239 { 240 241 242 LPITEMIDLISTpidl=NULL;243 DWORDdwDrivemap;244 CHARszDriveName[4];245 HKEYhkey;246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 238 IEnumIDList * iface, 239 DWORD dwFlags) 240 { 241 ICOM_THIS(IEnumIDListImpl,iface); 242 243 LPITEMIDLIST pidl=NULL; 244 DWORD dwDrivemap; 245 CHAR szDriveName[4]; 246 HKEY hkey; 247 248 TRACE("(%p)->(flags=0x%08lx) \n",This,dwFlags); 249 250 /*enumerate the folders*/ 251 if(dwFlags & SHCONTF_FOLDERS) 252 { 253 dwDrivemap = GetLogicalDrives(); 254 strcpy (szDriveName,"A:\\"); 255 while (szDriveName[0]<='Z') 256 { 257 if(dwDrivemap & 0x00000001L) 258 { 259 pidl = _ILCreateDrive(szDriveName); 260 if(pidl) 261 { 262 if(!AddToEnumList((IEnumIDList*)This, pidl)) 263 return FALSE; 264 } 265 } 266 szDriveName[0]++; 267 dwDrivemap = dwDrivemap >> 1; 268 } 269 270 TRACE("-- (%p)-> enumerate (mycomputer shell extensions)\n",This); 271 if (! RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\explorer\\mycomputer\\NameSpace", 0, KEY_READ, &hkey)) 272 { 273 char iid[50]; 274 int i=0; 275 276 while (1) 277 { 278 DWORD size = sizeof (iid); 279 280 if (ERROR_SUCCESS!=RegEnumKeyExA(hkey, i, iid, &size, 0, NULL, NULL, NULL)) 281 break; 282 283 pidl = _ILCreateSpecial(iid); 284 285 if(pidl) 286 AddToEnumList((IEnumIDList*)This, pidl); 287 288 i++; 289 } 290 RegCloseKey(hkey); 291 } 292 } 293 return TRUE; 293 294 } 294 295 … … 297 298 */ 298 299 static BOOL DeleteList( 299 300 { 301 302 303 304 305 306 307 308 309 310 311 312 313 314 300 IEnumIDList * iface) 301 { 302 ICOM_THIS(IEnumIDListImpl,iface); 303 304 LPENUMLIST pDelete; 305 306 TRACE("(%p)->()\n",This); 307 308 while(This->mpFirst) 309 { pDelete = This->mpFirst; 310 This->mpFirst = pDelete->pNext; 311 SHFree(pDelete->pidl); 312 SHFree(pDelete); 313 } 314 This->mpFirst = This->mpLast = This->mpCurrent = NULL; 315 return TRUE; 315 316 } 316 317 … … 320 321 */ 321 322 static HRESULT WINAPI IEnumIDList_fnQueryInterface( 322 323 324 325 { 326 327 328 charxriid[50];329 323 IEnumIDList * iface, 324 REFIID riid, 325 LPVOID *ppvObj) 326 { 327 ICOM_THIS(IEnumIDListImpl,iface); 328 329 char xriid[50]; 330 WINE_StringFromCLSID((LPCLSID)riid,xriid); 330 331 331 332 dprintf(("SHELL32:enumidlist: IEnumIDList_fnQueryInterface((%p)->(\n\tIID:\t%s,%p)\n", … … 334 335 ppvObj)); 335 336 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 337 *ppvObj = NULL; 338 339 if(IsEqualIID(riid, &IID_IUnknown)) /*IUnknown*/ 340 { *ppvObj = This; 341 } 342 else if(IsEqualIID(riid, &IID_IEnumIDList)) /*IEnumIDList*/ 343 { *ppvObj = (IEnumIDList*)This; 344 } 345 346 if(*ppvObj) 347 { IEnumIDList_AddRef((IEnumIDList*)*ppvObj); 348 TRACE("-- Interface: (%p)->(%p)\n",ppvObj,*ppvObj); 349 return S_OK; 350 } 351 352 TRACE("-- Interface: E_NOINTERFACE\n"); 353 return E_NOINTERFACE; 353 354 } 354 355 … … 357 358 */ 358 359 static ULONG WINAPI IEnumIDList_fnAddRef( 359 360 { 361 360 IEnumIDList * iface) 361 { 362 ICOM_THIS(IEnumIDListImpl,iface); 362 363 363 364 dprintf(("SHELL32:enumidlist: IEnumIDList_fnAddRef((%p)->(%lu)\n", … … 365 366 This->ref)); 366 367 367 368 368 shell32_ObjCount++; 369 return ++(This->ref); 369 370 } 370 371 /****************************************************************************** … … 372 373 */ 373 374 static ULONG WINAPI IEnumIDList_fnRelease( 374 375 { 376 375 IEnumIDList * iface) 376 { 377 ICOM_THIS(IEnumIDListImpl,iface); 377 378 378 379 dprintf(("SHELL32:enumidlist: IEnumIDList_fnRelease((%p)->(%lu)\n", … … 380 381 This->ref)); 381 382 382 383 384 385 386 387 388 389 390 383 shell32_ObjCount--; 384 385 if (!--(This->ref)) 386 { TRACE(" destroying IEnumIDList(%p)\n",This); 387 DeleteList((IEnumIDList*)This); 388 HeapFree(GetProcessHeap(),0,This); 389 return 0; 390 } 391 return This->ref; 391 392 } 392 393 … … 396 397 397 398 static HRESULT WINAPI IEnumIDList_fnNext( 398 399 400 401 402 { 403 404 405 406 407 399 IEnumIDList * iface, 400 ULONG celt, 401 LPITEMIDLIST * rgelt, 402 ULONG *pceltFetched) 403 { 404 ICOM_THIS(IEnumIDListImpl,iface); 405 406 ULONG i; 407 HRESULT hr = S_OK; 408 LPITEMIDLIST temp; 408 409 409 410 dprintf(("SHELL32:enumidlist: IEnumIDList_fnNext((%p)->(%ld,%p, %p)\n", … … 416 417 * subsystems actually use it (and so may a third party browser) 417 418 */ 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 419 if(pceltFetched) 420 *pceltFetched = 0; 421 422 *rgelt=0; 423 424 if(celt > 1 && !pceltFetched) 425 { return E_INVALIDARG; 426 } 427 428 for(i = 0; i < celt; i++) 429 { if(!(This->mpCurrent)) 430 { hr = S_FALSE; 431 break; 432 } 433 temp = ILClone(This->mpCurrent->pidl); 434 rgelt[i] = temp; 435 This->mpCurrent = This->mpCurrent->pNext; 436 } 437 if(pceltFetched) 438 { *pceltFetched = i; 439 } 440 441 return hr; 441 442 } 442 443 … … 445 446 */ 446 447 static HRESULT WINAPI IEnumIDList_fnSkip( 447 448 { 449 450 451 452 448 IEnumIDList * iface,ULONG celt) 449 { 450 ICOM_THIS(IEnumIDListImpl,iface); 451 452 DWORD dwIndex; 453 HRESULT hr = S_OK; 453 454 454 455 dprintf(("SHELL32:enumidlist: IEnumIDList_fnSkip((%p)->(%lu)\n", … … 456 457 celt)); 457 458 458 459 460 461 462 463 464 465 459 for(dwIndex = 0; dwIndex < celt; dwIndex++) 460 { if(!This->mpCurrent) 461 { hr = S_FALSE; 462 break; 463 } 464 This->mpCurrent = This->mpCurrent->pNext; 465 } 466 return hr; 466 467 } 467 468 … … 471 472 */ 472 473 static HRESULT WINAPI IEnumIDList_fnReset( 473 474 { 475 474 IEnumIDList * iface) 475 { 476 ICOM_THIS(IEnumIDListImpl,iface); 476 477 477 478 dprintf(("SHELL32:enumidlist: IEnumIDList_fnReset((%p)\n", 478 479 This)); 479 480 480 481 481 This->mpCurrent = This->mpFirst; 482 return S_OK; 482 483 } 483 484 /************************************************************************** … … 485 486 */ 486 487 static HRESULT WINAPI IEnumIDList_fnClone( 487 488 { 489 488 IEnumIDList * iface,LPENUMIDLIST * ppenum) 489 { 490 ICOM_THIS(IEnumIDListImpl,iface); 490 491 491 492 dprintf(("SHELL32:enumidlist: IEnumIDList_fnClone((%p)->() to (%p)->() not implemented\n", … … 493 494 ppenum)); 494 495 495 496 return E_NOTIMPL; 496 497 } 497 498 … … 501 502 static ICOM_VTABLE (IEnumIDList) eidlvt = 502 503 { 503 504 505 506 507 508 509 510 504 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 505 IEnumIDList_fnQueryInterface, 506 IEnumIDList_fnAddRef, 507 IEnumIDList_fnRelease, 508 IEnumIDList_fnNext, 509 IEnumIDList_fnSkip, 510 IEnumIDList_fnReset, 511 IEnumIDList_fnClone, 511 512 }; 512 513 … … 517 518 518 519 IEnumIDList * IEnumIDList_Constructor( 519 520 521 522 { 523 IEnumIDListImpl*lpeidl;524 BOOL ret = FALSE; 525 526 520 LPCSTR lpszPath, 521 DWORD dwFlags, 522 DWORD dwKind) 523 { 524 IEnumIDListImpl* lpeidl; 525 BOOL ret = FALSE; 526 527 lpeidl = (IEnumIDListImpl*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IEnumIDListImpl)); 527 528 528 529 dprintf(("SHELL32:enumidlist: IEnumIDList_Constructor((%p)->(%08xh flags=0x%08lx kind=0x%08lx)\n", … … 532 533 dwKind)); 533 534 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 } 571 535 if (lpeidl) 536 { 537 lpeidl->ref = 1; 538 lpeidl->lpvtbl = &eidlvt; 539 540 switch (dwKind) 541 { 542 case EIDL_DESK: 543 ret = CreateDesktopEnumList((IEnumIDList*)lpeidl, dwFlags); 544 break; 545 546 case EIDL_MYCOMP: 547 ret = CreateMyCompEnumList((IEnumIDList*)lpeidl, dwFlags); 548 break; 549 550 case EIDL_FILE: 551 ret = CreateFolderEnumList((IEnumIDList*)lpeidl, lpszPath, dwFlags); 552 break; 553 } 554 555 if(ret) 556 { 557 shell32_ObjCount++; 558 } 559 else 560 { 561 if (lpeidl) 562 { 563 HeapFree(GetProcessHeap(),0,lpeidl); 564 } 565 } 566 } 567 568 TRACE("-- (%p)->()\n",lpeidl); 569 570 return (IEnumIDList*)lpeidl; 571 } 572 -
trunk/src/shell32/folders.cpp
r1214 r3243 1 /* $Id: folders.cpp,v 1. 1 1999-10-09 11:13:19 sandervlExp $ */1 /* $Id: folders.cpp,v 1.2 2000-03-26 16:34:41 cbratschi Exp $ */ 2 2 3 3 /* … … 7 7 * Project Odin Software License can be found in LICENSE.TXT 8 8 * 9 * Corel WINE 20000324 level 9 10 */ 10 11 11 12 /* 12 * Copyright 1997Marcus Meissner13 * Copyright 1998Juergen Schmied13 * Copyright 1997 Marcus Meissner 14 * Copyright 1998 Juergen Schmied 14 15 * 15 16 */ … … 49 50 50 51 typedef struct 51 { ICOM_VTABLE(IExtractIconA)*lpvtbl;52 DWORDref;53 ICOM_VTABLE(IPersistFile)*lpvtblPersistFile;54 LPITEMIDLISTpidl;52 { ICOM_VTABLE(IExtractIconA)* lpvtbl; 53 DWORD ref; 54 ICOM_VTABLE(IPersistFile)* lpvtblPersistFile; 55 LPITEMIDLIST pidl; 55 56 } IExtractIconAImpl; 56 57 … … 66 67 static HRESULT WINAPI IExtractIconA_fnQueryInterface( IExtractIconA * iface, REFIID riid, LPVOID *ppvObj) 67 68 { 68 69 70 charxriid[50];71 72 69 ICOM_THIS(IExtractIconAImpl,iface); 70 71 char xriid[50]; 72 WINE_StringFromCLSID((LPCLSID)riid,xriid); 73 dprintf(("SHELL32:folders IExtractIconA_fnQueryInterface(%p)->(\n\tIID:\t%s,%p)\n", 73 74 This, 74 75 xriid, 75 76 ppvObj)); 76 77 77 78 79 if(IsEqualIID(riid, &IID_IUnknown))/*IUnknown*/80 81 82 else if(IsEqualIID(riid, &IID_IPersistFile))/*IExtractIcon*/83 84 85 else if(IsEqualIID(riid, &IID_IExtractIconA))/*IExtractIcon*/86 87 88 89 90 { IExtractIconA_AddRef((IExtractIconA*) *ppvObj); 91 92 93 94 95 78 *ppvObj = NULL; 79 80 if(IsEqualIID(riid, &IID_IUnknown)) /*IUnknown*/ 81 { *ppvObj = This; 82 } 83 else if(IsEqualIID(riid, &IID_IPersistFile)) /*IExtractIcon*/ 84 { *ppvObj = (IPersistFile*)&(This->lpvtblPersistFile); 85 } 86 else if(IsEqualIID(riid, &IID_IExtractIconA)) /*IExtractIcon*/ 87 { *ppvObj = (IExtractIconA*)This; 88 } 89 90 if(*ppvObj) 91 { IExtractIconA_AddRef((IExtractIconA*) *ppvObj); 92 dprintf(("SHELL32:folders IExtractIconA_fnQueryInterface-- Interface: (%p)->(%p)\n",ppvObj,*ppvObj)); 93 return S_OK; 94 } 95 dprintf(("SHELL32:folders IExtractIconA_fnQueryInterface-- Interface: E_NOINTERFACE\n")); 96 return E_NOINTERFACE; 96 97 } 97 98 … … 101 102 static ULONG WINAPI IExtractIconA_fnAddRef(IExtractIconA * iface) 102 103 { 103 104 105 104 ICOM_THIS(IExtractIconAImpl,iface); 105 106 dprintf(("SHELL32:folders IExtractIconA_fnAddRef(%p)->(count=%lu)\n", 106 107 This, 107 108 This->ref)); 108 109 109 110 111 110 shell32_ObjCount++; 111 112 return ++(This->ref); 112 113 } 113 114 /************************************************************************** … … 116 117 static ULONG WINAPI IExtractIconA_fnRelease(IExtractIconA * iface) 117 118 { 118 119 120 119 ICOM_THIS(IExtractIconAImpl,iface); 120 121 dprintf(("SHELL32:folders IExtractIconA_fnRelease(%p)->()\n", 121 122 This)); 122 123 123 124 125 126 124 shell32_ObjCount--; 125 126 if (!--(This->ref)) 127 { dprintf(("SHELL32:folders IExtractIconA_fnRelease destroying IExtractIcon(%p)\n", 127 128 This)); 128 129 130 131 132 129 SHFree(This->pidl); 130 HeapFree(GetProcessHeap(),0,This); 131 return 0; 132 } 133 return This->ref; 133 134 } 134 135 /************************************************************************** … … 138 139 */ 139 140 static HRESULT WINAPI IExtractIconA_fnGetIconLocation( 140 141 142 143 144 145 146 { 147 148 149 charsTemp[MAX_PATH];150 DWORDdwNr;151 152 LPITEMIDLISTpSimplePidl = ILFindLastID(This->pidl);153 154 141 IExtractIconA * iface, 142 UINT uFlags, 143 LPSTR szIconFile, 144 UINT cchMax, 145 int * piIndex, 146 UINT * pwFlags) 147 { 148 ICOM_THIS(IExtractIconAImpl,iface); 149 150 char sTemp[MAX_PATH]; 151 DWORD dwNr; 152 GUID const * riid; 153 LPITEMIDLIST pSimplePidl = ILFindLastID(This->pidl); 154 155 dprintf(("SHELL32:folders IExtractIconA_fnGetIconLocation(%p) (flags=%u %p %u %p %p)\n", 155 156 This, 156 157 uFlags, … … 160 161 pwFlags)); 161 162 162 163 164 165 166 167 168 169 170 171 172 else if ( (riid = _ILGetGUIDPointer(pSimplePidl)))173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 } 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 else/* object is file */217 218 219 220 221 222 if (!strcmp("%1",sTemp))/* icon is in the file */223 224 225 226 227 228 229 230 else/* default icon */231 232 233 234 235 236 237 163 if (pwFlags) 164 *pwFlags = 0; 165 166 if (_ILIsDesktop(pSimplePidl)) 167 { 168 lstrcpynA(szIconFile, "shell32.dll", cchMax); 169 *piIndex = 34; 170 } 171 172 /* my computer and other shell extensions */ 173 else if (riid = _ILGetGUIDPointer(pSimplePidl)) 174 { 175 char xriid[50]; 176 strcpy(xriid,"CLSID\\"); 177 WINE_StringFromCLSID((LPCLSID)riid,&xriid[strlen(xriid)]); 178 179 if (HCR_GetDefaultIcon(xriid, sTemp, MAX_PATH, &dwNr)) 180 { 181 lstrcpynA(szIconFile, sTemp, cchMax); 182 *piIndex = dwNr; 183 } 184 else 185 { 186 lstrcpynA(szIconFile, "shell32.dll", cchMax); 187 *piIndex = 15; 188 } 189 190 } 191 else if (_ILIsDrive (pSimplePidl)) 192 { 193 if (HCR_GetDefaultIcon("Drive", sTemp, MAX_PATH, &dwNr)) 194 { 195 lstrcpynA(szIconFile, sTemp, cchMax); 196 *piIndex = dwNr; 197 } 198 else 199 { 200 lstrcpynA(szIconFile, "shell32.dll", cchMax); 201 *piIndex = 8; 202 } 203 } 204 else if (_ILIsFolder (pSimplePidl)) 205 { 206 if (HCR_GetDefaultIcon("Folder", sTemp, MAX_PATH, &dwNr)) 207 { 208 lstrcpynA(szIconFile, sTemp, cchMax); 209 *piIndex = dwNr; 210 } 211 else 212 { 213 lstrcpynA(szIconFile, "shell32.dll", cchMax); 214 *piIndex = 3; 215 } 216 } 217 else /* object is file */ 218 { 219 if (_ILGetExtension (pSimplePidl, sTemp, MAX_PATH) 220 && HCR_MapTypeToValue(sTemp, sTemp, MAX_PATH, TRUE) 221 && HCR_GetDefaultIcon(sTemp, sTemp, MAX_PATH, &dwNr)) 222 { 223 if (!strcmp("%1",sTemp)) /* icon is in the file */ 224 { 225 SHGetPathFromIDListA(This->pidl, sTemp); 226 dwNr = 0; 227 } 228 lstrcpynA(szIconFile, sTemp, cchMax); 229 *piIndex = dwNr; 230 } 231 else /* default icon */ 232 { 233 lstrcpynA(szIconFile, "shell32.dll", cchMax); 234 *piIndex = 0; 235 } 236 } 237 238 dprintf(("SHELL32:folders IExtractIconA_fnGetIconLocation -- %s %x\n", 238 239 szIconFile, 239 240 *piIndex)); 240 241 return NOERROR; 241 242 } 242 243 /************************************************************************** … … 245 246 static HRESULT WINAPI IExtractIconA_fnExtract(IExtractIconA * iface, LPCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize) 246 247 { 247 248 249 248 ICOM_THIS(IExtractIconAImpl,iface); 249 250 dprintf(("SHELL32:folders IExtractIconA_fnExtract (%p) (file=%p index=%u %p %p size=%u) semi-stub\n", 250 251 This, 251 252 pszFile, … … 255 256 nIconSize)); 256 257 257 258 259 260 261 262 263 258 if (phiconLarge) 259 *phiconLarge = pImageList_GetIcon(ShellBigIconList, nIconIndex, ILD_TRANSPARENT); 260 261 if (phiconSmall) 262 *phiconSmall = pImageList_GetIcon(ShellSmallIconList, nIconIndex, ILD_TRANSPARENT); 263 264 return S_OK; 264 265 } 265 266 266 267 static struct ICOM_VTABLE(IExtractIconA) eivt = 267 { 268 269 270 271 272 273 268 { 269 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 270 IExtractIconA_fnQueryInterface, 271 IExtractIconA_fnAddRef, 272 IExtractIconA_fnRelease, 273 IExtractIconA_fnGetIconLocation, 274 IExtractIconA_fnExtract 274 275 }; 275 276 … … 279 280 */ 280 281 static HRESULT WINAPI IEIPersistFile_fnQueryInterface( 281 IPersistFile*iface,282 REFIIDiid,283 LPVOID*ppvObj)284 { 285 286 287 282 IPersistFile *iface, 283 REFIID iid, 284 LPVOID *ppvObj) 285 { 286 _ICOM_THIS_From_IPersistFile(IExtractIconA, iface); 287 288 return IShellFolder_QueryInterface((IExtractIconA*)This, iid, ppvObj); 288 289 } 289 290 … … 292 293 */ 293 294 static ULONG WINAPI IEIPersistFile_fnAddRef( 294 IPersistFile*iface)295 { 296 297 298 295 IPersistFile *iface) 296 { 297 _ICOM_THIS_From_IPersistFile(IExtractIconA, iface); 298 299 return IExtractIconA_AddRef((IExtractIconA*)This); 299 300 } 300 301 … … 303 304 */ 304 305 static ULONG WINAPI IEIPersistFile_fnRelease( 305 IPersistFile*iface)306 { 307 308 309 306 IPersistFile *iface) 307 { 308 _ICOM_THIS_From_IPersistFile(IExtractIconA, iface); 309 310 return IExtractIconA_Release((IExtractIconA*)This); 310 311 } 311 312 … … 314 315 */ 315 316 static HRESULT WINAPI IEIPersistFile_fnGetClassID( 316 IPersistFile*iface,317 LPCLSIDlpClassId)318 { 319 320 321 322 323 324 325 326 317 IPersistFile *iface, 318 LPCLSID lpClassId) 319 { 320 CLSID StdFolderID = { 0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} }; 321 322 if (lpClassId==NULL) 323 return E_POINTER; 324 325 memcpy(lpClassId, &StdFolderID, sizeof(StdFolderID)); 326 327 return S_OK; 327 328 } 328 329 … … 342 343 static HRESULT WINAPI IEIPersistFile_fnLoad(IPersistFile* iface, LPCOLESTR pszFileName, DWORD dwMode) 343 344 { 344 345 346 345 _ICOM_THIS_From_IPersistFile(IExtractIconA, iface); 346 FIXME("%p\n", This); 347 return E_NOTIMPL; 347 348 348 349 } … … 380 381 static struct ICOM_VTABLE(IPersistFile) pfvt = 381 382 { 382 383 384 385 386 387 388 389 390 391 383 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 384 IEIPersistFile_fnQueryInterface, 385 IEIPersistFile_fnAddRef, 386 IEIPersistFile_fnRelease, 387 IEIPersistFile_fnGetClassID, 388 IEIPersistFile_fnIsDirty, /* IEIPersistFile_fnIsDirty */ 389 IEIPersistFile_fnLoad, 390 IEIPersistFile_fnSave, /* IEIPersistFile_fnSave */ 391 IEIPersistFile_fnSaveCompleted, /* IEIPersistFile_fnSaveCompleted */ 392 IEIPersistFile_fnGetCurFile /* IEIPersistFile_fnGetCurFile */ 392 393 }; 393 394 … … 397 398 IExtractIconA* IExtractIconA_Constructor(LPCITEMIDLIST pidl) 398 399 { 399 400 401 402 403 404 405 406 407 408 409 400 IExtractIconAImpl* ei; 401 402 ei=(IExtractIconAImpl*)HeapAlloc(GetProcessHeap(),0,sizeof(IExtractIconAImpl)); 403 ei->ref=1; 404 ei->lpvtbl = &eivt; 405 ei->lpvtblPersistFile = &pfvt; 406 ei->pidl=ILClone(pidl); 407 408 pdump(pidl); 409 410 dprintf(("SHELL32:folders IExtractIconA_Constructor(%p)\n", 410 411 ei)); 411 412 413 } 414 415 412 shell32_ObjCount++; 413 return (IExtractIconA *)ei; 414 } 415 416 -
trunk/src/shell32/iconcache.cpp
r1399 r3243 1 /* $Id: iconcache.cpp,v 1. 3 1999-10-22 13:35:21 phallerExp $ */1 /* $Id: iconcache.cpp,v 1.4 2000-03-26 16:34:41 cbratschi Exp $ */ 2 2 3 3 /* … … 9 9 * shell icon cache (SIC) 10 10 * 11 * Corel WINE 20000324 level 11 12 */ 12 13 … … 27 28 #include "winuser.h" 28 29 #include "wingdi.h" 29 //#include "wine/winuser16.h"30 //#include "wine/winbase16.h"31 30 //#include "neexe.h" 32 31 #include "cursoricon.h" … … 137 136 138 137 //@@@PH no NE support 139 #if 0138 #if 1 140 139 if( size > sizeof(NE_TYPEINFO) ) 141 140 { pTypeInfo = (BYTE*)HeapAlloc( GetProcessHeap(), 0, size); … … 159 158 */ 160 159 //@@@PH no NE support 161 #if 0160 #if 1 162 161 static BYTE * SHELL_LoadResource( HFILE hFile, NE_NAMEINFO* pNInfo, WORD sizeShift, ULONG *uSize) 163 162 { BYTE* ptr; … … 166 165 167 166 *uSize = (DWORD)pNInfo->length << sizeShift; 168 if( (ptr = (BYTE*)HeapAlloc(GetProcessHeap(),0, *uSize) )) 167 ptr = (BYTE*)HeapAlloc(GetProcessHeap(),0, *uSize); 168 if(ptr) 169 169 { _llseek( hFile, (DWORD)pNInfo->offset << sizeShift, SEEK_SET); 170 170 _lread( hFile, (char*)ptr, pNInfo->length << sizeShift); … … 184 184 185 185 *uSize = lpiIDE->dwBytesInRes; 186 if( (ptr = (BYTE*)HeapAlloc(GetProcessHeap(),0, *uSize)) ) 186 ptr = (BYTE*)HeapAlloc(GetProcessHeap(),0, *uSize); 187 if(ptr) 187 188 { _llseek( hFile, lpiIDE->dwImageOffset, SEEK_SET); 188 189 _lread( hFile, (char*)ptr, lpiIDE->dwBytesInRes); … … 222 223 { CURSORICONDIR * lpID; /* icon resource in resource format */ 223 224 *uSize = lpcid.idCount * sizeof(CURSORICONDIRENTRY) + HEADER_SIZE; 224 if( (lpID = (CURSORICONDIR*)HeapAlloc(GetProcessHeap(),0, *uSize) )) 225 lpID = (CURSORICONDIR*)HeapAlloc(GetProcessHeap(),0, *uSize); 226 if(lpID) 225 227 { 226 228 /* copy the header */ … … 253 255 * 254 256 */ 255 #define ICO_INVALID_FILE 1256 #define ICO_NO_ICONS 0257 258 257 HGLOBAL WINAPI ICO_ExtractIconEx(LPCSTR lpszExeFileName, HICON * RetPtr, UINT nIconIndex, UINT n, UINT cxDesired, UINT cyDesired ) 258 // @@@PH turned off 259 #if 0 259 260 { 260 261 dprintf (("SHELL32: ICO_ExtractIconEx not implemented.\n")); 261 262 return 0; 262 263 } 263 264 // @@@PH turned off 265 #if 0 266 { HGLOBAL hRet = ICO_NO_ICONS; 264 #else 265 { HGLOBAL hRet = 0; 267 266 LPBYTE pData; 268 267 OFSTRUCT ofs; … … 277 276 278 277 if( hFile == HFILE_ERROR || !n ) 279 return ICO_INVALID_FILE;278 return hRet; 280 279 281 280 sig = SHELL_GetResourceTable(hFile,&pData); 282 281 283 282 //@@@PH no NE support 284 #if 0283 #if 1 285 284 /* ico file */ 286 285 if( sig==IMAGE_OS2_SIGNATURE || sig==1 ) /* .ICO file */ … … 374 373 if ( !(fmapping = CreateFileMappingA(hFile,NULL,PAGE_READONLY|SEC_COMMIT,0,0,NULL))) 375 374 { WARN("failed to create filemap.\n"); /* FIXME, INVALID_HANDLE_VALUE? */ 376 hRet = ICO_INVALID_FILE;377 375 goto end_2; /* failure */ 378 376 } … … 380 378 if ( !(peimage = (BYTE*)MapViewOfFile(fmapping,FILE_MAP_READ,0,0,0))) 381 379 { WARN("failed to mmap filemap.\n"); 382 hRet = ICO_INVALID_FILE;383 380 goto end_2; /* failure */ 384 381 } … … 401 398 if (!rootresdir) 402 399 { WARN("haven't found section for resource directory.\n"); 403 goto end_ 4; /* failure */400 goto end_3; /* failure */ 404 401 } 405 402 /* search the group icon dir*/ 406 403 if (!(icongroupresdir = GetResDirEntryW(rootresdir,RT_GROUP_ICONW, (DWORD)rootresdir,FALSE))) 407 404 { WARN("No Icongroupresourcedirectory!\n"); 408 goto end_ 4; /* failure */405 goto end_3; /* failure */ 409 406 } 410 407 iconDirCount = icongroupresdir->NumberOfNamedEntries+icongroupresdir->NumberOfIdEntries; … … 416 413 } 417 414 415 /* if nIconIndex is negative we have to extract the icon whose resource 416 id is equal to the absolute value of nIconIndex */ 417 if( nIconIndex < 0 ) 418 { 419 int n = 0; 420 int iId = abs(nIconIndex); 421 PIMAGE_RESOURCE_DIRECTORY_ENTRY xprdeTmp = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)(icongroupresdir+1); 422 nIconIndex = iconDirCount + 1; /* Initialise to get an error at 423 the condition nIconIndex >= iconDirCount 424 below if nothing is found */ 425 while(i<iconDirCount && xprdeTmp) 426 { 427 if(xprdeTmp->u1.Id == iId) 428 { 429 nIconIndex = n; 430 break; 431 } 432 n++; 433 xprdeTmp++; 434 } 435 } 436 418 437 if (nIconIndex >= iconDirCount) 419 438 { WARN("nIconIndex %d is larger than iconDirCount %d\n",nIconIndex,iconDirCount); 420 goto end_ 4; /* failure */439 goto end_3; /* failure */ 421 440 } 422 441 … … 452 471 if (!igdata) 453 472 { WARN("no matching real address for icongroup!\n"); 454 goto end_ 4; /* failure */473 goto end_3; /* failure */ 455 474 } 456 475 RetPtr[i] = (HICON)pLookupIconIdFromDirectoryEx(igdata, TRUE, cxDesired, cyDesired, LR_DEFAULTCOLOR); … … 459 478 if (!(iconresdir=GetResDirEntryW(rootresdir,RT_ICONW,(DWORD)rootresdir,FALSE))) 460 479 { WARN("No Iconresourcedirectory!\n"); 461 goto end_ 4; /* failure */480 goto end_3; /* failure */ 462 481 } 463 482 … … 487 506 goto end_3; /* sucess */ 488 507 } 489 hRet = ICO_INVALID_FILE;490 508 goto end_1; /* unknown filetype */ 491 509 492 510 /* cleaning up (try & catch would be nicer:-) ) */ 493 end_4: hRet = 0; /* failure */494 511 end_3: UnmapViewOfFile(peimage); /* success */ 495 512 end_2: CloseHandle(fmapping); … … 915 932 return ret; 916 933 } 934 935 /* 936 * PE (Portable Execute) File Resources 937 * 938 * Copyright 1995 Thomas Sandford 939 * Copyright 1996 Martin von Loewis 940 * 941 * Based on the Win16 resource handling code in loader/resource.c 942 * Copyright 1993 Robert J. Amstadt 943 * Copyright 1995 Alexandre Julliard 944 * Copyright 1997 Marcus Meissner 945 */ 946 947 //CB: from loader/pe_resource.c 948 949 /********************************************************************** 950 * GetResDirEntryW 951 * 952 * Helper function - goes down one level of PE resource tree 953 * 954 */ 955 PIMAGE_RESOURCE_DIRECTORY GetResDirEntryW(PIMAGE_RESOURCE_DIRECTORY resdirptr, 956 LPCWSTR name,DWORD root, 957 BOOL allowdefault) 958 { 959 int entrynum; 960 PIMAGE_RESOURCE_DIRECTORY_ENTRY entryTable; 961 int namelen; 962 963 if (HIWORD(name)) { 964 if (name[0]=='#') { 965 char buf[10]; 966 967 lstrcpynWtoA(buf,name+1,10); 968 return GetResDirEntryW(resdirptr,(LPCWSTR)atoi(buf),root,allowdefault); 969 } 970 entryTable = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) ( 971 (BYTE *) resdirptr + 972 sizeof(IMAGE_RESOURCE_DIRECTORY)); 973 namelen = lstrlenW(name); 974 for (entrynum = 0; entrynum < resdirptr->NumberOfNamedEntries; entrynum++) 975 { 976 PIMAGE_RESOURCE_DIR_STRING_U str = 977 (PIMAGE_RESOURCE_DIR_STRING_U) (root + 978 entryTable[entrynum].u1.s.NameOffset); 979 if(namelen != str->Length) 980 continue; 981 if(lstrncmpiW(name,str->NameString,str->Length)==0) 982 return (PIMAGE_RESOURCE_DIRECTORY) ( 983 root + 984 entryTable[entrynum].u2.s.OffsetToDirectory); 985 } 986 return NULL; 987 } else { 988 entryTable = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) ( 989 (BYTE *) resdirptr + 990 sizeof(IMAGE_RESOURCE_DIRECTORY) + 991 resdirptr->NumberOfNamedEntries * sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)); 992 for (entrynum = 0; entrynum < resdirptr->NumberOfIdEntries; entrynum++) 993 if ((DWORD)entryTable[entrynum].u1.Name == (DWORD)name) 994 return (PIMAGE_RESOURCE_DIRECTORY) ( 995 root + 996 entryTable[entrynum].u2.s.OffsetToDirectory); 997 /* just use first entry if no default can be found */ 998 if (allowdefault && !name && resdirptr->NumberOfIdEntries) 999 return (PIMAGE_RESOURCE_DIRECTORY) ( 1000 root + 1001 entryTable[0].u2.s.OffsetToDirectory); 1002 return NULL; 1003 } 1004 } 1005 -
trunk/src/shell32/makefile
r3031 r3243 1 # $Id: makefile,v 1.2 2 2000-03-06 23:38:57 birdExp $1 # $Id: makefile,v 1.23 2000-03-26 16:34:41 cbratschi Exp $ 2 2 3 3 # … … 52 52 $(OBJDIR)\sh.obj \ 53 53 $(OBJDIR)\shpolicy.obj \ 54 $(OBJDIR)\systray.obj \ 54 55 $(OBJDIR)\shres.obj 55 56 -
trunk/src/shell32/memorystream.cpp
r1398 r3243 1 /* $Id: memorystream.cpp,v 1. 3 1999-10-22 12:18:46 phallerExp $ */1 /* $Id: memorystream.cpp,v 1.4 2000-03-26 16:34:42 cbratschi Exp $ */ 2 2 3 3 /* … … 15 15 * interface so it was obvious to capsule the file 16 16 * access in a IStream to. 17 * 18 * Corel WINE 20000324 level 17 19 */ 18 20 -
trunk/src/shell32/pidl.cpp
r2354 r3243 1 /* $Id: pidl.cpp,v 1. 5 2000-01-08 02:28:54 phallerExp $ */1 /* $Id: pidl.cpp,v 1.6 2000-03-26 16:34:42 cbratschi Exp $ */ 2 2 3 3 /* … … 14 14 * a pidl == NULL means desktop and is legal 15 15 * 16 * Corel WINE 20000324 level 16 17 */ 17 18 … … 92 93 MESSAGE ("empty pidl (Desktop)\n"); 93 94 } 95 pcheck(pidl); 94 96 } 95 97 … … 892 894 * SHGetDataFromIDListA [SHELL32.247] 893 895 * 896 * NOTES 897 * the pidl can be a simple one. since we cant get the path out of the pidl 898 * we have to take all data from the pidl 894 899 */ 895 900 … … 900 905 int, len) 901 906 { 907 DWORD type; 908 902 909 TRACE_(shell)("sf=%p pidl=%p 0x%04x %p 0x%04x stub\n",psf,pidl,nFormat,dest,len); 903 910 … … 908 915 case SHGDFIL_FINDDATA: 909 916 { 910 WIN32_FIND_DATAA * pfd = (WIN32_FIND_DATAA*)dest; 911 CHAR pszPath[MAX_PATH]; 912 HANDLE handle; 913 914 if ( len < sizeof (WIN32_FIND_DATAA)) { 915 ERR_(shell)("%d does not find sizeof(finddata)\n",len); 916 return E_INVALIDARG; 917 } 918 919 SHGetPathFromIDListA(pidl, pszPath); 920 921 if ((handle = FindFirstFileA ( pszPath, pfd))) 922 FindClose (handle); 917 WIN32_FIND_DATAA * pfd = (WIN32_FIND_DATAA*)dest; 918 919 if ( len < sizeof (WIN32_FIND_DATAA)) return E_INVALIDARG; 920 921 ZeroMemory(pfd, sizeof (WIN32_FIND_DATAA)); 922 _ILGetFileDateTime( pidl, &(pfd->ftLastWriteTime)); 923 pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0); 924 pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0); 925 type = _ILGetDataPointer(pidl)->type; 926 lstrcpynA(pfd->cFileName,_ILGetTextPointer(type,_ILGetDataPointer(pidl)), MAX_PATH); 927 lstrcpynA(pfd->cAlternateFileName,_ILGetSTextPointer(type,_ILGetDataPointer(pidl)), 14); 923 928 } 924 929 return NOERROR; … … 946 951 int, len) 947 952 { 948 if (! psf || !dest ) return E_INVALIDARG; 949 950 switch (nFormat) 951 { 952 case SHGDFIL_FINDDATA: 953 { 954 WIN32_FIND_DATAW * pfd = (WIN32_FIND_DATAW*)dest; 955 WCHAR pszPath[MAX_PATH]; 956 HANDLE handle; 957 958 if ( len < sizeof (WIN32_FIND_DATAW)) { 959 ERR_(shell)("%d does not find sizeof(finddata)\n",len); 960 return E_INVALIDARG; 961 } 962 SHGetPathFromIDListW(pidl, pszPath); 963 if ((handle = FindFirstFileW ( pszPath, pfd))) 964 FindClose (handle); 965 } 966 return NOERROR; 967 default: /* fallthrough */ 968 break; 969 } 970 FIXME_(shell)("(sf=%p pidl=%p nFormat=0x%04x %p 0x%04x), unhandled.\n",psf,pidl,nFormat,dest,len); 971 return SHGetDataFromIDListA( psf, pidl, nFormat, dest, len); 953 DWORD type; 954 955 if (! psf || !dest ) return E_INVALIDARG; 956 957 switch (nFormat) 958 { 959 case SHGDFIL_FINDDATA: 960 { 961 WIN32_FIND_DATAW * pfd = (WIN32_FIND_DATAW*)dest; 962 963 if ( len < sizeof (WIN32_FIND_DATAW)) return E_INVALIDARG; 964 965 ZeroMemory(pfd, sizeof (WIN32_FIND_DATAA)); 966 _ILGetFileDateTime( pidl, &(pfd->ftLastWriteTime)); 967 pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0); 968 pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0); 969 type = _ILGetDataPointer(pidl)->type; 970 lstrcpynAtoW(pfd->cFileName,_ILGetTextPointer(type,_ILGetDataPointer(pidl)), MAX_PATH); 971 lstrcpynAtoW(pfd->cAlternateFileName,_ILGetSTextPointer(type,_ILGetDataPointer(pidl)), 14); 972 } 973 return NOERROR; 974 case SHGDFIL_NETRESOURCE: 975 case SHGDFIL_DESCRIPTIONID: 976 FIXME_(shell)("SHGDFIL %i stub\n", nFormat); 977 break; 978 979 default: 980 ERR_(shell)("Unknown SHGDFIL %i, please report\n", nFormat); 981 } 982 983 return E_INVALIDARG; 972 984 } 973 985 … … 999 1011 1000 1012 pdump(pidl); 1001 1013 #ifdef SHELL_NO_DESKTOP 1002 1014 if(_ILIsDesktop(pidl)) 1003 1015 { … … 1005 1017 } 1006 1018 else 1019 #endif 1007 1020 { 1008 1021 if (SHGetDesktopFolder(&shellfolder)==S_OK) … … 1075 1088 1076 1089 SHFree (pidlParent); 1090 if (psf) IShellFolder_Release(psf); 1077 1091 } 1078 1092 … … 1116 1130 ODINFUNCTION0(LPITEMIDLIST,_ILCreateMyComputer) 1117 1131 { 1118 return _ILCreate(PT_MYCOMP, & IID_MyComputer, sizeof(GUID));1132 return _ILCreate(PT_MYCOMP, &CLSID_MyComputer, sizeof(GUID)); 1119 1133 } 1120 1134 1121 1135 ODINFUNCTION0(LPITEMIDLIST,_ILCreateIExplore) 1122 1136 { 1123 return _ILCreate(PT_MYCOMP, & IID_IExplore, sizeof(GUID));1137 return _ILCreate(PT_MYCOMP, &CLSID_Internet, sizeof(GUID)); 1124 1138 } 1125 1139 1126 1140 ODINFUNCTION0(LPITEMIDLIST,_ILCreateControl) 1127 1141 { 1128 return _ILCreate(PT_SPECIAL, & IID_Control, sizeof(GUID));1142 return _ILCreate(PT_SPECIAL, &CLSID_ControlPanel, sizeof(GUID)); 1129 1143 } 1130 1144 1131 1145 ODINFUNCTION0(LPITEMIDLIST,_ILCreatePrinter) 1132 1146 { 1133 return _ILCreate(PT_SPECIAL, & IID_Printer, sizeof(GUID));1147 return _ILCreate(PT_SPECIAL, &CLSID_Printers, sizeof(GUID)); 1134 1148 } 1135 1149 1136 1150 ODINFUNCTION0(LPITEMIDLIST,_ILCreateNetwork) 1137 1151 { 1138 return _ILCreate(PT_MYCOMP, & IID_Network, sizeof(GUID));1152 return _ILCreate(PT_MYCOMP, &CLSID_NetworkPlaces, sizeof(GUID)); 1139 1153 } 1140 1154 1141 1155 ODINFUNCTION0(LPITEMIDLIST,_ILCreateBitBucket) 1142 1156 { 1143 return _ILCreate(PT_MYCOMP, & IID_BitBucket, sizeof(GUID));1157 return _ILCreate(PT_MYCOMP, &CLSID_RecycleBin, sizeof(GUID)); 1144 1158 } 1145 1159 … … 1357 1371 1358 1372 if (iid) 1359 return IsEqualIID(iid, & IID_MyComputer);1373 return IsEqualIID(iid, &CLSID_MyComputer); 1360 1374 return FALSE; 1361 1375 } … … 1440 1454 pData = _ILGetDataPointer(pidl); 1441 1455 1442 if ( !pData)1456 if (_ILIsDesktop(pidl)) 1443 1457 { 1444 1458 /* desktop */ … … 1621 1635 UINT, uOutSize) 1622 1636 { 1623 FILETIME ft; 1624 SYSTEMTIME time; 1625 1626 if (! _ILGetFileDateTime( pidl, &ft )) return FALSE; 1627 1628 FileTimeToSystemTime (&ft, &time); 1629 return GetDateFormatA(LOCALE_USER_DEFAULT,DATE_SHORTDATE,&time, NULL, pOut, uOutSize); 1637 FILETIME ft; 1638 FILETIME lft; 1639 SYSTEMTIME time; 1640 char strTime[16]; 1641 UINT nTempSize=16; 1642 1643 if (! _ILGetFileDateTime( pidl, &ft )) return FALSE; 1644 1645 FileTimeToLocalFileTime(&ft, &lft); 1646 FileTimeToSystemTime (&lft, &time); 1647 1648 if(GetDateFormatA(LOCALE_USER_DEFAULT,DATE_SHORTDATE,&time, NULL, pOut, uOutSize) > 0) 1649 { 1650 if(GetTimeFormatA(LOCALE_USER_DEFAULT, TIME_NOSECONDS, &time, NULL, strTime, nTempSize) > 0) 1651 { 1652 strcat(pOut," "); 1653 strcat(pOut, strTime); 1654 return TRUE; 1655 } 1656 } 1657 return FALSE; 1630 1658 } 1631 1659 … … 1665 1693 } 1666 1694 1667 1695 /************************************************************************* 1696 * _ILGetFileSizeKB 1697 * 1698 * Given the ItemIdList, get the FileSize in KiloByte 1699 * 1700 * PARAMS 1701 * pidl [I] The ItemIDList 1702 * pOut [I] The buffer to save the result 1703 * uOutsize [I] The size of the buffer 1704 * 1705 * RETURNS 1706 * The FileSize in KiloBytes 1707 * 1708 * NOTES 1709 * - pOut can be null when no string is needed 1710 * - Standard files in explorer or FileOpen have the file size in 1711 * Kilobyte 1712 * 1713 */ 1714 DWORD _ILGetFileSizeKB (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize) 1715 { 1716 LPPIDLDATA pdata =_ILGetDataPointer(pidl); 1717 DWORD dwSize; 1718 char tempSizeStr[24]; 1719 char kbStr[] = "KB"; 1720 int nTempSizeLen, nNumOfComma; 1721 int i,j,k; 1722 1723 switch (pdata->type) 1724 { 1725 case PT_VALUE: 1726 { 1727 if(pdata->u.file.dwFileSize >= 1024) 1728 { 1729 dwSize = pdata->u.file.dwFileSize / 1024; 1730 } 1731 else if(pdata->u.file.dwFileSize > 0) 1732 { 1733 dwSize = 1; 1734 } 1735 else 1736 { 1737 dwSize = 0; 1738 } 1739 1740 if (pOut) 1741 { 1742 sprintf(tempSizeStr,"%0ld",dwSize); 1743 nTempSizeLen = strlen(tempSizeStr); 1744 nNumOfComma = nTempSizeLen / 4; 1745 uOutSize = nNumOfComma + strlen(tempSizeStr); 1746 for(i=nTempSizeLen, j=uOutSize, k=0; j >= 0; j--, k++) 1747 { 1748 if((k %4) == 0 && k != 0) 1749 { 1750 pOut[j] = ','; 1751 k = 0; 1752 } 1753 else 1754 { 1755 pOut[j] = tempSizeStr[i--]; 1756 } 1757 } 1758 strcat(pOut,kbStr); 1759 } 1760 return dwSize; 1761 } 1762 } 1763 return 0; 1764 } 1668 1765 1669 1766 ODINFUNCTION3(BOOL,_ILGetExtension,LPCITEMIDLIST, pidl, … … 1737 1834 1738 1835 /************************************************************************* 1739 * _ILGet AttributeStr1836 * _ILGetFileAttributes 1740 1837 * 1741 1838 * Given the ItemIdList, get the Attrib string format … … 1747 1844 * 1748 1845 * RETURNS 1749 * True if successful1750 * 1751 * NOTES 1752 * 1753 */ 1754 ODINFUNCTION3(BOOL, _ILGet AttributeStr, LPCITEMIDLIST, pidl,1846 * Attributes 1847 * 1848 * NOTES 1849 * 1850 */ 1851 ODINFUNCTION3(BOOL, _ILGetFileAttributes, LPCITEMIDLIST, pidl, 1755 1852 LPSTR, pOut, 1756 1853 UINT, uOutSize) 1757 1854 { 1758 1855 LPPIDLDATA pData =_ILGetDataPointer(pidl); 1759 WORD wAttrib ;1856 WORD wAttrib = 0; 1760 1857 int i; 1761 1858 1762 /* Need At Least 6 characters to represent the Attrib String */1763 if(uOutSize < 6)1764 {1765 return FALSE;1766 }1767 1859 switch(pData->type) 1768 1860 { … … 1773 1865 wAttrib = pData->u.file.uFileAttribs; 1774 1866 break; 1775 default:1776 return FALSE;1777 1867 } 1778 i=0; 1779 if(wAttrib & FILE_ATTRIBUTE_READONLY) 1868 if(uOutSize >= 6) 1780 1869 { 1781 pOut[i++] = 'R'; 1870 i=0; 1871 if(wAttrib & FILE_ATTRIBUTE_READONLY) 1872 { 1873 pOut[i++] = 'R'; 1874 } 1875 if(wAttrib & FILE_ATTRIBUTE_HIDDEN) 1876 { 1877 pOut[i++] = 'H'; 1878 } 1879 if(wAttrib & FILE_ATTRIBUTE_SYSTEM) 1880 { 1881 pOut[i++] = 'S'; 1882 } 1883 if(wAttrib & FILE_ATTRIBUTE_ARCHIVE) 1884 { 1885 pOut[i++] = 'A'; 1886 } 1887 if(wAttrib & FILE_ATTRIBUTE_COMPRESSED) 1888 { 1889 pOut[i++] = 'C'; 1890 } 1891 pOut[i] = 0x00; 1782 1892 } 1783 if(wAttrib & FILE_ATTRIBUTE_HIDDEN) 1784 { 1785 pOut[i++] = 'H'; 1786 } 1787 if(wAttrib & FILE_ATTRIBUTE_SYSTEM) 1788 { 1789 pOut[i++] = 'S'; 1790 } 1791 if(wAttrib & FILE_ATTRIBUTE_ARCHIVE) 1792 { 1793 pOut[i++] = 'A'; 1794 } 1795 if(wAttrib & FILE_ATTRIBUTE_COMPRESSED) 1796 { 1797 pOut[i++] = 'C'; 1798 } 1799 pOut[i] = 0x00; 1800 return TRUE; 1801 } 1802 1893 return wAttrib; 1894 } 1895 -
trunk/src/shell32/pidl.h
r1543 r3243 1 /* $Id: pidl.h,v 1. 2 1999-11-02 18:50:15 phallerExp $ */1 /* $Id: pidl.h,v 1.3 2000-03-26 16:34:43 cbratschi Exp $ */ 2 2 3 3 /* … … 41 41 * PIDLDATA desribes the type of pidl. 42 42 * 43 * 44 * 45 * 46 * my computer 0x1F/20 mycomp (2)(usual)47 * network 0x1Fmycomp48 * bitbucket 0x1Fmycomp49 * drive 0x23/25 drive(usual)50 * drive 0x25/25 drive(lnk/persistant)51 * drive 0x29/25drive52 * shell extension 0x2Emycomp53 * drive 0x2F drive(lnk/persistant)54 * folder/file 0x30 folder/file (1)(lnk/persistant)55 * folder 0x31 folder(usual)56 * value 0x32 file(usual)57 * workgroup 0x41network (3)58 * computer 0x42network (4)59 * whole network 0x47network (5)60 * MSITStore 0x61 htmlhlp (7)61 * history/favorites 0xb1file62 * share 0xc3network (6)43 * object ! first byte / ! format ! living space 44 * ! size 45 * ---------------------------------------------------------------- 46 * my computer 0x1F/20 mycomp (2) (usual) 47 * network 0x1F mycomp 48 * bitbucket 0x1F mycomp 49 * drive 0x23/25 drive (usual) 50 * drive 0x25/25 drive (lnk/persistant) 51 * drive 0x29/25 drive 52 * shell extension 0x2E mycomp 53 * drive 0x2F drive (lnk/persistant) 54 * folder/file 0x30 folder/file (1) (lnk/persistant) 55 * folder 0x31 folder (usual) 56 * value 0x32 file (usual) 57 * workgroup 0x41 network (3) 58 * computer 0x42 network (4) 59 * whole network 0x47 network (5) 60 * MSITStore 0x61 htmlhlp (7) 61 * history/favorites 0xb1 file 62 * share 0xc3 network (6) 63 63 * 64 64 * guess: the persistant elements are non tracking … … 66 66 * (1) dummy byte is used, attributes are empty 67 67 * (2) IID_MyComputer = 20D04FE0L-3AEA-1069-A2D8-08002B30309D 68 * (3) two strings 69 * (4) one string 70 * (5) one string 71 * (6) one string 68 * (3) two strings "workgroup" "microsoft network" 69 * (4) one string "\\sirius" 70 * (5) one string "whole network" 71 * (6) one string "\\sirius\c" 72 72 * (7) contains string "mk:@MSITStore:C:\path\file.chm::/path/filename.htm" 73 * GUID871C5380-42A0-1069-A2EA-08002B30309D73 * GUID 871C5380-42A0-1069-A2EA-08002B30309D 74 74 */ 75 75 76 #define PT_DESKTOP 77 #define PT_MYCOMP 78 #define PT_DRIVE 79 #define PT_DRIVE2 80 #define PT_DRIVE3 81 #define PT_SPECIAL 82 #define PT_DRIVE1 83 #define PT_FOLDER1 84 #define PT_FOLDER 85 #define PT_VALUE 86 #define PT_WORKGRP 87 #define PT_COMP 88 #define PT_NETWORK 89 #define PT_IESPECIAL 90 #define PT_SHARE 76 #define PT_DESKTOP 0x00 /* internal */ 77 #define PT_MYCOMP 0x1F 78 #define PT_DRIVE 0x23 79 #define PT_DRIVE2 0x25 80 #define PT_DRIVE3 0x29 81 #define PT_SPECIAL 0x2E 82 #define PT_DRIVE1 0x2F 83 #define PT_FOLDER1 0x30 84 #define PT_FOLDER 0x31 85 #define PT_VALUE 0x32 86 #define PT_WORKGRP 0x41 87 #define PT_COMP 0x42 88 #define PT_NETWORK 0x47 89 #define PT_IESPECIAL 0xb1 90 #define PT_SHARE 0xc3 91 91 92 92 #include "pshpack1.h" … … 94 94 95 95 typedef struct tagPIDLDATA 96 { PIDLTYPE type;/*00*/97 98 99 { BYTE dummy;/*01*/100 GUID guid;/*02*/101 BYTE dummy1;/*18*/102 103 104 { CHAR szDriveName[20];/*01*/105 DWORD dwUnknown;/*21*/106 107 108 109 { BYTE dummy;/*01 is 0x00 for files or dirs */110 DWORD dwFileSize;/*02*/111 WORD uFileDate;/*06*/112 WORD uFileTime;/*08*/113 WORD uFileAttribs;/*10*/114 CHAR szNames[1];/*12*/115 116 117 118 119 { WORD dummy;/*01*/120 CHAR szNames[1];/*03*/121 122 123 { WORD dummy;/*01*/124 DWORD dummy1;/*02*/125 CHAR szName[1];/*06*/ /* teminated by 0x00 0x00 */126 127 96 { PIDLTYPE type; /*00*/ 97 union 98 { struct 99 { BYTE dummy; /*01*/ 100 GUID guid; /*02*/ 101 BYTE dummy1; /*18*/ 102 } mycomp; 103 struct 104 { CHAR szDriveName[20]; /*01*/ 105 DWORD dwUnknown; /*21*/ 106 /* the drive seems to be 25 bytes every time */ 107 } drive; 108 struct 109 { BYTE dummy; /*01 is 0x00 for files or dirs */ 110 DWORD dwFileSize; /*02*/ 111 WORD uFileDate; /*06*/ 112 WORD uFileTime; /*08*/ 113 WORD uFileAttribs; /*10*/ 114 CHAR szNames[1]; /*12*/ 115 /* Here are comming two strings. The first is the long name. 116 The second the dos name when needed or just 0x00 */ 117 } file, folder, generic; 118 struct 119 { WORD dummy; /*01*/ 120 CHAR szNames[1]; /*03*/ 121 } network; 122 struct 123 { WORD dummy; /*01*/ 124 DWORD dummy1; /*02*/ 125 CHAR szName[1]; /*06*/ /* teminated by 0x00 0x00 */ 126 } htmlhelp; 127 }u; 128 128 } PIDLDATA, *LPPIDLDATA; 129 129 #include "poppack.h" … … 132 132 * getting special values from simple pidls 133 133 */ 134 DWORD WINAPI _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 135 BOOL WINAPI _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 136 DWORD WINAPI _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 137 BOOL WINAPI _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 138 void WINAPI _ILGetFileType (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 139 BOOL WINAPI _ILGetAttributeStr (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 134 DWORD WINAPI _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 135 BOOL WINAPI _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 136 DWORD WINAPI _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 137 BOOL WINAPI _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 138 void WINAPI _ILGetFileType (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 139 DWORD WINAPI _ILGetFileAttributes (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 140 DWORD WINAPI _ILGetFileSizeKB (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 140 141 141 BOOL WINAPI _ILGetFileDateTime(LPCITEMIDLIST pidl, FILETIME *ft);142 DWORD WINAPI _ILGetDrive(LPCITEMIDLIST, LPSTR, UINT16);142 BOOL WINAPI _ILGetFileDateTime (LPCITEMIDLIST pidl, FILETIME *ft); 143 DWORD WINAPI _ILGetDrive (LPCITEMIDLIST, LPSTR, UINT16); 143 144 144 145 /* 145 146 * testing simple pidls 146 147 */ 147 BOOL WINAPI _ILIsDesktop(LPCITEMIDLIST pidl);148 BOOL WINAPI _ILIsMyComputer(LPCITEMIDLIST pidl);149 BOOL WINAPI _ILIsDrive(LPCITEMIDLIST pidl);150 BOOL WINAPI _ILIsFolder(LPCITEMIDLIST pidl);151 BOOL WINAPI _ILIsValue(LPCITEMIDLIST pidl);152 BOOL WINAPI _ILIsSpecialFolder(LPCITEMIDLIST pidl);153 BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl);148 BOOL WINAPI _ILIsDesktop (LPCITEMIDLIST pidl); 149 BOOL WINAPI _ILIsMyComputer (LPCITEMIDLIST pidl); 150 BOOL WINAPI _ILIsDrive (LPCITEMIDLIST pidl); 151 BOOL WINAPI _ILIsFolder (LPCITEMIDLIST pidl); 152 BOOL WINAPI _ILIsValue (LPCITEMIDLIST pidl); 153 BOOL WINAPI _ILIsSpecialFolder (LPCITEMIDLIST pidl); 154 BOOL WINAPI _ILIsPidlSimple (LPCITEMIDLIST pidl); 154 155 155 156 /* 156 157 * simple pidls from strings 157 158 */ 158 LPITEMIDLIST WINAPI _ILCreate(PIDLTYPE,LPCVOID,UINT16);159 LPITEMIDLIST WINAPI _ILCreate (PIDLTYPE,LPCVOID,UINT16); 159 160 160 LPITEMIDLIST WINAPI _ILCreateDesktop(void);161 LPITEMIDLIST WINAPI _ILCreateMyComputer(void);162 LPITEMIDLIST WINAPI _ILCreateIExplore(void);163 LPITEMIDLIST WINAPI _ILCreateControl(void);164 LPITEMIDLIST WINAPI _ILCreatePrinter(void);165 LPITEMIDLIST WINAPI _ILCreateNetwork(void);166 LPITEMIDLIST WINAPI _ILCreateBitBucket(void);167 LPITEMIDLIST WINAPI _ILCreateDrive(LPCSTR);168 LPITEMIDLIST WINAPI _ILCreateFolder(WIN32_FIND_DATAA * stffile);169 LPITEMIDLIST WINAPI _ILCreateValue(WIN32_FIND_DATAA * stffile);170 LPITEMIDLIST WINAPI _ILCreateSpecial(LPCSTR szGUID);161 LPITEMIDLIST WINAPI _ILCreateDesktop (void); 162 LPITEMIDLIST WINAPI _ILCreateMyComputer (void); 163 LPITEMIDLIST WINAPI _ILCreateIExplore (void); 164 LPITEMIDLIST WINAPI _ILCreateControl (void); 165 LPITEMIDLIST WINAPI _ILCreatePrinter (void); 166 LPITEMIDLIST WINAPI _ILCreateNetwork (void); 167 LPITEMIDLIST WINAPI _ILCreateBitBucket (void); 168 LPITEMIDLIST WINAPI _ILCreateDrive (LPCSTR); 169 LPITEMIDLIST WINAPI _ILCreateFolder (WIN32_FIND_DATAA * stffile); 170 LPITEMIDLIST WINAPI _ILCreateValue (WIN32_FIND_DATAA * stffile); 171 LPITEMIDLIST WINAPI _ILCreateSpecial (LPCSTR szGUID); 171 172 172 173 /* 173 174 * helper functions (getting struct-pointer) 174 175 */ 175 LPPIDLDATA WINAPI _ILGetDataPointer(LPCITEMIDLIST);176 LPSTR WINAPI _ILGetTextPointer(PIDLTYPE type, LPPIDLDATA pidldata);177 LPSTR WINAPI _ILGetSTextPointer(PIDLTYPE type, LPPIDLDATA pidldata);178 REFIID WINAPI _ILGetGUIDPointer(LPCITEMIDLIST pidl);176 LPPIDLDATA WINAPI _ILGetDataPointer (LPCITEMIDLIST); 177 LPSTR WINAPI _ILGetTextPointer (PIDLTYPE type, LPPIDLDATA pidldata); 178 LPSTR WINAPI _ILGetSTextPointer (PIDLTYPE type, LPPIDLDATA pidldata); 179 REFIID WINAPI _ILGetGUIDPointer (LPCITEMIDLIST pidl); 179 180 180 /* 181 * debug helper 181 /* 182 * debug helper 182 183 */ 183 184 void pdump (LPCITEMIDLIST pidl); -
trunk/src/shell32/regstream.cpp
r1214 r3243 1 /* $Id: regstream.cpp,v 1. 1 1999-10-09 11:13:20 sandervlExp $ */1 /* $Id: regstream.cpp,v 1.2 2000-03-26 16:34:43 cbratschi Exp $ */ 2 2 3 3 /* … … 8 8 * Project Odin Software License can be found in LICENSE.TXT 9 9 * 10 * Corel WINE 20000324 level 10 11 */ 11 12 12 13 /* 13 * 14 * SHRegOpenStream 14 15 */ 15 16 … … 47 48 48 49 typedef struct 49 { 50 DWORDref;51 HKEYhKey;52 LPSTRpszSubKey;53 LPSTRpszValue;54 LPBYTEpbBuffer;55 DWORDdwLength;56 DWORDdwPos;50 { ICOM_VTABLE(IStream)* lpvtbl; 51 DWORD ref; 52 HKEY hKey; 53 LPSTR pszSubKey; 54 LPSTR pszValue; 55 LPBYTE pbBuffer; 56 DWORD dwLength; 57 DWORD dwPos; 57 58 } ISHRegStream; 58 59 … … 65 66 static HRESULT WINAPI IStream_fnQueryInterface(IStream *iface, REFIID riid, LPVOID *ppvObj) 66 67 { 67 68 69 70 68 ICOM_THIS(ISHRegStream, iface); 69 70 char xriid[50]; 71 WINE_StringFromCLSID((LPCLSID)riid,xriid); 71 72 72 73 dprintf(("SHELL32:regstream IStream_fnQueryInterface (%p)->(\n\tIID:\t%s,%p)\n", … … 75 76 ppvObj)); 76 77 77 78 79 if(IsEqualIID(riid, &IID_IUnknown))/*IUnknown*/80 81 82 else if(IsEqualIID(riid, &IID_IStream))/*IStream*/83 84 85 86 87 88 89 78 *ppvObj = NULL; 79 80 if(IsEqualIID(riid, &IID_IUnknown)) /*IUnknown*/ 81 { *ppvObj = This; 82 } 83 else if(IsEqualIID(riid, &IID_IStream)) /*IStream*/ 84 { *ppvObj = This; 85 } 86 87 if(*ppvObj) 88 { 89 IStream_AddRef((IStream*)*ppvObj); 90 dprintf(("SHELL32:regstream IStream_fnQueryInterface -- Interface: (%p)->(%p)\n", 90 91 ppvObj, 91 92 *ppvObj)); 92 93 94 95 93 return S_OK; 94 } 95 dprintf(("SHELL32:regstream IStream_fnQueryInterface-- Interface: E_NOINTERFACE\n")); 96 return E_NOINTERFACE; 96 97 } 97 98 … … 101 102 static ULONG WINAPI IStream_fnAddRef(IStream *iface) 102 103 { 103 104 105 104 ICOM_THIS(ISHRegStream, iface); 105 106 dprintf(("SHELL32:regstream IStream_fnAddRef (%p)->(count=%lu)\n", 106 107 This, 107 108 This->ref)); 108 109 109 110 110 shell32_ObjCount++; 111 return ++(This->ref); 111 112 } 112 113 … … 116 117 static ULONG WINAPI IStream_fnRelease(IStream *iface) 117 118 { 118 119 120 121 This)); 122 123 124 125 126 127 This)); 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 119 ICOM_THIS(ISHRegStream, iface); 120 121 dprintf(("SHELL32:regstream IStream_fnRelease(%p)->()\n", 122 This)); 123 124 shell32_ObjCount--; 125 126 if (!--(This->ref)) 127 { dprintf(("SHELL32:regstream IStream_fnRelease destroying SHReg IStream (%p)\n", 128 This)); 129 130 if (This->pszSubKey) 131 HeapFree(GetProcessHeap(),0,This->pszSubKey); 132 133 if (This->pszValue) 134 HeapFree(GetProcessHeap(),0,This->pszValue); 135 136 if (This->pbBuffer) 137 HeapFree(GetProcessHeap(),0,This->pbBuffer); 138 139 if (This->hKey) 140 RegCloseKey(This->hKey); 141 142 HeapFree(GetProcessHeap(),0,This); 143 return 0; 144 } 145 return This->ref; 145 146 } 146 147 147 148 HRESULT WINAPI IStream_fnRead (IStream * iface, void* pv, ULONG cb, ULONG* pcbRead) 148 149 { 149 150 151 152 153 150 ICOM_THIS(ISHRegStream, iface); 151 152 DWORD dwBytesToRead, dwBytesLeft; 153 154 dprintf(("SHELL32:regstream IStream_fnRead(%p)->(%p,0x%08lx,%p)\n", 154 155 This, 155 156 pv, 156 157 cb, 157 158 pcbRead)); 158 159 160 161 162 163 164 if ( 0 >= dwBytesLeft )/* end of buffer */165 166 167 168 169 170 171 This->dwPos += dwBytesToRead;/* adjust pointer */172 173 174 175 176 159 160 if ( !pv ) 161 return STG_E_INVALIDPOINTER; 162 163 dwBytesLeft = This->dwLength - This->dwPos; 164 165 if ( 0 >= dwBytesLeft ) /* end of buffer */ 166 return S_FALSE; 167 168 dwBytesToRead = ( cb > dwBytesLeft) ? dwBytesLeft : cb; 169 170 memmove ( pv, (This->pbBuffer) + (This->dwPos), dwBytesToRead); 171 172 This->dwPos += dwBytesToRead; /* adjust pointer */ 173 174 if (pcbRead) 175 *pcbRead = dwBytesToRead; 176 177 return S_OK; 177 178 } 178 179 HRESULT WINAPI IStream_fnWrite (IStream * iface, const void* pv, ULONG cb, ULONG* pcbWritten) 179 180 { 180 181 182 183 This)); 184 185 181 ICOM_THIS(ISHRegStream, iface); 182 183 dprintf(("SHELL32:regstream IStream_fnWrite(%p)\n", 184 This)); 185 186 return E_NOTIMPL; 186 187 } 187 188 HRESULT WINAPI IStream_fnSeek (IStream * iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) 188 189 { 189 190 191 192 This)); 193 194 190 ICOM_THIS(ISHRegStream, iface); 191 192 dprintf(("SHELL32:regstream IStream_fnSeek(%p)\n", 193 This)); 194 195 return E_NOTIMPL; 195 196 } 196 197 HRESULT WINAPI IStream_fnSetSize (IStream * iface, ULARGE_INTEGER libNewSize) 197 198 { 198 199 200 201 This)); 202 203 199 ICOM_THIS(ISHRegStream, iface); 200 201 dprintf(("SHELL32:regstream IStream_fnSetSize(%p)\n", 202 This)); 203 204 return E_NOTIMPL; 204 205 } 205 206 HRESULT WINAPI IStream_fnCopyTo (IStream * iface, IStream* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten) 206 207 { 207 208 209 210 This)); 211 212 208 ICOM_THIS(ISHRegStream, iface); 209 210 dprintf(("SHELL32:regstream IStream_fnCopyTo(%p)\n", 211 This)); 212 213 return E_NOTIMPL; 213 214 } 214 215 HRESULT WINAPI IStream_fnCommit (IStream * iface, DWORD grfCommitFlags) 215 216 { 216 217 218 219 This)); 220 221 217 ICOM_THIS(ISHRegStream, iface); 218 219 dprintf(("SHELL32:regstream IStream_fnCommit(%p)\n", 220 This)); 221 222 return E_NOTIMPL; 222 223 } 223 224 HRESULT WINAPI IStream_fnRevert (IStream * iface) 224 225 { 225 226 227 228 This)); 229 230 226 ICOM_THIS(ISHRegStream, iface); 227 228 dprintf(("SHELL32:regstream IStream_fnRevert(%p)\n", 229 This)); 230 231 return E_NOTIMPL; 231 232 } 232 233 HRESULT WINAPI IStream_fnLockRegion (IStream * iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) 233 234 { 234 235 236 237 This)); 238 239 235 ICOM_THIS(ISHRegStream, iface); 236 237 dprintf(("SHELL32:regstream IStream_fnLockRegion(%p)\n", 238 This)); 239 240 return E_NOTIMPL; 240 241 } 241 242 HRESULT WINAPI IStream_fnUnlockRegion (IStream * iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) 242 243 { 243 244 245 246 This)); 247 248 244 ICOM_THIS(ISHRegStream, iface); 245 246 dprintf(("SHELL32:regstream IStream_fnUnlockRegion(%p)\n", 247 This)); 248 249 return E_NOTIMPL; 249 250 } 250 251 HRESULT WINAPI IStream_fnStat (IStream * iface, STATSTG* pstatstg, DWORD grfStatFlag) 251 252 { 252 253 254 255 This)); 256 257 253 ICOM_THIS(ISHRegStream, iface); 254 255 dprintf(("SHELL32:regstream IStream_fnStat(%p)\n", 256 This)); 257 258 return E_NOTIMPL; 258 259 } 259 260 HRESULT WINAPI IStream_fnClone (IStream * iface, IStream** ppstm) 260 261 { 261 262 263 264 This)); 265 266 262 ICOM_THIS(ISHRegStream, iface); 263 264 dprintf(("SHELL32:regstream IStream_fnClone(%p)\n", 265 This)); 266 267 return E_NOTIMPL; 267 268 } 268 269 269 270 static struct ICOM_VTABLE(IStream) rstvt = 270 { 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 271 { 272 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 273 IStream_fnQueryInterface, 274 IStream_fnAddRef, 275 IStream_fnRelease, 276 IStream_fnRead, 277 IStream_fnWrite, 278 IStream_fnSeek, 279 IStream_fnSetSize, 280 IStream_fnCopyTo, 281 IStream_fnCommit, 282 IStream_fnRevert, 283 IStream_fnLockRegion, 284 IStream_fnUnlockRegion, 285 IStream_fnStat, 286 IStream_fnClone 287 287 288 }; 288 289 … … 291 292 */ 292 293 IStream *IStream_Constructor(HKEY hKey, LPCSTR pszSubKey, LPCSTR pszValue, DWORD grfMode) 293 { ISHRegStream*rstr;294 DWORDdwType;295 296 297 298 294 { ISHRegStream* rstr; 295 DWORD dwType; 296 297 rstr = (ISHRegStream*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(ISHRegStream)); 298 rstr->lpvtbl=&rstvt; 299 rstr->ref = 1; 299 300 300 301 dprintf(("SHELL32:regstream IStream_Constructor(%08xh,%ls,%ls,%08xh)\n", … … 304 305 grfMode)); 305 306 306 307 308 309 310 311 312 313 314 315 rstr->pszValue = HEAP_strdupA (GetProcessHeap(),0, pszValue); 316 317 318 319 320 321 322 323 324 325 326 327 328 307 if ( ERROR_SUCCESS == RegOpenKeyExA (hKey, pszSubKey, 0, KEY_READ, &(rstr->hKey))) 308 { if ( ERROR_SUCCESS == RegQueryValueExA(rstr->hKey, (LPSTR)pszValue,0,0,0,&(rstr->dwLength))) 309 { 310 /* read the binary data into the buffer */ 311 rstr->pbBuffer = (BYTE*)HeapAlloc(GetProcessHeap(),0,rstr->dwLength); 312 if (rstr->pbBuffer) 313 { if ( ERROR_SUCCESS == RegQueryValueExA(rstr->hKey, (LPSTR)pszValue,0,&dwType,rstr->pbBuffer,&(rstr->dwLength))) 314 { if (dwType == REG_BINARY ) 315 { rstr->pszSubKey = HEAP_strdupA (GetProcessHeap(),0, pszSubKey); 316 rstr->pszValue = HEAP_strdupA (GetProcessHeap(),0, pszValue); 317 dprintf(("SHELL32:regstream IStream_Constructor(%p)->0x%08x,%s,%s,0x%08lx\n", rstr, hKey, pszSubKey, pszValue, grfMode)); 318 shell32_ObjCount++; 319 return (IStream*)rstr; 320 } 321 } 322 HeapFree (GetProcessHeap(),0,rstr->pbBuffer); 323 } 324 } 325 RegCloseKey(rstr->hKey); 326 327 } 328 HeapFree (GetProcessHeap(),0,rstr); 329 return NULL; 329 330 } 330 331 331 332 332 333 /************************************************************************* 333 * OpenRegStream 334 * OpenRegStream [SHELL32.85] 334 335 * 335 336 * NOTES … … 343 344 pszValue, 344 345 grfMode)); 345 346 } 346 return IStream_Constructor(hkey, pszSubkey, pszValue, grfMode); 347 } -
trunk/src/shell32/shell.cpp
r2534 r3243 1 /* $Id: shell.cpp,v 1. 4 2000-01-27 21:50:45 sandervlExp $ */1 /* $Id: shell.cpp,v 1.5 2000-03-26 16:34:43 cbratschi Exp $ */ 2 2 3 3 /* … … 10 10 * 11 11 * 1998 Marcus Meissner 12 * 13 * Corel WINE 20000324 level 12 14 */ 13 15 … … 48 50 #include "imagelist.h" 49 51 #include "shell32_main.h" 52 #include "winversion.h" 50 53 51 54 #include <heapstring.h> … … 90 93 static const char* lpstrMsgShellActivate = "ACTIVATESHELLWINDOW"; 91 94 92 static HWND16 SHELL_hWnd = 0; 93 static HHOOK SHELL_hHook = 0; 94 static UINT16 uMsgWndCreated = 0; 95 static UINT16 uMsgWndDestroyed = 0; 96 static UINT16 uMsgShellActivate = 0; 97 HINSTANCE16 SHELL_hInstance = 0; 95 static HWND SHELL_hWnd = 0; 96 static HHOOK SHELL_hHook = 0; 97 static UINT uMsgWndCreated = 0; 98 static UINT uMsgWndDestroyed = 0; 99 static UINT uMsgShellActivate = 0; 98 100 HINSTANCE SHELL_hInstance32; 99 101 static int SHELL_Attach = 0; … … 377 379 &commandlen ) == ERROR_SUCCESS ) 378 380 { 381 LPSTR tmp; 382 char param[256]; 383 LONG paramlen = 256; 384 385 /* Get the parameters needed by the application 386 from the associated ddeexec key */ 387 tmp = strstr(filetype,"command"); 388 tmp[0] = '\0'; 389 strcat(filetype,"ddeexec"); 390 391 if(RegQueryValueA( HKEY_CLASSES_ROOT, filetype, param,¶mlen ) == ERROR_SUCCESS) 392 { 393 strcat(command," "); 394 strcat(command,param); 395 commandlen += paramlen; 396 } 397 379 398 /* Is there a replace() function anywhere? */ 380 399 command[commandlen]='\0'; … … 472 491 473 492 //@@@PH no NE support 474 #if 0493 #if 1 475 494 if( size > sizeof(NE_TYPEINFO) ) 476 495 { pTypeInfo = (BYTE*)HeapAlloc( GetProcessHeap(), 0, size); … … 490 509 return 0; /* failed */ 491 510 } 492 511 #if 0 //CB: DirectResAlloc16 not yet ported 512 /************************************************************************* 513 * SHELL_LoadResource 514 */ 515 static HGLOBAL SHELL_LoadResource(HINSTANCE hInst, HFILE hFile, NE_NAMEINFO* pNInfo, WORD sizeShift) 516 { BYTE* ptr; 517 HGLOBAL handle = DirectResAlloc( hInst, 0x10, (DWORD)pNInfo->length << sizeShift); 518 519 TRACE("\n"); 520 521 if( (ptr = (BYTE*)GlobalLock( handle )) ) 522 { _llseek( hFile, (DWORD)pNInfo->offset << sizeShift, SEEK_SET); 523 _lread( hFile, (char*)ptr, pNInfo->length << sizeShift); 524 return handle; 525 } 526 return 0; 527 } 528 529 /************************************************************************* 530 * ICO_LoadIcon 531 */ 532 static HGLOBAL ICO_LoadIcon(HINSTANCE hInst, HFILE hFile, LPicoICONDIRENTRY lpiIDE) 533 { BYTE* ptr; 534 HGLOBAL handle = DirectResAlloc( hInst, 0x10, lpiIDE->dwBytesInRes); 535 TRACE("\n"); 536 if( (ptr = (BYTE*)GlobalLock( handle )) ) 537 { _llseek( hFile, lpiIDE->dwImageOffset, SEEK_SET); 538 _lread( hFile, (char*)ptr, lpiIDE->dwBytesInRes); 539 return handle; 540 } 541 return 0; 542 } 543 544 /************************************************************************* 545 * ICO_GetIconDirectory 546 * 547 * Read .ico file and build phony ICONDIR struct for GetIconID 548 */ 549 static HGLOBAL ICO_GetIconDirectory(HINSTANCE hInst, HFILE hFile, LPicoICONDIR* lplpiID ) 550 { WORD id[3]; /* idReserved, idType, idCount */ 551 LPicoICONDIR lpiID; 552 int i; 553 554 TRACE("\n"); 555 _llseek( hFile, 0, SEEK_SET ); 556 if( _lread(hFile,(char*)id,sizeof(id)) != sizeof(id) ) return 0; 557 558 /* check .ICO header 559 * 560 * - see http://www.microsoft.com/win32dev/ui/icons.htm 561 */ 562 563 if( id[0] || id[1] != 1 || !id[2] ) return 0; 564 565 i = id[2]*sizeof(icoICONDIRENTRY) ; 566 567 lpiID = (LPicoICONDIR)HeapAlloc( GetProcessHeap(), 0, i + sizeof(id)); 568 569 if( _lread(hFile,(char*)lpiID->idEntries,i) == i ) 570 { HGLOBAL handle = DirectResAlloc( hInst, 0x10, 571 id[2]*sizeof(CURSORICONDIRENTRY) + sizeof(id) ); 572 if( handle ) 573 { CURSORICONDIR* lpID = (CURSORICONDIR*)GlobalLock( handle ); 574 lpID->idReserved = lpiID->idReserved = id[0]; 575 lpID->idType = lpiID->idType = id[1]; 576 lpID->idCount = lpiID->idCount = id[2]; 577 for( i=0; i < lpiID->idCount; i++ ) 578 { memcpy((void*)(lpID->idEntries + i), 579 (void*)(lpiID->idEntries + i), sizeof(CURSORICONDIRENTRY) - 2); 580 lpID->idEntries[i].wResId = i; 581 } 582 *lplpiID = lpiID; 583 return handle; 584 } 585 } 586 /* fail */ 587 588 HeapFree( GetProcessHeap(), 0, lpiID); 589 return 0; 590 } 591 #endif 592 /************************************************************************* 593 * InternalExtractIcon [SHELL.39] 594 * 595 * This abortion is called directly by Progman 596 */ 597 HGLOBAL WINAPI InternalExtractIcon(HINSTANCE hInstance, 598 LPCSTR lpszExeFileName, UINT nIconIndex, WORD n ) 599 { HGLOBAL hRet = 0; 600 HGLOBAL* RetPtr = NULL; 601 LPBYTE pData; 602 OFSTRUCT ofs; 603 DWORD sig; 604 HFILE hFile = OpenFile( lpszExeFileName, &ofs, OF_READ ); 605 UINT iconDirCount = 0,iconCount = 0; 606 LPBYTE peimage; 607 HANDLE fmapping; 608 609 TRACE("(%04x,file %s,start %d,extract %d\n", 610 hInstance, lpszExeFileName, nIconIndex, n); 611 612 if( hFile == HFILE_ERROR || !n ) 613 return 0; 614 615 hRet = GlobalAlloc( GMEM_FIXED | GMEM_ZEROINIT, sizeof(HICON16)*n); 616 RetPtr = (HGLOBAL*)GlobalLock(hRet); 617 618 *RetPtr = (n == 0xFFFF)? 0: 1; /* error return values */ 619 620 sig = SHELL_GetResourceTable(hFile,&pData); 621 #if 0 //CB: some functions not (yet) supported 622 if( sig==IMAGE_OS2_SIGNATURE || sig==1 ) /* .ICO file */ 623 { HICON hIcon = 0; 624 NE_TYPEINFO* pTInfo = (NE_TYPEINFO*)(pData + 2); 625 NE_NAMEINFO* pIconStorage = NULL; 626 NE_NAMEINFO* pIconDir = NULL; 627 LPicoICONDIR lpiID = NULL; 628 629 if( pData == (BYTE*)-1 ) 630 { hIcon = ICO_GetIconDirectory(hInstance, hFile, &lpiID); /* check for .ICO file */ 631 if( hIcon ) 632 { iconDirCount = 1; iconCount = lpiID->idCount; 633 } 634 } 635 else while( pTInfo->type_id && !(pIconStorage && pIconDir) ) 636 { if( pTInfo->type_id == NE_RSCTYPE_GROUP_ICON ) /* find icon directory and icon repository */ 637 { iconDirCount = pTInfo->count; 638 pIconDir = ((NE_NAMEINFO*)(pTInfo + 1)); 639 TRACE("\tfound directory - %i icon families\n", iconDirCount); 640 } 641 if( pTInfo->type_id == NE_RSCTYPE_ICON ) 642 { iconCount = pTInfo->count; 643 pIconStorage = ((NE_NAMEINFO*)(pTInfo + 1)); 644 TRACE("\ttotal icons - %i\n", iconCount); 645 } 646 pTInfo = (NE_TYPEINFO *)((char*)(pTInfo+1)+pTInfo->count*sizeof(NE_NAMEINFO)); 647 } 648 649 /* load resources and create icons */ 650 651 if( (pIconStorage && pIconDir) || lpiID ) 652 { if( nIconIndex == (UINT16)-1 ) 653 { RetPtr[0] = iconDirCount; 654 } 655 else if( nIconIndex < iconDirCount ) 656 { UINT i, icon; 657 if( n > iconDirCount - nIconIndex ) 658 n = iconDirCount - nIconIndex; 659 660 for( i = nIconIndex; i < nIconIndex + n; i++ ) 661 { /* .ICO files have only one icon directory */ 662 663 if( lpiID == NULL ) 664 hIcon = SHELL_LoadResource( hInstance, hFile, pIconDir + i, *(WORD*)pData ); 665 RetPtr[i-nIconIndex] = GetIconID( hIcon, 3 ); 666 GlobalFree(hIcon); 667 } 668 669 for( icon = nIconIndex; icon < nIconIndex + n; icon++ ) 670 { hIcon = 0; 671 if( lpiID ) 672 { hIcon = ICO_LoadIcon( hInstance, hFile, lpiID->idEntries + RetPtr[icon-nIconIndex]); 673 } 674 else 675 { for( i = 0; i < iconCount; i++ ) 676 { if( pIconStorage[i].id == (RetPtr[icon-nIconIndex] | 0x8000) ) 677 { hIcon = SHELL_LoadResource( hInstance, hFile, pIconStorage + i,*(WORD*)pData ); 678 } 679 } 680 } 681 if( hIcon ) 682 { RetPtr[icon-nIconIndex] = LoadIconHandler16( hIcon, TRUE ); 683 FarSetOwner16( RetPtr[icon-nIconIndex], GetExePtr(hInstance) ); 684 } 685 else 686 { RetPtr[icon-nIconIndex] = 0; 687 } 688 } 689 } 690 } 691 if( lpiID ) 692 HeapFree( GetProcessHeap(), 0, lpiID); 693 else 694 HeapFree( GetProcessHeap(), 0, pData); 695 } 696 #endif 697 if( sig == IMAGE_NT_SIGNATURE) 698 { LPBYTE idata,igdata; 699 PIMAGE_DOS_HEADER dheader; 700 PIMAGE_NT_HEADERS pe_header; 701 PIMAGE_SECTION_HEADER pe_sections; 702 PIMAGE_RESOURCE_DIRECTORY rootresdir,iconresdir,icongroupresdir; 703 PIMAGE_RESOURCE_DATA_ENTRY idataent,igdataent; 704 int i,j; 705 PIMAGE_RESOURCE_DIRECTORY_ENTRY xresent; 706 CURSORICONDIR **cids; 707 708 fmapping = CreateFileMappingA(hFile,NULL,PAGE_READONLY|SEC_COMMIT,0,0,NULL); 709 if (fmapping == 0) 710 { /* FIXME, INVALID_HANDLE_VALUE? */ 711 WARN("failed to create filemap.\n"); 712 hRet = 0; 713 goto end_2; /* failure */ 714 } 715 peimage = (BYTE*)MapViewOfFile(fmapping,FILE_MAP_READ,0,0,0); 716 if (!peimage) 717 { WARN("failed to mmap filemap.\n"); 718 hRet = 0; 719 goto end_2; /* failure */ 720 } 721 dheader = (PIMAGE_DOS_HEADER)peimage; 722 723 /* it is a pe header, SHELL_GetResourceTable checked that */ 724 pe_header = (PIMAGE_NT_HEADERS)(peimage+dheader->e_lfanew); 725 726 /* probably makes problems with short PE headers... but I haven't seen 727 * one yet... 728 */ 729 pe_sections = (PIMAGE_SECTION_HEADER)(((char*)pe_header)+sizeof(*pe_header)); 730 rootresdir = NULL; 731 732 for (i=0;i<pe_header->FileHeader.NumberOfSections;i++) 733 { if (pe_sections[i].Characteristics & IMAGE_SCN_CNT_UNINITIALIZED_DATA) 734 continue; 735 /* FIXME: doesn't work when the resources are not in a seperate section */ 736 if (pe_sections[i].VirtualAddress == pe_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress) 737 { rootresdir = (PIMAGE_RESOURCE_DIRECTORY)((char*)peimage+pe_sections[i].PointerToRawData); 738 break; 739 } 740 } 741 742 if (!rootresdir) 743 { WARN("haven't found section for resource directory.\n"); 744 goto end_4; /* failure */ 745 } 746 747 icongroupresdir = GetResDirEntryW(rootresdir,RT_GROUP_ICONW, (DWORD)rootresdir,FALSE); 748 749 if (!icongroupresdir) 750 { WARN("No Icongroupresourcedirectory!\n"); 751 goto end_4; /* failure */ 752 } 753 754 iconDirCount = icongroupresdir->NumberOfNamedEntries+icongroupresdir->NumberOfIdEntries; 755 756 if( nIconIndex == (UINT)-1 ) 757 { RetPtr[0] = iconDirCount; 758 goto end_3; /* success */ 759 } 760 761 if (nIconIndex >= iconDirCount) 762 { WARN("nIconIndex %d is larger than iconDirCount %d\n",nIconIndex,iconDirCount); 763 GlobalFree(hRet); 764 goto end_4; /* failure */ 765 } 766 767 cids = (CURSORICONDIR**)HeapAlloc(GetProcessHeap(),0,n*sizeof(CURSORICONDIR*)); 768 769 /* caller just wanted the number of entries */ 770 xresent = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)(icongroupresdir+1); 771 772 /* assure we don't get too much ... */ 773 if( n > iconDirCount - nIconIndex ) 774 { n = iconDirCount - nIconIndex; 775 } 776 777 /* starting from specified index ... */ 778 xresent = xresent+nIconIndex; 779 780 for (i=0;i<n;i++,xresent++) 781 { CURSORICONDIR *cid; 782 PIMAGE_RESOURCE_DIRECTORY resdir; 783 784 /* go down this resource entry, name */ 785 resdir = (PIMAGE_RESOURCE_DIRECTORY)((DWORD)rootresdir+(xresent->u2.s.OffsetToDirectory)); 786 787 /* default language (0) */ 788 resdir = GetResDirEntryW(resdir,(LPWSTR)0,(DWORD)rootresdir,TRUE); 789 igdataent = (PIMAGE_RESOURCE_DATA_ENTRY)resdir; 790 791 /* lookup address in mapped image for virtual address */ 792 igdata = NULL; 793 794 for (j=0;j<pe_header->FileHeader.NumberOfSections;j++) 795 { if (igdataent->OffsetToData < pe_sections[j].VirtualAddress) 796 continue; 797 if (igdataent->OffsetToData+igdataent->Size > pe_sections[j].VirtualAddress+pe_sections[j].SizeOfRawData) 798 continue; 799 igdata = peimage+(igdataent->OffsetToData-pe_sections[j].VirtualAddress+pe_sections[j].PointerToRawData); 800 } 801 802 if (!igdata) 803 { WARN("no matching real address for icongroup!\n"); 804 goto end_4; /* failure */ 805 } 806 /* found */ 807 cid = (CURSORICONDIR*)igdata; 808 cids[i] = cid; 809 RetPtr[i] = LookupIconIdFromDirectoryEx(igdata,TRUE,GetSystemMetrics(SM_CXICON),GetSystemMetrics(SM_CYICON),0); 810 } 811 812 iconresdir=GetResDirEntryW(rootresdir,RT_ICONW,(DWORD)rootresdir,FALSE); 813 814 if (!iconresdir) 815 { WARN("No Iconresourcedirectory!\n"); 816 goto end_4; /* failure */ 817 } 818 819 for (i=0;i<n;i++) 820 { PIMAGE_RESOURCE_DIRECTORY xresdir; 821 xresdir = GetResDirEntryW(iconresdir,(LPWSTR)(DWORD)RetPtr[i],(DWORD)rootresdir,FALSE); 822 xresdir = GetResDirEntryW(xresdir,(LPWSTR)0,(DWORD)rootresdir,TRUE); 823 idataent = (PIMAGE_RESOURCE_DATA_ENTRY)xresdir; 824 idata = NULL; 825 826 /* map virtual to address in image */ 827 for (j=0;j<pe_header->FileHeader.NumberOfSections;j++) 828 { if (idataent->OffsetToData < pe_sections[j].VirtualAddress) 829 continue; 830 if (idataent->OffsetToData+idataent->Size > pe_sections[j].VirtualAddress+pe_sections[j].SizeOfRawData) 831 continue; 832 idata = peimage+(idataent->OffsetToData-pe_sections[j].VirtualAddress+pe_sections[j].PointerToRawData); 833 } 834 if (!idata) 835 { WARN("no matching real address found for icondata!\n"); 836 RetPtr[i]=0; 837 continue; 838 } 839 RetPtr[i] = CreateIconFromResourceEx(idata,idataent->Size,TRUE,0x00030000,GetSystemMetrics(SM_CXICON),GetSystemMetrics(SM_CYICON),0); 840 } 841 goto end_3; /* sucess */ 842 } 843 goto end_1; /* return array with icon handles */ 844 845 /* cleaning up (try & catch would be nicer) */ 846 end_4: hRet = 0; /* failure */ 847 end_3: UnmapViewOfFile(peimage); /* success */ 848 end_2: CloseHandle(fmapping); 849 end_1: _lclose( hFile); 850 return hRet; 851 } 493 852 494 853 /************************************************************************* … … 510 869 { if( hIcon == 1 ) /* no icons found in given file */ 511 870 { char tempPath[0x104]; 512 UINT 16uRet = FindExecutableA(lpIconPath,NULL,tempPath);871 UINT uRet = FindExecutableA(lpIconPath,NULL,tempPath); 513 872 514 873 if( uRet > 32 && tempPath[0] ) -
trunk/src/shell32/shell32_Ca.orc
r3031 r3243 1 /* $Id: shell32_Ca.orc,v 1. 1 2000-03-06 23:38:57 birdExp $ */1 /* $Id: shell32_Ca.orc,v 1.2 2000-03-26 16:34:44 cbratschi Exp $ */ 2 2 LANGUAGE LANG_CATALAN, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "D'Acord", 1, 153, 130, 50, 129 DEFPUSHBUTTON "D'Acord", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Wineha estat construit per:", 98, 8, 55, 137, 1013 LTEXT "Odin ha estat construit per:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Cs.orc
r3031 r3243 1 /* $Id: shell32_Cs.orc,v 1. 1 2000-03-06 23:38:58 birdExp $ */1 /* $Id: shell32_Cs.orc,v 1.2 2000-03-26 16:34:44 cbratschi Exp $ */ 2 2 LANGUAGE LANG_CZECH, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 129 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Winewas brought to you by:", 98, 8, 55, 137, 1013 LTEXT "Odin was brought to you by:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Da.orc
r3031 r3243 1 /* $Id: shell32_Da.orc,v 1. 1 2000-03-06 23:38:58 birdExp $ */1 /* $Id: shell32_Da.orc,v 1.2 2000-03-26 16:34:45 cbratschi Exp $ */ 2 2 LANGUAGE LANG_DANISH, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 129 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Winehavde ikke været mulig uden hjælp fra disse personer:", 98, 8, 55, 137, 1013 LTEXT "Odin havde ikke været mulig uden hjælp fra disse personer:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_De.orc
r3031 r3243 1 /* $Id: shell32_De.orc,v 1. 1 2000-03-06 23:38:59 birdExp $ */1 /* $Id: shell32_De.orc,v 1.2 2000-03-26 16:34:45 cbratschi Exp $ */ 2 2 LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 129 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Wine was brought to you by:", 98, 8, 55, 137, 1013 LTEXT "Odin wurde entwickelt von:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_En.orc
r3031 r3243 1 /* $Id: shell32_En.orc,v 1. 1 2000-03-06 23:38:59 birdExp $ */1 /* $Id: shell32_En.orc,v 1.2 2000-03-26 16:34:45 cbratschi Exp $ */ 2 2 LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT 3 3 … … 8 8 FONT 10, "System" 9 9 { 10 DEFPUSHBUTTON "OK", 1, 156, 147, 50, 12, WS_TABSTOP10 DEFPUSHBUTTON "OK", IDOK, 156, 147, 50, 12, WS_TABSTOP 11 11 LISTBOX 99, 8, 85, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 12 12 ICON "", 1088, 189, 50, 14, 16 … … 21 21 FONT 10, "System" 22 22 { 23 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 12, WS_TABSTOP23 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12, WS_TABSTOP 24 24 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 25 25 ICON "", 1088, 189, 10, 14, 16 … … 28 28 } 29 29 #endif 30 31 /* columns in the shellview */ 32 STRINGTABLE LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL 33 BEGIN 34 IDS_SHV_COLUMN1 "File" 35 IDS_SHV_COLUMN2 "Size" 36 IDS_SHV_COLUMN3 "Type" 37 IDS_SHV_COLUMN4 "Modified" 38 IDS_SHV_COLUMN5 "Attrs" 39 IDS_SHV_COLUMN3DV "Size" 40 IDS_SHV_COLUMN4DV "Size available" 41 42 END 43 44 STRINGTABLE DISCARDABLE 45 { 46 IDS_SHV_INVALID_FILENAME_TITLE "Rename" 47 IDS_SHV_INVALID_FILENAME "A filename cannot contain any of the following characters: \n / \\ : * ? \" < > |" 48 IDS_SHV_INVALID_MOVE_TITLE "Error Renaming File" 49 IDS_SHV_INVALID_MOVE "Cannot rename %s: A file with the same you specified already exists. Specify a different filename." 50 } 51 52 STRINGTABLE DISCARDABLE 53 { 54 IDS_ABOUTBOX "&About FolderPicker Test" 55 IDS_DOCUMENTFOLDERS "Document Folders" 56 IDS_PERSONAL "My Documents" 57 IDS_FAVORITES "My Favorites" 58 IDS_PATH "System Path" 59 IDS_DESKTOP "Desktop" 60 IDS_FONTS "Fonts" 61 IDS_MYCOMPUTER "My Computer" 62 IDS_SYSTEMFOLDERS "System Folders" 63 IDS_LOCALHARDRIVES "Local Hard Drives" 64 IDS_FILENOTFOUND "File not found" 65 } 66 -
trunk/src/shell32/shell32_Eo.orc
r3031 r3243 1 /* $Id: shell32_Eo.orc,v 1. 1 2000-03-06 23:39:00 birdExp $ */1 /* $Id: shell32_Eo.orc,v 1.2 2000-03-26 16:34:45 cbratschi Exp $ */ 2 2 LANGUAGE LANG_ESPERANTO, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "Enorde", 1, 153, 130, 50, 129 DEFPUSHBUTTON "Enorde", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Winewas brought to you by:", 98, 8, 55, 137, 1013 LTEXT "Odin was brought to you by:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Es.orc
r3031 r3243 1 /* $Id: shell32_Es.orc,v 1. 1 2000-03-06 23:39:00 birdExp $ */1 /* $Id: shell32_Es.orc,v 1.2 2000-03-26 16:34:46 cbratschi Exp $ */ 2 2 LANGUAGE LANG_SPANISH, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "Aceptar", 1, 153, 130, 50, 129 DEFPUSHBUTTON "Aceptar", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Winees disponible gracias a:", 98, 8, 55, 137, 1013 LTEXT "Odin es disponible gracias a:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Fi.orc
r3031 r3243 1 /* $Id: shell32_Fi.orc,v 1. 1 2000-03-06 23:39:01 birdExp $ */1 /* $Id: shell32_Fi.orc,v 1.2 2000-03-26 16:34:46 cbratschi Exp $ */ 2 2 LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "Järjestelmä" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 129 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Wine:n tekijät:", 98, 8, 55, 137, 1013 LTEXT "Odin:n tekijät:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Fr.orc
r3031 r3243 1 /* $Id: shell32_Fr.orc,v 1. 1 2000-03-06 23:39:01 birdExp $ */1 /* $Id: shell32_Fr.orc,v 1.2 2000-03-26 16:34:46 cbratschi Exp $ */ 2 2 LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 129 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Wine est une réalisation de:", 98, 8, 55, 137, 1013 LTEXT "Odin est une ralisation de:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Hu.orc
r3031 r3243 1 /* $Id: shell32_Hu.orc,v 1. 1 2000-03-06 23:39:02 birdExp $ */1 /* $Id: shell32_Hu.orc,v 1.2 2000-03-26 16:34:47 cbratschi Exp $ */ 2 2 LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 129 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Winewas brought to you by:", 98, 8, 55, 137, 1013 LTEXT "Odin was brought to you by:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_It.orc
r3031 r3243 1 /* $Id: shell32_It.orc,v 1. 1 2000-03-06 23:39:02 birdExp $ */1 /* $Id: shell32_It.orc,v 1.2 2000-03-26 16:34:47 cbratschi Exp $ */ 2 2 LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 129 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Winewas brought to you by:", 98, 8, 55, 137, 1013 LTEXT "Odin was brought to you by:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Nl.orc
r3031 r3243 1 /* $Id: shell32_Nl.orc,v 1. 1 2000-03-06 23:39:03 birdExp $ */1 /* $Id: shell32_Nl.orc,v 1.2 2000-03-26 16:34:47 cbratschi Exp $ */ 2 2 LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 12, WS_TABSTOP9 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12, WS_TABSTOP 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Wineis geschreven door:", 98, 8, 55, 137, 1013 LTEXT "Odin is geschreven door:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_No.orc
r3031 r3243 1 /* $Id: shell32_No.orc,v 1. 1 2000-03-06 23:39:04 birdExp $ */1 /* $Id: shell32_No.orc,v 1.2 2000-03-26 16:34:48 cbratschi Exp $ */ 2 2 LANGUAGE LANG_NORWEGIAN, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 129 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Winewas brought to you by:", 98, 8, 55, 137, 1013 LTEXT "Odin was brought to you by:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Pl.orc
r3031 r3243 1 /* $Id: shell32_Pl.orc,v 1. 1 2000-03-06 23:39:04 birdExp $ */1 /* $Id: shell32_Pl.orc,v 1.2 2000-03-26 16:34:48 cbratschi Exp $ */ 2 2 LANGUAGE LANG_POLISH, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 129 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Winewas brought to you by:", 98, 8, 55, 137, 1013 LTEXT "Odin was brought to you by:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Pt.orc
r3031 r3243 1 /* $Id: shell32_Pt.orc,v 1. 1 2000-03-06 23:39:05 birdExp $ */1 /* $Id: shell32_Pt.orc,v 1.2 2000-03-26 16:34:48 cbratschi Exp $ */ 2 2 LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 129 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Winefoi disponibilizado por:", 98, 8, 55, 137, 1013 LTEXT "Odin foi disponibilizado por:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Ru.orc
r3031 r3243 1 /* $Id: shell32_Ru.orc,v 1. 1 2000-03-06 23:39:06 birdExp $ */1 /* $Id: shell32_Ru.orc,v 1.2 2000-03-26 16:34:49 cbratschi Exp $ */ 2 2 LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 12, WS_TABSTOP9 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12, WS_TABSTOP 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT "Ðàçðàáîò÷èêè Wine:", 98, 8, 55, 137, 1013 LTEXT "Ðàçðàáîò÷èêè Odin :", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Sv.orc
r3031 r3243 1 /* $Id: shell32_Sv.orc,v 1. 1 2000-03-06 23:39:07 birdExp $ */1 /* $Id: shell32_Sv.orc,v 1.2 2000-03-26 16:34:49 cbratschi Exp $ */ 2 2 LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT 3 3 … … 7 7 FONT 10, "System" 8 8 { 9 DEFPUSHBUTTON "OK", 1, 153, 130, 50, 129 DEFPUSHBUTTON "OK", IDOK, 153, 130, 50, 12 10 10 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 11 11 ICON "", 1088, 189, 10, 14, 16 12 12 LTEXT "", 100, 8, 10, 137, 33 13 LTEXT " Winehade inte varit möjligt utan dessa personer:", 98, 8, 55, 137, 1013 LTEXT "Odin hade inte varit möjligt utan dessa personer:", 98, 8, 55, 137, 10 14 14 } 15 15 -
trunk/src/shell32/shell32_Wa.orc
r3031 r3243 1 /* $Id: shell32_Wa.orc,v 1. 1 2000-03-06 23:39:08 birdExp $ */1 /* $Id: shell32_Wa.orc,v 1.2 2000-03-26 16:34:49 cbratschi Exp $ */ 2 2 LANGUAGE LANG_WALON, SUBLANG_DEFAULT 3 3 … … 12 12 FONT 10, "System" 13 13 { 14 DEFPUSHBUTTON "I Va", 1, 153, 130, 50, 1214 DEFPUSHBUTTON "I Va", IDOK, 153, 130, 50, 12 15 15 LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER 16 16 ICON "", 1088, 189, 10, 14, 16 17 17 LTEXT "", 100, 8, 10, 137, 33 18 LTEXT " Winea estu fwait par:", 98, 8, 55, 137, 1018 LTEXT "Odin a estu fwait par:", 98, 8, 55, 137, 10 19 19 } 20 20 -
trunk/src/shell32/shell32_main.cpp
r2477 r3243 1 /* $Id: shell32_main.cpp,v 1. 8 2000-01-18 22:27:56 sandervlExp $ */1 /* $Id: shell32_main.cpp,v 1.9 2000-03-26 16:34:49 cbratschi Exp $ */ 2 2 3 3 /* … … 11 11 * 1998 Marcus Meissner 12 12 * 1998 Juergen Schmied (jsch) * <juergen.schmied@metronet.de> 13 * 14 * Corel WINE 20000324 level 13 15 */ 14 16 … … 61 63 #define MORE_DEBUG 1 62 64 65 BOOL VERSION_OsIsUnicode(VOID) 66 { 67 return FALSE; 68 } 63 69 64 70 /************************************************************************* … … 330 336 UINT, nIconIndex ) 331 337 { 332 dprintf(("SHELL32:Shell32_Main:ExtractIconA not implemented.\n")); 333 334 #if 0 335 //@@@PH 336 HGLOBAL handle = InternalExtractIconA(hInstance,lpszExeFileName,nIconIndex, 1); 338 HGLOBAL handle = InternalExtractIcon(hInstance,lpszExeFileName,nIconIndex, 1); 337 339 TRACE_(shell)("\n"); 338 340 if( handle ) … … 344 346 return hIcon; 345 347 } 346 #endif 347 return 0; 348 return 0; 348 349 } 349 350 … … 423 424 #define DROP_FIELD_TOP (-15) 424 425 #define DROP_FIELD_HEIGHT 15 426 427 #if 0 //CB: not used 428 extern HICON hIconTitleFont; 429 #endif 425 430 426 431 static BOOL __get_dropline( HWND hWnd, LPRECT lprect ) … … 442 447 PAPPBARDATA, data) 443 448 { 444 dprintf(("SHELL32:Shell32_Main:SHAppBarMessage not implemented.\n")); 445 446 switch (msg) 447 { case ABM_GETSTATE: 448 return ABS_ALWAYSONTOP | ABS_AUTOHIDE; 449 case ABM_GETTASKBARPOS: 450 /* fake a taskbar on the bottom of the desktop */ 451 { RECT rec; 452 GetWindowRect(GetDesktopWindow(), &rec); 453 rec.left = 0; 454 rec.top = rec.bottom - 2; 455 } 456 return TRUE; 457 case ABM_ACTIVATE: 458 case ABM_GETAUTOHIDEBAR: 459 case ABM_NEW: 460 case ABM_QUERYPOS: 461 case ABM_REMOVE: 462 case ABM_SETAUTOHIDEBAR: 463 case ABM_SETPOS: 464 case ABM_WINDOWPOSCHANGED: 449 int width=data->rc.right - data->rc.left; 450 int height=data->rc.bottom - data->rc.top; 451 RECT rec=data->rc; 452 453 dprintf(("SHELL32: SHAppBarMessage.\n")); 454 455 switch (msg) 456 { case ABM_GETSTATE: 457 return ABS_ALWAYSONTOP | ABS_AUTOHIDE; 458 case ABM_GETTASKBARPOS: 459 GetWindowRect(data->hWnd, &rec); 460 data->rc=rec; 461 return TRUE; 462 case ABM_ACTIVATE: 463 SetActiveWindow(data->hWnd); 464 return TRUE; 465 case ABM_GETAUTOHIDEBAR: 466 data->hWnd=GetActiveWindow(); 467 return TRUE; 468 case ABM_NEW: 469 SetWindowPos(data->hWnd,HWND_TOP,rec.left,rec.top, 470 width,height,SWP_SHOWWINDOW); 471 return TRUE; 472 case ABM_QUERYPOS: 473 GetWindowRect(data->hWnd, &(data->rc)); 474 return TRUE; 475 case ABM_REMOVE: 476 CloseHandle(data->hWnd); 477 return TRUE; 478 case ABM_SETAUTOHIDEBAR: 479 SetWindowPos(data->hWnd,HWND_TOP,rec.left+1000,rec.top, 480 width,height,SWP_SHOWWINDOW); 481 return TRUE; 482 case ABM_SETPOS: 483 data->uEdge=(ABE_RIGHT | ABE_LEFT); 484 SetWindowPos(data->hWnd,HWND_TOP,data->rc.left,data->rc.top, 485 width,height,SWP_SHOWWINDOW); 486 return TRUE; 487 case ABM_WINDOWPOSCHANGED: 488 SetWindowPos(data->hWnd,HWND_TOP,rec.left,rec.top, 489 width,height,SWP_SHOWWINDOW); 490 return TRUE; 491 } 465 492 return FALSE; 466 }467 return 0;468 493 } 469 494 … … 484 509 /************************************************************************* 485 510 * SHLoadInProc [SHELL32.225] 486 * 511 * Create an instance of specified object class from within the shell process 487 512 */ 488 513 489 514 ODINFUNCTION1(DWORD, SHLoadInProc, DWORD, dwArg1) 490 515 { 491 dprintf(("SHELL32:Shell32_Main:SHLoadInProc not implemented.\n")); 492 return 0; 516 CLSID *id; 517 518 dprintf(("SHELL32: SHLoadInProc\n")); 519 520 CLSIDFromString((LPCOLESTR) dwArg1, id); 521 if (S_OK==SHCoCreateInstance( (LPSTR) dwArg1, id, NULL, &IID_IUnknown, NULL) ) 522 return NOERROR; 523 return DISP_E_MEMBERNOTFOUND; 493 524 } 494 525 … … 518 549 } 519 550 551 cmd[0] = '\0'; 520 552 retval = SHELL_FindExecutable( lpFile, lpOperation, cmd ); 521 553 … … 531 563 retval = WinExec( cmd, iShowCmd ); 532 564 } 565 else if(PathIsURLA((LPSTR)lpFile)) /* File not found, check for URL */ 566 { 567 char lpstrProtocol[256]; 568 LONG cmdlen = 512; 569 LPSTR lpstrRes; 570 INT iSize; 571 572 lpstrRes = strchr(lpFile,':'); 573 iSize = lpstrRes - lpFile; 574 575 /* Looking for ...protocol\shell\lpOperation\command */ 576 strncpy(lpstrProtocol,lpFile,iSize); 577 lpstrProtocol[iSize]='\0'; 578 strcat( lpstrProtocol, "\\shell\\" ); 579 strcat( lpstrProtocol, lpOperation ); 580 strcat( lpstrProtocol, "\\command" ); 581 582 /* Remove File Protocol from lpFile */ 583 /* In the case file://path/file */ 584 if(!strnicmp(lpFile,"file",iSize)) 585 { 586 lpFile += iSize; 587 while(*lpFile == ':') lpFile++; 588 } 589 590 591 /* Get the application for the protocol and execute it */ 592 if (RegQueryValueA( HKEY_CLASSES_ROOT, lpstrProtocol, cmd, 593 &cmdlen ) == ERROR_SUCCESS ) 594 { 595 LPSTR tok; 596 LPSTR tmp; 597 char param[256] = ""; 598 LONG paramlen = 256; 599 600 /* Get the parameters needed by the application 601 from the associated ddeexec key */ 602 tmp = strstr(lpstrProtocol,"command"); 603 tmp[0] = '\0'; 604 strcat(lpstrProtocol,"ddeexec"); 605 606 if(RegQueryValueA( HKEY_CLASSES_ROOT, lpstrProtocol, param,¶mlen ) == ERROR_SUCCESS) 607 { 608 strcat(cmd," "); 609 strcat(cmd,param); 610 cmdlen += paramlen; 611 } 612 613 /* Is there a replace() function anywhere? */ 614 cmd[cmdlen]='\0'; 615 tok=strstr( cmd, "%1" ); 616 if (tok != NULL) 617 { 618 tok[0]='\0'; /* truncate string at the percent */ 619 strcat( cmd, lpFile ); /* what if no dir in xlpFile? */ 620 tok=strstr( cmd, "%1" ); 621 if ((tok!=NULL) && (strlen(tok)>2)) 622 { 623 strcat( cmd, &tok[2] ); 624 } 625 } 626 627 retval = WinExec( cmd, iShowCmd ); 628 } 629 } 630 /* Check if file specified is in the form www.??????.*** */ 631 else if(!strnicmp(lpFile,"www",3)) 632 { 633 /* if so, append lpFile http:// and call ShellExecute */ 634 char lpstrTmpFile[256] = "http://" ; 635 strcat(lpstrTmpFile,lpFile); 636 retval = ShellExecuteA(hWnd,lpOperation,lpstrTmpFile,NULL,NULL,0); 637 } 638 /* Nothing was done yet, try to execute the cmdline directly, 639 maybe it's an OS/2 program */ 640 else 641 { 642 strcpy(cmd,lpFile); 643 strcat(cmd,lpParameters ? lpParameters : ""); 644 retval = WinExec( cmd, iShowCmd ); 645 } 646 533 647 if (lpDirectory) 534 648 SetCurrentDirectoryA( old_dir ); … … 585 699 HWND hwndOdinLogo = GetDlgItem(hWnd, IDC_ODINLOGO); 586 700 if(hwndOdinLogo) { 587 588 701 HBITMAP hBitmap = LoadBitmapA(shell32_hInstance, MAKEINTRESOURCEA(IDB_ODINLOGO)); 702 SendMessageA(hwndOdinLogo, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); 589 703 } 590 704 591 705 hWndCtl = GetDlgItem(hWnd, IDC_LISTBOX); 592 706 SendMessageA( hWndCtl, WM_SETREDRAW, 0, 0 ); 707 #if 0 //CB: not used 708 SendMessageA( hWndCtl, WM_SETFONT, hIconTitleFont, 0 ); 709 #endif 593 710 while (*pstr) 594 711 { … … 730 847 info.szOtherStuff = szOtherStuff; 731 848 info.hIcon = hIcon; 732 if (!hIcon) info.hIcon = LoadIconA( 0, (LPCSTR)OIC_ODINICON);849 if (!hIcon) info.hIcon = LoadIconA( 0, MAKEINTRESOURCEA(OIC_ODINICON) ); 733 850 return DialogBoxIndirectParamA( GetWindowLongA( hWnd, GWL_HINSTANCE ), 734 851 (DLGTEMPLATE*)dlgTemplate , hWnd, AboutDlgProc, (LPARAM)&info ); … … 756 873 info.szOtherStuff = HEAP_strdupWtoA( GetProcessHeap(), 0, szOtherStuff ); 757 874 info.hIcon = hIcon; 758 if (!hIcon) info.hIcon = LoadIconA( 0, (LPCSTR)OIC_ODINICON);875 if (!hIcon) info.hIcon = LoadIconA( 0, MAKEINTRESOURCEA(OIC_ODINICON) ); 759 876 ret = DialogBoxIndirectParamA( GetWindowLongA( hWnd, GWL_HINSTANCE ), 760 877 (DLGTEMPLATE*)dlgTemplate, hWnd, AboutDlgProc, (LPARAM)&info ); … … 762 879 HeapFree( GetProcessHeap(), 0, (LPSTR)info.szOtherStuff ); 763 880 return ret; 764 }765 766 /*************************************************************************767 * Shell_NotifyIcon [SHELL32.297]768 * FIXME769 * This function is supposed to deal with the systray.770 * Any ideas on how this is to be implimented?771 */772 773 ODINFUNCTION2(BOOL, Shell_NotifyIconA, DWORD, dwMessage,774 PNOTIFYICONDATAA, pnid )775 {776 dprintf(("SHELL32:Shell32_Main:Shell_NotifyIconA not implemented\n"));777 return FALSE;778 }779 780 /*************************************************************************781 * Shell_NotifyIcon [SHELL32.?]782 * FIXME783 * This function is supposed to deal with the systray.784 * Any ideas on how this is to be implimented?785 */786 787 ODINFUNCTION2(BOOL, Shell_NotifyIconW, DWORD, dwMessage,788 PNOTIFYICONDATAW, pnid )789 {790 dprintf(("SHELL32:Shell32_Main:Shell_NotifyIconA not implemented\n"));791 return FALSE;792 }793 794 795 /*************************************************************************796 * Shell_NotifyIcon [SHELL32.296]797 * FIXME798 * This function is supposed to deal with the systray.799 * Any ideas on how this is to be implimented?800 */801 802 BOOL WINAPI Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATAA pnid )803 {804 if (VERSION_OsIsUnicode())805 return(Shell_NotifyIconW(dwMessage,(PNOTIFYICONDATAW)pnid));806 else807 return(Shell_NotifyIconA(dwMessage,pnid));808 881 } 809 882 … … 984 1057 985 1058 SIC_Initialize(); 1059 SYSTRAY_Init(); 986 1060 987 1061 break; … … 1025 1099 return TRUE; 1026 1100 } 1101 1102 /************************************************************************* 1103 * DllInstall [SHELL32.202] 1104 * 1105 * PARAMETERS 1106 * 1107 * BOOL bInstall - TRUE for install, FALSE for uninstall 1108 * LPCWSTR pszCmdLine - command line (unused by shell32?) 1109 */ 1110 1111 HRESULT WINAPI DllInstall(BOOL bInstall, LPCWSTR cmdline) 1112 { 1113 FIXME("(%s, %s): stub!\n", bInstall ? "TRUE":"FALSE", debugstr_w(cmdline)); 1114 1115 return S_OK; /* indicate success */ 1116 } 1117 -
trunk/src/shell32/shell32_main.h
r1543 r3243 1 /* $Id: shell32_main.h,v 1. 2 1999-11-02 18:50:16 phallerExp $ */1 /* $Id: shell32_main.h,v 1.3 2000-03-26 16:34:50 cbratschi Exp $ */ 2 2 3 3 /* … … 7 7 * Project Odin Software License can be found in LICENSE.TXT 8 8 * 9 * Corel WINE 20000324 level 9 10 */ 10 11 11 12 /* 12 * 13 * internal Shell32 Library definitions 13 14 */ 14 15 … … 42 43 **/ 43 44 44 #define VERSION_OsIsUnicode() FALSE45 46 45 /******************************************* 47 46 * global SHELL32.DLL variables 48 47 */ 49 48 extern HINSTANCE shell32_hInstance; 50 extern INT 51 extern HIMAGELIST 52 extern HIMAGELIST 53 extern HDPA 49 extern INT shell32_ObjCount; 50 extern HIMAGELIST ShellSmallIconList; 51 extern HIMAGELIST ShellBigIconList; 52 extern HDPA sic_hdpa; 54 53 55 54 /******************************************* 56 55 * pointer to functions dynamically loaded 57 56 */ 58 extern void 59 extern INT 60 extern INT 57 extern void (WINAPI* pDLLInitComctl)(LPVOID); 58 extern INT (WINAPI* pImageList_AddIcon) (HIMAGELIST himl, HICON hIcon); 59 extern INT (WINAPI* pImageList_ReplaceIcon) (HIMAGELIST, INT, HICON); 61 60 extern HIMAGELIST (WINAPI* pImageList_Create) (INT,INT,UINT,INT,INT); 62 extern BOOL 63 extern HICON 64 extern INT 61 extern BOOL (WINAPI* pImageList_Draw) (HIMAGELIST himl, int i, HDC hdcDest, int x, int y, UINT fStyle); 62 extern HICON (WINAPI* pImageList_GetIcon) (HIMAGELIST, INT, UINT); 63 extern INT (WINAPI* pImageList_GetImageCount)(HIMAGELIST); 65 64 extern COLORREF (WINAPI *pImageList_SetBkColor)(HIMAGELIST, COLORREF); 66 65 67 extern LPVOID 68 extern BOOL 66 extern LPVOID (WINAPI* pCOMCTL32_Alloc) (INT); 67 extern BOOL (WINAPI* pCOMCTL32_Free) (LPVOID); 69 68 70 extern HDPA 71 extern INT 72 extern BOOL 73 extern LPVOID 74 extern BOOL 75 extern INT 76 extern LPVOID 69 extern HDPA (WINAPI* pDPA_Create) (INT); 70 extern INT (WINAPI* pDPA_InsertPtr) (const HDPA, INT, LPVOID); 71 extern BOOL (WINAPI* pDPA_Sort) (const HDPA, PFNDPACOMPARE, LPARAM); 72 extern LPVOID (WINAPI* pDPA_GetPtr) (const HDPA, INT); 73 extern BOOL (WINAPI* pDPA_Destroy) (const HDPA); 74 extern INT (WINAPI* pDPA_Search) (const HDPA, LPVOID, INT, PFNDPACOMPARE, LPARAM, UINT); 75 extern LPVOID (WINAPI* pDPA_DeletePtr) (const HDPA hdpa, INT i); 77 76 #define pDPA_GetPtrCount(hdpa) (*(INT*)(hdpa)) 78 77 … … 88 87 89 88 BOOL WINAPI Shell_GetImageList(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList); 89 90 HRESULT WINAPI StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl); 91 HRESULT WINAPI StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl); 90 92 HRESULT WINAPI StrRetToStrN (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl); 91 93 … … 103 105 BOOL HCR_GetFolderAttributes (REFIID riid, LPDWORD szDest); 104 106 105 DWORD 107 DWORD WINAPI ParseFieldA(LPCSTR src,DWORD field,LPSTR dst,DWORD len); 106 108 107 HGLOBAL 108 LPVOID 109 BOOL 110 HANDLE 109 HGLOBAL WINAPI SHAllocShared(LPVOID psrc, DWORD size, DWORD procID); 110 LPVOID WINAPI SHLockShared(HANDLE hmem, DWORD procID); 111 BOOL WINAPI SHUnlockShared(HANDLE pmem); 112 HANDLE WINAPI SHFreeShared(HANDLE hmem, DWORD procID); 111 113 112 114 /**************************************************************************** 113 115 * Class constructors 114 116 */ 115 LPDATAOBJECT 116 LPENUMFORMATETC 117 LPDATAOBJECT IDataObject_Constructor(HWND hwndOwner, LPITEMIDLIST myPidl, LPITEMIDLIST * apidl, UINT cidl); 118 LPENUMFORMATETC IEnumFORMATETC_Constructor(UINT, const FORMATETC []); 117 119 118 LPCLASSFACTORY 119 IContextMenu * 120 IContextMenu * 121 LPSHELLVIEW 122 LPSHELLLINK 120 LPCLASSFACTORY IClassFactory_Constructor(REFCLSID); 121 IContextMenu * IContextMenu_Constructor(LPSHELLFOLDER pSFParent, LPCITEMIDLIST pidl, LPCITEMIDLIST *aPidls, UINT uItemCount); 122 IContextMenu * ISvBgCm_Constructor(void); 123 LPSHELLVIEW IShellView_Constructor(LPSHELLFOLDER); 124 LPSHELLLINK IShellLink_Constructor(BOOL); 123 125 124 126 IShellFolder * ISF_Desktop_Constructor(void); 125 127 126 128 /* kind of enumidlist */ 127 #define EIDL_DESK 128 #define EIDL_MYCOMP 129 #define EIDL_FILE 129 #define EIDL_DESK 0 130 #define EIDL_MYCOMP 1 131 #define EIDL_FILE 2 130 132 131 LPENUMIDLIST 133 LPENUMIDLIST IEnumIDList_Constructor(LPCSTR,DWORD,DWORD); 132 134 133 LPEXTRACTICONA 134 HRESULT CreateStreamOnFile (LPCSTR pszFilename, IStream ** ppstm);135 LPEXTRACTICONA IExtractIconA_Constructor(LPITEMIDLIST); 136 HRESULT CreateStreamOnFile (LPCSTR pszFilename, IStream ** ppstm); 135 137 136 138 /* fixme: rename the functions when the shell32.dll has it's own exports namespace */ … … 149 151 /* initialisation for FORMATETC */ 150 152 #define InitFormatEtc(fe, cf, med) \ 151 152 153 154 155 156 157 153 {\ 154 (fe).cfFormat=cf;\ 155 (fe).dwAspect=DVASPECT_CONTENT;\ 156 (fe).ptd=NULL;\ 157 (fe).tymed=med;\ 158 (fe).lindex=-1;\ 159 }; 158 160 159 161 #define KeyStateToDropEffect(kst)\ 160 (((kst) & MK_CONTROL) ?\ 161 (((kst) & MK_SHIFT) ? DROPEFFECT_LINK : DROPEFFECT_COPY):\ 162 DROPEFFECT_MOVE) 162 (((kst) & MK_CONTROL) ?\ 163 (((kst) & MK_SHIFT) ? DROPEFFECT_LINK : DROPEFFECT_COPY):\ 164 DROPEFFECT_MOVE) 165 166 /* Systray */ 167 BOOL SYSTRAY_Init(void); 163 168 164 169 #ifdef __cplusplus -
trunk/src/shell32/shelllink.cpp
r1215 r3243 1 /* $Id: shelllink.cpp,v 1. 2 1999-10-09 11:17:04 sandervlExp $ */1 /* $Id: shelllink.cpp,v 1.3 2000-03-26 16:34:50 cbratschi Exp $ */ 2 2 /* 3 3 * 4 * Copyright 1997Marcus Meissner5 * Copyright 1998Juergen Schmied4 * Copyright 1997 Marcus Meissner 5 * Copyright 1998 Juergen Schmied 6 6 * 7 * Corel WINE 20000324 level 7 8 */ 8 9 … … 37 38 38 39 /* flag1: lnk elements: simple link has 0x0B */ 39 #define WORKDIR0x1040 #define ARGUMENT0x2041 #define ICON0x4042 #define UNC 40 #define WORKDIR 0x10 41 #define ARGUMENT 0x20 42 #define ICON 0x40 43 #define UNC 0x80 43 44 44 45 /* fStartup */ 45 #define NORMAL0x0146 #define MAXIMIZED0x0347 #define MINIMIZED0x0748 49 typedef struct _LINK_HEADER 50 { DWORD MagicStr;/* 0x00 'L','\0','\0','\0' */51 GUID MagicGuid;/* 0x04 is CLSID_ShellLink */52 DWORD Flag1;/* 0x14 describes elements following */53 DWORD Flag2;/* 0x18 */54 FILETIME Time1;/* 0x1c */55 FILETIME Time2;/* 0x24 */56 FILETIME Time3;/* 0x2c */57 DWORD Unknown1;/* 0x34 */58 DWORD Unknown2;/* 0x38 icon number */59 DWORD fStartup;/* 0x3c startup type */60 DWORD wHotKey;/* 0x40 hotkey */61 DWORD Unknown5;/* 0x44 */62 DWORD Unknown6;/* 0x48 */63 USHORT PidlSize;/* 0x4c */64 ITEMIDLIST Pidl;/* 0x4e */46 #define NORMAL 0x01 47 #define MAXIMIZED 0x03 48 #define MINIMIZED 0x07 49 50 typedef struct _LINK_HEADER 51 { DWORD MagicStr; /* 0x00 'L','\0','\0','\0' */ 52 GUID MagicGuid; /* 0x04 is CLSID_ShellLink */ 53 DWORD Flag1; /* 0x14 describes elements following */ 54 DWORD Flag2; /* 0x18 */ 55 FILETIME Time1; /* 0x1c */ 56 FILETIME Time2; /* 0x24 */ 57 FILETIME Time3; /* 0x2c */ 58 DWORD Unknown1; /* 0x34 */ 59 DWORD Unknown2; /* 0x38 icon number */ 60 DWORD fStartup; /* 0x3c startup type */ 61 DWORD wHotKey; /* 0x40 hotkey */ 62 DWORD Unknown5; /* 0x44 */ 63 DWORD Unknown6; /* 0x48 */ 64 USHORT PidlSize; /* 0x4c */ 65 ITEMIDLIST Pidl; /* 0x4e */ 65 66 } LINK_HEADER, * PLINK_HEADER; 66 67 … … 69 70 #include "poppack.h" 70 71 71 //static ICOM_VTABLE(IShellLink) 72 //static ICOM_VTABLE(IShellLinkW) 73 //static ICOM_VTABLE(IPersistFile) 74 //static ICOM_VTABLE(IPersistStream) 72 //static ICOM_VTABLE(IShellLink) slvt; 73 //static ICOM_VTABLE(IShellLinkW) slvtw; 74 //static ICOM_VTABLE(IPersistFile) pfvt; 75 //static ICOM_VTABLE(IPersistStream) psvt; 75 76 76 77 /* IShellLink Implementation */ … … 78 79 typedef struct 79 80 { 80 ICOM_VTABLE(IShellLink)*lpvtbl;81 DWORDref;82 83 ICOM_VTABLE(IShellLinkW)*lpvtblw;84 ICOM_VTABLE(IPersistFile)*lpvtblPersistFile;85 ICOM_VTABLE(IPersistStream)*lpvtblPersistStream;86 87 88 IStream*lpFileStream;89 90 91 LPSTRsPath;92 LPITEMIDLISTpPidl;93 WORDwHotKey;94 SYSTEMTIMEtime1;95 SYSTEMTIMEtime2;96 SYSTEMTIMEtime3;81 ICOM_VTABLE(IShellLink)* lpvtbl; 82 DWORD ref; 83 84 ICOM_VTABLE(IShellLinkW)* lpvtblw; 85 ICOM_VTABLE(IPersistFile)* lpvtblPersistFile; 86 ICOM_VTABLE(IPersistStream)* lpvtblPersistStream; 87 88 /* internal stream of the IPersistFile interface */ 89 IStream* lpFileStream; 90 91 /* data structures according to the informations in the lnk */ 92 LPSTR sPath; 93 LPITEMIDLIST pPidl; 94 WORD wHotKey; 95 SYSTEMTIME time1; 96 SYSTEMTIME time2; 97 SYSTEMTIME time3; 97 98 98 99 } IShellLinkImpl; … … 112 113 */ 113 114 static HRESULT WINAPI IPersistFile_fnQueryInterface( 114 115 116 117 { 118 119 120 121 122 115 IPersistFile* iface, 116 REFIID riid, 117 LPVOID *ppvObj) 118 { 119 _ICOM_THIS_From_IPersistFile(IShellLinkImpl, iface) 120 121 TRACE("(%p)\n",This); 122 123 return IShellLink_QueryInterface((IShellLink*)This, riid, ppvObj); 123 124 } 124 125 … … 128 129 static ULONG WINAPI IPersistFile_fnAddRef(IPersistFile* iface) 129 130 { 130 131 132 133 134 131 _ICOM_THIS_From_IPersistFile(IShellLinkImpl, iface) 132 133 TRACE("(%p)->(count=%lu)\n",This,This->ref); 134 135 return IShellLink_AddRef((IShellLink*)This); 135 136 } 136 137 /****************************************************************************** … … 139 140 static ULONG WINAPI IPersistFile_fnRelease(IPersistFile* iface) 140 141 { 141 142 143 144 145 142 _ICOM_THIS_From_IPersistFile(IShellLinkImpl, iface) 143 144 TRACE("(%p)->(count=%lu)\n",This,This->ref); 145 146 return IShellLink_Release((IShellLink*)This); 146 147 } 147 148 148 149 static HRESULT WINAPI IPersistFile_fnGetClassID(IPersistFile* iface, CLSID *pClassID) 149 150 { 150 151 152 151 _ICOM_THIS_From_IPersistFile(IShellLinkImpl, iface) 152 FIXME("(%p)\n",This); 153 return NOERROR; 153 154 } 154 155 static HRESULT WINAPI IPersistFile_fnIsDirty(IPersistFile* iface) 155 156 { 156 157 158 157 _ICOM_THIS_From_IPersistFile(IShellLinkImpl, iface) 158 FIXME("(%p)\n",This); 159 return NOERROR; 159 160 } 160 161 static HRESULT WINAPI IPersistFile_fnLoad(IPersistFile* iface, LPCOLESTR pszFileName, DWORD dwMode) 161 162 { 162 163 164 165 LPSTRsFile = HEAP_strdupWtoA ( GetProcessHeap(), 0, pszFileName);166 HRESULThRet = E_FAIL;167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 163 _ICOM_THIS_From_IPersistFile(IShellLinkImpl, iface) 164 _IPersistStream_From_ICOM_THIS(IPersistStream, This) 165 166 LPSTR sFile = HEAP_strdupWtoA ( GetProcessHeap(), 0, pszFileName); 167 HRESULT hRet = E_FAIL; 168 169 TRACE("(%p, %s)\n",This, sFile); 170 171 172 if (This->lpFileStream) 173 IStream_Release(This->lpFileStream); 174 175 if SUCCEEDED(CreateStreamOnFile(sFile, &(This->lpFileStream))) 176 { 177 if SUCCEEDED (IPersistStream_Load(StreamThis, This->lpFileStream)) 178 { 179 return NOERROR; 180 } 181 } 182 183 return hRet; 183 184 } 184 185 185 186 static HRESULT WINAPI IPersistFile_fnSave(IPersistFile* iface, LPCOLESTR pszFileName, BOOL fRemember) 186 187 { 187 188 189 188 _ICOM_THIS_From_IPersistFile(IShellLinkImpl, iface); 189 FIXME("(%p)->(%s)\n",This,debugstr_w(pszFileName)); 190 return NOERROR; 190 191 } 191 192 static HRESULT WINAPI IPersistFile_fnSaveCompleted(IPersistFile* iface, LPCOLESTR pszFileName) 192 193 { 193 194 195 194 _ICOM_THIS_From_IPersistFile(IShellLinkImpl, iface); 195 FIXME("(%p)->(%s)\n",This,debugstr_w(pszFileName)); 196 return NOERROR; 196 197 } 197 198 static HRESULT WINAPI IPersistFile_fnGetCurFile(IPersistFile* iface, LPOLESTR *ppszFileName) 198 199 { 199 200 201 200 _ICOM_THIS_From_IPersistFile(IShellLinkImpl, iface); 201 FIXME("(%p)\n",This); 202 return NOERROR; 202 203 } 203 204 204 205 static ICOM_VTABLE(IPersistFile) pfvt = 205 206 { 206 207 208 209 210 211 212 213 214 215 207 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 208 IPersistFile_fnQueryInterface, 209 IPersistFile_fnAddRef, 210 IPersistFile_fnRelease, 211 IPersistFile_fnGetClassID, 212 IPersistFile_fnIsDirty, 213 IPersistFile_fnLoad, 214 IPersistFile_fnSave, 215 IPersistFile_fnSaveCompleted, 216 IPersistFile_fnGetCurFile 216 217 }; 217 218 … … 220 221 */ 221 222 static HRESULT WINAPI IPersistStream_fnQueryInterface( 222 223 224 225 { 226 227 228 229 230 223 IPersistStream* iface, 224 REFIID riid, 225 VOID** ppvoid) 226 { 227 _ICOM_THIS_From_IPersistStream(IShellLinkImpl, iface); 228 229 TRACE("(%p)\n",This); 230 231 return IShellLink_QueryInterface((IShellLink*)This, riid, ppvoid); 231 232 } 232 233 … … 235 236 */ 236 237 static ULONG WINAPI IPersistStream_fnRelease( 237 238 { 239 240 241 242 243 238 IPersistStream* iface) 239 { 240 _ICOM_THIS_From_IPersistStream(IShellLinkImpl, iface); 241 242 TRACE("(%p)\n",This); 243 244 return IShellLink_Release((IShellLink*)This); 244 245 } 245 246 … … 248 249 */ 249 250 static ULONG WINAPI IPersistStream_fnAddRef( 250 251 { 252 253 254 255 256 251 IPersistStream* iface) 252 { 253 _ICOM_THIS_From_IPersistStream(IShellLinkImpl, iface); 254 255 TRACE("(%p)\n",This); 256 257 return IShellLink_AddRef((IShellLink*)This); 257 258 } 258 259 … … 262 263 */ 263 264 static HRESULT WINAPI IPersistStream_fnGetClassID( 264 265 266 { 267 268 269 270 271 272 273 274 /* 275 276 265 IPersistStream* iface, 266 CLSID* pClassID) 267 { 268 _ICOM_THIS_From_IPersistStream(IShellLinkImpl, iface); 269 270 TRACE("(%p)\n", This); 271 272 if (pClassID==0) 273 return E_POINTER; 274 275 /* memcpy(pClassID, &CLSID_???, sizeof(CLSID_???)); */ 276 277 return S_OK; 277 278 } 278 279 … … 281 282 */ 282 283 static HRESULT WINAPI IPersistStream_fnIsDirty( 283 284 { 285 286 287 288 289 284 IPersistStream* iface) 285 { 286 _ICOM_THIS_From_IPersistStream(IShellLinkImpl, iface); 287 288 TRACE("(%p)\n", This); 289 290 return S_OK; 290 291 } 291 292 /************************************************************************ … … 294 295 295 296 static HRESULT WINAPI IPersistStream_fnLoad( 296 297 298 { 299 300 ULONGdwBytesRead;301 DWORDret = E_FAIL;302 charsTemp[512];303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 { 327 328 329 330 331 332 333 334 335 297 IPersistStream* iface, 298 IStream* pLoadStream) 299 { 300 PLINK_HEADER lpLinkHeader = (PLINK_HEADER)HeapAlloc(GetProcessHeap(), 0, LINK_HEADER_SIZE); 301 ULONG dwBytesRead; 302 DWORD ret = E_FAIL; 303 char sTemp[512]; 304 305 _ICOM_THIS_From_IPersistStream(IShellLinkImpl, iface); 306 307 TRACE("(%p)(%p)\n", This, pLoadStream); 308 309 if ( ! pLoadStream) 310 { 311 return STG_E_INVALIDPOINTER; 312 } 313 314 IStream_AddRef (pLoadStream); 315 if(lpLinkHeader) 316 { 317 if (SUCCEEDED(IStream_Read(pLoadStream, lpLinkHeader, LINK_HEADER_SIZE, &dwBytesRead))) 318 { 319 if ((lpLinkHeader->MagicStr == 0x0000004CL) && IsEqualIID(&lpLinkHeader->MagicGuid, &CLSID_ShellLink)) 320 { 321 lpLinkHeader = (PLINK_HEADER)HeapReAlloc(GetProcessHeap(), 0, lpLinkHeader, LINK_HEADER_SIZE+lpLinkHeader->PidlSize); 322 if (lpLinkHeader) 323 { 324 if (SUCCEEDED(IStream_Read(pLoadStream, &(lpLinkHeader->Pidl), lpLinkHeader->PidlSize, &dwBytesRead))) 325 { 326 if (pcheck (&lpLinkHeader->Pidl)) 327 { 328 This->pPidl = ILClone (&lpLinkHeader->Pidl); 329 330 SHGetPathFromIDListA(&lpLinkHeader->Pidl, sTemp); 331 This->sPath = HEAP_strdupA ( GetProcessHeap(), 0, sTemp); 332 } 333 This->wHotKey = lpLinkHeader->wHotKey; 334 FileTimeToSystemTime (&lpLinkHeader->Time1, &This->time1); 335 FileTimeToSystemTime (&lpLinkHeader->Time2, &This->time2); 336 FileTimeToSystemTime (&lpLinkHeader->Time3, &This->time3); 336 337 #if 1 337 338 339 340 341 342 343 344 #endif 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 338 GetDateFormatA(LOCALE_USER_DEFAULT,DATE_SHORTDATE,&This->time1, NULL, sTemp, 256); 339 TRACE("-- time1: %s\n", sTemp); 340 GetDateFormatA(LOCALE_USER_DEFAULT,DATE_SHORTDATE,&This->time2, NULL, sTemp, 256); 341 TRACE("-- time1: %s\n", sTemp); 342 GetDateFormatA(LOCALE_USER_DEFAULT,DATE_SHORTDATE,&This->time3, NULL, sTemp, 256); 343 TRACE("-- time1: %s\n", sTemp); 344 pdump (This->pPidl); 345 #endif 346 ret = S_OK; 347 } 348 } 349 } 350 else 351 { 352 WARN("stream contains no link!\n"); 353 } 354 } 355 } 356 357 IStream_Release (pLoadStream); 358 359 pdump(This->pPidl); 360 361 HeapFree(GetProcessHeap(), 0, lpLinkHeader); 362 363 return ret; 363 364 } 364 365 … … 367 368 */ 368 369 static HRESULT WINAPI IPersistStream_fnSave( 369 370 371 372 { 373 374 375 376 377 370 IPersistStream* iface, 371 IStream* pOutStream, 372 BOOL fClearDirty) 373 { 374 _ICOM_THIS_From_IPersistStream(IShellLinkImpl, iface); 375 376 TRACE("(%p) %p %x\n", This, pOutStream, fClearDirty); 377 378 return E_NOTIMPL; 378 379 } 379 380 … … 382 383 */ 383 384 static HRESULT WINAPI IPersistStream_fnGetSizeMax( 384 385 386 { 387 388 389 390 391 385 IPersistStream* iface, 386 ULARGE_INTEGER* pcbSize) 387 { 388 _ICOM_THIS_From_IPersistStream(IShellLinkImpl, iface); 389 390 TRACE("(%p)\n", This); 391 392 return E_NOTIMPL; 392 393 } 393 394 394 395 static ICOM_VTABLE(IPersistStream) psvt = 395 396 { 396 397 398 399 400 401 402 403 404 397 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 398 IPersistStream_fnQueryInterface, 399 IPersistStream_fnAddRef, 400 IPersistStream_fnRelease, 401 IPersistStream_fnGetClassID, 402 IPersistStream_fnIsDirty, 403 IPersistStream_fnLoad, 404 IPersistStream_fnSave, 405 IPersistStream_fnGetSizeMax 405 406 }; 406 407 … … 410 411 static HRESULT WINAPI IShellLink_fnQueryInterface( IShellLink * iface, REFIID riid, LPVOID *ppvObj) 411 412 { 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 413 ICOM_THIS(IShellLinkImpl, iface); 414 415 char xriid[50]; 416 WINE_StringFromCLSID((LPCLSID)riid,xriid); 417 TRACE("(%p)->(\n\tIID:\t%s)\n",This,xriid); 418 419 *ppvObj = NULL; 420 421 if(IsEqualIID(riid, &IID_IUnknown) || 422 IsEqualIID(riid, &IID_IShellLink)) 423 { 424 *ppvObj = This; 425 } 426 else if(IsEqualIID(riid, &IID_IShellLinkW)) 427 { 428 *ppvObj = (IShellLinkW *)&(This->lpvtblw); 429 } 430 else if(IsEqualIID(riid, &IID_IPersistFile)) 431 { 432 *ppvObj = (IPersistFile *)&(This->lpvtblPersistFile); 433 } 434 else if(IsEqualIID(riid, &IID_IPersistStream)) 435 { 436 *ppvObj = (IPersistStream *)&(This->lpvtblPersistStream); 437 } 438 439 if(*ppvObj) 440 { 441 IUnknown_AddRef((IUnknown*)(*ppvObj)); 442 TRACE("-- Interface: (%p)->(%p)\n",ppvObj,*ppvObj); 443 return S_OK; 444 } 445 TRACE("-- Interface: E_NOINTERFACE\n"); 446 return E_NOINTERFACE; 446 447 } 447 448 /****************************************************************************** … … 450 451 static ULONG WINAPI IShellLink_fnAddRef(IShellLink * iface) 451 452 { 452 453 454 455 456 457 453 ICOM_THIS(IShellLinkImpl, iface); 454 455 TRACE("(%p)->(count=%lu)\n",This,This->ref); 456 457 shell32_ObjCount++; 458 return ++(This->ref); 458 459 } 459 460 /****************************************************************************** 460 * 461 * IShellLink_Release 461 462 */ 462 463 static ULONG WINAPI IShellLink_fnRelease(IShellLink * iface) 463 464 { 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 465 ICOM_THIS(IShellLinkImpl, iface); 466 467 TRACE("(%p)->(count=%lu)\n",This,This->ref); 468 469 shell32_ObjCount--; 470 if (!--(This->ref)) 471 { TRACE("-- destroying IShellLink(%p)\n",This); 472 473 if (This->sPath) 474 HeapFree(GetProcessHeap(),0,This->sPath); 475 476 if (This->pPidl) 477 SHFree(This->pPidl); 478 479 if (This->lpFileStream) 480 IStream_Release(This->lpFileStream); 481 482 HeapFree(GetProcessHeap(),0,This); 483 return 0; 484 } 485 return This->ref; 485 486 } 486 487 487 488 static HRESULT WINAPI IShellLink_fnGetPath(IShellLink * iface, LPSTR pszFile,INT cchMaxPath, WIN32_FIND_DATAA *pfd, DWORD fFlags) 488 489 { 489 490 491 492 493 494 495 496 497 498 490 ICOM_THIS(IShellLinkImpl, iface); 491 492 TRACE("(%p)->(pfile=%p len=%u find_data=%p flags=%lu)(%s)\n",This, pszFile, cchMaxPath, pfd, fFlags, debugstr_a(This->sPath)); 493 494 if (This->sPath) 495 lstrcpynA(pszFile,This->sPath, cchMaxPath); 496 else 497 return E_FAIL; 498 499 return NOERROR; 499 500 } 500 501 static HRESULT WINAPI IShellLink_fnGetIDList(IShellLink * iface, LPITEMIDLIST * ppidl) 501 502 { 502 503 504 505 506 507 503 ICOM_THIS(IShellLinkImpl, iface); 504 505 TRACE("(%p)->(ppidl=%p)\n",This, ppidl); 506 507 *ppidl = ILClone(This->pPidl); 508 return NOERROR; 508 509 } 509 510 static HRESULT WINAPI IShellLink_fnSetIDList(IShellLink * iface, LPCITEMIDLIST pidl) 510 511 { 511 512 513 514 515 516 517 518 512 ICOM_THIS(IShellLinkImpl, iface); 513 514 TRACE("(%p)->(pidl=%p)\n",This, pidl); 515 516 if (This->pPidl) 517 SHFree(This->pPidl); 518 This->pPidl = ILClone (pidl); 519 return NOERROR; 519 520 } 520 521 static HRESULT WINAPI IShellLink_fnGetDescription(IShellLink * iface, LPSTR pszName,INT cchMaxName) 521 522 { 522 523 524 525 526 523 ICOM_THIS(IShellLinkImpl, iface); 524 525 FIXME("(%p)->(%p len=%u)\n",This, pszName, cchMaxName); 526 lstrcpynA(pszName,"Description, FIXME",cchMaxName); 527 return NOERROR; 527 528 } 528 529 static HRESULT WINAPI IShellLink_fnSetDescription(IShellLink * iface, LPCSTR pszName) 529 530 { 530 531 532 533 531 ICOM_THIS(IShellLinkImpl, iface); 532 533 FIXME("(%p)->(desc=%s)\n",This, pszName); 534 return NOERROR; 534 535 } 535 536 static HRESULT WINAPI IShellLink_fnGetWorkingDirectory(IShellLink * iface, LPSTR pszDir,INT cchMaxPath) 536 537 { 537 538 539 540 541 538 ICOM_THIS(IShellLinkImpl, iface); 539 540 FIXME("(%p)->()\n",This); 541 lstrcpynA(pszDir,"c:\\", cchMaxPath); 542 return NOERROR; 542 543 } 543 544 static HRESULT WINAPI IShellLink_fnSetWorkingDirectory(IShellLink * iface, LPCSTR pszDir) 544 545 { 545 546 547 548 546 ICOM_THIS(IShellLinkImpl, iface); 547 548 FIXME("(%p)->(dir=%s)\n",This, pszDir); 549 return NOERROR; 549 550 } 550 551 static HRESULT WINAPI IShellLink_fnGetArguments(IShellLink * iface, LPSTR pszArgs,INT cchMaxPath) 551 552 { 552 553 554 555 556 553 ICOM_THIS(IShellLinkImpl, iface); 554 555 FIXME("(%p)->(%p len=%u)\n",This, pszArgs, cchMaxPath); 556 lstrcpynA(pszArgs, "", cchMaxPath); 557 return NOERROR; 557 558 } 558 559 static HRESULT WINAPI IShellLink_fnSetArguments(IShellLink * iface, LPCSTR pszArgs) 559 560 { 560 561 562 563 564 561 ICOM_THIS(IShellLinkImpl, iface); 562 563 FIXME("(%p)->(args=%s)\n",This, pszArgs); 564 565 return NOERROR; 565 566 } 566 567 static HRESULT WINAPI IShellLink_fnGetHotkey(IShellLink * iface, WORD *pwHotkey) 567 568 { 568 569 570 571 572 573 574 569 ICOM_THIS(IShellLinkImpl, iface); 570 571 TRACE("(%p)->(%p)(0x%08x)\n",This, pwHotkey, This->wHotKey); 572 573 *pwHotkey = This->wHotKey; 574 575 return NOERROR; 575 576 } 576 577 static HRESULT WINAPI IShellLink_fnSetHotkey(IShellLink * iface, WORD wHotkey) 577 578 { 578 579 580 581 582 583 584 579 ICOM_THIS(IShellLinkImpl, iface); 580 581 TRACE("(%p)->(hotkey=%x)\n",This, wHotkey); 582 583 This->wHotKey = wHotkey; 584 585 return NOERROR; 585 586 } 586 587 static HRESULT WINAPI IShellLink_fnGetShowCmd(IShellLink * iface, INT *piShowCmd) 587 588 { 588 589 590 591 592 589 ICOM_THIS(IShellLinkImpl, iface); 590 591 FIXME("(%p)->(%p)\n",This, piShowCmd); 592 *piShowCmd=0; 593 return NOERROR; 593 594 } 594 595 static HRESULT WINAPI IShellLink_fnSetShowCmd(IShellLink * iface, INT iShowCmd) 595 596 { 596 597 598 599 597 ICOM_THIS(IShellLinkImpl, iface); 598 599 FIXME("(%p)->(showcmd=%x)\n",This, iShowCmd); 600 return NOERROR; 600 601 } 601 602 static HRESULT WINAPI IShellLink_fnGetIconLocation(IShellLink * iface, LPSTR pszIconPath,INT cchIconPath,INT *piIcon) 602 603 { 603 604 605 606 607 608 604 ICOM_THIS(IShellLinkImpl, iface); 605 606 FIXME("(%p)->(%p len=%u iicon=%p)\n",This, pszIconPath, cchIconPath, piIcon); 607 lstrcpynA(pszIconPath,"shell32.dll",cchIconPath); 608 *piIcon=1; 609 return NOERROR; 609 610 } 610 611 static HRESULT WINAPI IShellLink_fnSetIconLocation(IShellLink * iface, LPCSTR pszIconPath,INT iIcon) 611 612 { 612 613 614 615 613 ICOM_THIS(IShellLinkImpl, iface); 614 615 FIXME("(%p)->(path=%s iicon=%u)\n",This, pszIconPath, iIcon); 616 return NOERROR; 616 617 } 617 618 static HRESULT WINAPI IShellLink_fnSetRelativePath(IShellLink * iface, LPCSTR pszPathRel, DWORD dwReserved) 618 619 { 619 620 621 622 620 ICOM_THIS(IShellLinkImpl, iface); 621 622 FIXME("(%p)->(path=%s %lx)\n",This, pszPathRel, dwReserved); 623 return NOERROR; 623 624 } 624 625 static HRESULT WINAPI IShellLink_fnResolve(IShellLink * iface, HWND hwnd, DWORD fFlags) 625 626 { 626 627 628 629 627 ICOM_THIS(IShellLinkImpl, iface); 628 629 FIXME("(%p)->(hwnd=%x flags=%lx)\n",This, hwnd, fFlags); 630 return NOERROR; 630 631 } 631 632 static HRESULT WINAPI IShellLink_fnSetPath(IShellLink * iface, LPCSTR pszFile) 632 633 { 633 634 635 636 634 ICOM_THIS(IShellLinkImpl, iface); 635 636 FIXME("(%p)->(path=%s)\n",This, pszFile); 637 return NOERROR; 637 638 } 638 639 … … 642 643 643 644 static ICOM_VTABLE(IShellLink) slvt = 644 { 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 645 { 646 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 647 IShellLink_fnQueryInterface, 648 IShellLink_fnAddRef, 649 IShellLink_fnRelease, 650 IShellLink_fnGetPath, 651 IShellLink_fnGetIDList, 652 IShellLink_fnSetIDList, 653 IShellLink_fnGetDescription, 654 IShellLink_fnSetDescription, 655 IShellLink_fnGetWorkingDirectory, 656 IShellLink_fnSetWorkingDirectory, 657 IShellLink_fnGetArguments, 658 IShellLink_fnSetArguments, 659 IShellLink_fnGetHotkey, 660 IShellLink_fnSetHotkey, 661 IShellLink_fnGetShowCmd, 662 IShellLink_fnSetShowCmd, 663 IShellLink_fnGetIconLocation, 664 IShellLink_fnSetIconLocation, 665 IShellLink_fnSetRelativePath, 666 IShellLink_fnResolve, 667 IShellLink_fnSetPath 667 668 }; 668 669 … … 674 675 IShellLinkW * iface, REFIID riid, LPVOID *ppvObj) 675 676 { 676 677 678 677 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 678 679 return IShellLink_QueryInterface((IShellLink*)This, riid, ppvObj); 679 680 } 680 681 … … 684 685 static ULONG WINAPI IShellLinkW_fnAddRef(IShellLinkW * iface) 685 686 { 686 687 688 689 690 687 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 688 689 TRACE("(%p)->(count=%lu)\n",This,This->ref); 690 691 return IShellLink_AddRef((IShellLink*)This); 691 692 } 692 693 /****************************************************************************** … … 696 697 static ULONG WINAPI IShellLinkW_fnRelease(IShellLinkW * iface) 697 698 { 698 699 700 701 702 699 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 700 701 TRACE("(%p)->(count=%lu)\n",This,This->ref); 702 703 return IShellLink_Release((IShellLink*)This); 703 704 } 704 705 705 706 static HRESULT WINAPI IShellLinkW_fnGetPath(IShellLinkW * iface, LPWSTR pszFile,INT cchMaxPath, WIN32_FIND_DATAA *pfd, DWORD fFlags) 706 707 { 707 708 709 710 711 708 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 709 710 FIXME("(%p)->(pfile=%p len=%u find_data=%p flags=%lu)\n",This, pszFile, cchMaxPath, pfd, fFlags); 711 lstrcpynAtoW(pszFile,"c:\\foo.bar", cchMaxPath); 712 return NOERROR; 712 713 } 713 714 714 715 static HRESULT WINAPI IShellLinkW_fnGetIDList(IShellLinkW * iface, LPITEMIDLIST * ppidl) 715 716 { 716 717 718 719 720 717 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 718 719 FIXME("(%p)->(ppidl=%p)\n",This, ppidl); 720 *ppidl = _ILCreateDesktop(); 721 return NOERROR; 721 722 } 722 723 723 724 static HRESULT WINAPI IShellLinkW_fnSetIDList(IShellLinkW * iface, LPCITEMIDLIST pidl) 724 725 { 725 726 727 728 726 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 727 728 FIXME("(%p)->(pidl=%p)\n",This, pidl); 729 return NOERROR; 729 730 } 730 731 731 732 static HRESULT WINAPI IShellLinkW_fnGetDescription(IShellLinkW * iface, LPWSTR pszName,INT cchMaxName) 732 733 { 733 734 735 736 737 734 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 735 736 FIXME("(%p)->(%p len=%u)\n",This, pszName, cchMaxName); 737 lstrcpynAtoW(pszName,"Description, FIXME",cchMaxName); 738 return NOERROR; 738 739 } 739 740 740 741 static HRESULT WINAPI IShellLinkW_fnSetDescription(IShellLinkW * iface, LPCWSTR pszName) 741 742 { 742 743 744 745 743 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 744 745 FIXME("(%p)->(desc=%s)\n",This, debugstr_w(pszName)); 746 return NOERROR; 746 747 } 747 748 748 749 static HRESULT WINAPI IShellLinkW_fnGetWorkingDirectory(IShellLinkW * iface, LPWSTR pszDir,INT cchMaxPath) 749 750 { 750 751 752 753 754 751 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 752 753 FIXME("(%p)->()\n",This); 754 lstrcpynAtoW(pszDir,"c:\\", cchMaxPath); 755 return NOERROR; 755 756 } 756 757 757 758 static HRESULT WINAPI IShellLinkW_fnSetWorkingDirectory(IShellLinkW * iface, LPCWSTR pszDir) 758 759 { 759 760 761 762 760 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 761 762 FIXME("(%p)->(dir=%s)\n",This, debugstr_w(pszDir)); 763 return NOERROR; 763 764 } 764 765 765 766 static HRESULT WINAPI IShellLinkW_fnGetArguments(IShellLinkW * iface, LPWSTR pszArgs,INT cchMaxPath) 766 767 { 767 768 769 770 771 768 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 769 770 FIXME("(%p)->(%p len=%u)\n",This, pszArgs, cchMaxPath); 771 lstrcpynAtoW(pszArgs, "", cchMaxPath); 772 return NOERROR; 772 773 } 773 774 774 775 static HRESULT WINAPI IShellLinkW_fnSetArguments(IShellLinkW * iface, LPCWSTR pszArgs) 775 776 { 776 777 778 779 777 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 778 779 FIXME("(%p)->(args=%s)\n",This, debugstr_w(pszArgs)); 780 return NOERROR; 780 781 } 781 782 782 783 static HRESULT WINAPI IShellLinkW_fnGetHotkey(IShellLinkW * iface, WORD *pwHotkey) 783 784 { 784 785 786 787 788 785 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 786 787 FIXME("(%p)->(%p)\n",This, pwHotkey); 788 *pwHotkey=0x0; 789 return NOERROR; 789 790 } 790 791 791 792 static HRESULT WINAPI IShellLinkW_fnSetHotkey(IShellLinkW * iface, WORD wHotkey) 792 793 { 793 794 795 796 794 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 795 796 FIXME("(%p)->(hotkey=%x)\n",This, wHotkey); 797 return NOERROR; 797 798 } 798 799 799 800 static HRESULT WINAPI IShellLinkW_fnGetShowCmd(IShellLinkW * iface, INT *piShowCmd) 800 801 { 801 802 803 804 805 802 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 803 804 FIXME("(%p)->(%p)\n",This, piShowCmd); 805 *piShowCmd=0; 806 return NOERROR; 806 807 } 807 808 808 809 static HRESULT WINAPI IShellLinkW_fnSetShowCmd(IShellLinkW * iface, INT iShowCmd) 809 810 { 810 811 812 813 811 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 812 813 FIXME("(%p)->(showcmd=%x)\n",This, iShowCmd); 814 return NOERROR; 814 815 } 815 816 816 817 static HRESULT WINAPI IShellLinkW_fnGetIconLocation(IShellLinkW * iface, LPWSTR pszIconPath,INT cchIconPath,INT *piIcon) 817 818 { 818 819 820 821 822 823 819 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 820 821 FIXME("(%p)->(%p len=%u iicon=%p)\n",This, pszIconPath, cchIconPath, piIcon); 822 lstrcpynAtoW(pszIconPath,"shell32.dll",cchIconPath); 823 *piIcon=1; 824 return NOERROR; 824 825 } 825 826 826 827 static HRESULT WINAPI IShellLinkW_fnSetIconLocation(IShellLinkW * iface, LPCWSTR pszIconPath,INT iIcon) 827 828 { 828 829 830 831 829 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 830 831 FIXME("(%p)->(path=%s iicon=%u)\n",This, debugstr_w(pszIconPath), iIcon); 832 return NOERROR; 832 833 } 833 834 834 835 static HRESULT WINAPI IShellLinkW_fnSetRelativePath(IShellLinkW * iface, LPCWSTR pszPathRel, DWORD dwReserved) 835 836 { 836 837 838 839 837 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 838 839 FIXME("(%p)->(path=%s %lx)\n",This, debugstr_w(pszPathRel), dwReserved); 840 return NOERROR; 840 841 } 841 842 842 843 static HRESULT WINAPI IShellLinkW_fnResolve(IShellLinkW * iface, HWND hwnd, DWORD fFlags) 843 844 { 844 845 846 847 845 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 846 847 FIXME("(%p)->(hwnd=%x flags=%lx)\n",This, hwnd, fFlags); 848 return NOERROR; 848 849 } 849 850 850 851 static HRESULT WINAPI IShellLinkW_fnSetPath(IShellLinkW * iface, LPCWSTR pszFile) 851 852 { 852 853 854 855 853 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 854 855 FIXME("(%p)->(path=%s)\n",This, debugstr_w(pszFile)); 856 return NOERROR; 856 857 } 857 858 … … 861 862 862 863 static ICOM_VTABLE(IShellLinkW) slvtw = 863 { 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 864 { 865 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 866 IShellLinkW_fnQueryInterface, 867 IShellLinkW_fnAddRef, 868 IShellLinkW_fnRelease, 869 IShellLinkW_fnGetPath, 870 IShellLinkW_fnGetIDList, 871 IShellLinkW_fnSetIDList, 872 IShellLinkW_fnGetDescription, 873 IShellLinkW_fnSetDescription, 874 IShellLinkW_fnGetWorkingDirectory, 875 IShellLinkW_fnSetWorkingDirectory, 876 IShellLinkW_fnGetArguments, 877 IShellLinkW_fnSetArguments, 878 IShellLinkW_fnGetHotkey, 879 IShellLinkW_fnSetHotkey, 880 IShellLinkW_fnGetShowCmd, 881 IShellLinkW_fnSetShowCmd, 882 IShellLinkW_fnGetIconLocation, 883 IShellLinkW_fnSetIconLocation, 884 IShellLinkW_fnSetRelativePath, 885 IShellLinkW_fnResolve, 886 IShellLinkW_fnSetPath 886 887 }; 887 888 888 889 /************************************************************************** 889 * 890 * IShellLink_Constructor 890 891 */ 891 892 IShellLink * IShellLink_Constructor(BOOL bUnicode) 892 { 893 894 895 896 897 898 899 900 901 902 903 904 } 905 906 893 { IShellLinkImpl * sl; 894 895 sl = (IShellLinkImpl *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IShellLinkImpl)); 896 sl->ref = 1; 897 sl->lpvtbl = &slvt; 898 sl->lpvtblw = &slvtw; 899 sl->lpvtblPersistFile = &pfvt; 900 sl->lpvtblPersistStream = &psvt; 901 902 TRACE("(%p)->()\n",sl); 903 shell32_ObjCount++; 904 return bUnicode ? (IShellLink *) &(sl->lpvtblw) : (IShellLink *)sl; 905 } 906 907 -
trunk/src/shell32/shellole.cpp
r1353 r3243 1 /* $Id: shellole.cpp,v 1. 3 1999-10-19 10:23:27 phallerExp $ */1 /* $Id: shellole.cpp,v 1.4 2000-03-26 16:34:51 cbratschi Exp $ */ 2 2 3 3 /* … … 12 12 * Copyright 1998 Juergen Schmied <juergen.schmied@metronet.de> 13 13 * 14 * Corel WINE 20000324 level 14 15 */ 15 16 … … 56 57 57 58 DWORD WINAPI SHCLSIDFromStringA (LPSTR clsid, CLSID *id); 59 extern IShellFolder * IShellFolder_Constructor( 60 IShellFolder * psf, 61 LPITEMIDLIST pidl); 62 extern HRESULT IFSFolder_Constructor( 63 IUnknown * pUnkOuter, 64 REFIID riid, 65 LPVOID * ppv); 58 66 59 67 /************************************************************************* … … 70 78 LPVOID*, ppv) 71 79 { 72 char xclsid[48], xiid[48] , xuout[48];80 char xclsid[48], xiid[48]; 73 81 DWORD hres; 74 82 IID iid; … … 86 94 WINE_StringFromCLSID(myclsid,xclsid); 87 95 WINE_StringFromCLSID(refiid,xiid); 88 if (unknownouter) 89 WINE_StringFromCLSID((const CLSID*)unknownouter,xuout); 90 91 dprintf(("SHELL32:SHCoCreateInstance (%p,CLSID:%s UOUT:%s IID:%s,%p)\n", 96 97 dprintf(("SHELL32:SHCoCreateInstance (%p,CLSID:%s unk:%s IID:%s,%p)\n", 92 98 aclsid, 93 99 xclsid, 94 unknownouter?xuout:"nil",xiid,ppv)); 95 96 hres = CoCreateInstance(myclsid, NULL, CLSCTX_INPROC_SERVER, refiid, ppv); 100 unknownouter,xiid,ppv)); 101 102 if IsEqualCLSID(myclsid, &CLSID_ShellFSFolder) 103 { 104 hres = IFSFolder_Constructor(unknownouter, refiid, ppv); 105 } 106 else 107 { 108 hres = CoCreateInstance(myclsid, unknownouter, CLSCTX_INPROC_SERVER, refiid, ppv); 109 } 97 110 98 111 if(hres!=S_OK) 99 112 { 100 dprintf(("SHELL32: SHCoCreateInstance failed (0x%08lx) to create CLSID:%s IID:%s\n",113 dprintf(("SHELL32: SHCoCreateInstance failed (0x%08lx) to create CLSID:%s IID:%s\n", 101 114 hres, 102 115 xclsid, 103 116 xiid)); 104 dprintf(("SHELL32:SHCoCreateInstance you might need to import the winedefault.reg\n")); 117 dprintf(("SHELL32: SHCoCreateInstance: class not found in registry\n")); 118 dprintf(("SHELL32: SHCoCreateInstance you might need to import the winedefault.reg\n")); 105 119 } 106 120 … … 128 142 *ppv = NULL; 129 143 130 if(IsEqualCLSID(rclsid, &CLSID_PaperBin))131 {132 dprintf(("SHELL32:SHELL32_DllGetClassObject paper bin not implemented\n"));133 return CLASS_E_CLASSNOTAVAILABLE;134 }135 144 if(IsEqualCLSID(rclsid, &CLSID_ShellDesktop)|| 136 145 IsEqualCLSID(rclsid, &CLSID_ShellLink)) -
trunk/src/shell32/shellord.cpp
r2258 r3243 1 /* $Id: shellord.cpp,v 1. 5 1999-12-30 00:21:33 phallerExp $ */1 /* $Id: shellord.cpp,v 1.6 2000-03-26 16:34:51 cbratschi Exp $ */ 2 2 /* 3 3 * The parameters of many functions changes between different OS versions … … 6 6 * Copyright 1997 Marcus Meissner 7 7 * 1998 Jürgen Schmied 8 * 9 * Corel WINE 20000324 level 8 10 */ 9 11 … … 49 51 50 52 /************************************************************************* 51 * SHChangeNotifyRegister 53 * SHChangeNotifyRegister [SHELL32.2] 52 54 * 53 55 * NOTES … … 63 65 int count, 64 66 IDSTRUCT *idlist) 65 { 66 67 68 69 } 70 /************************************************************************* 71 * SHChangeNotifyDeregister 67 { 68 FIXME("SHChangeNotifyRegister: (0x%04x,0x%08lx,0x%08lx,0x%08lx,0x%08x,%p):stub.\n", 69 hwnd,events1,events2,msg,count,idlist); 70 return 0; 71 } 72 /************************************************************************* 73 * SHChangeNotifyDeregister [SHELL32.4] 72 74 */ 73 75 DWORD WINAPI 74 76 SHChangeNotifyDeregister(LONG x1) 75 { 76 77 } 78 /************************************************************************* 79 * NTSHChangeNotifyRegister 77 { FIXME("(0x%08lx):stub.\n",x1); 78 return 0; 79 } 80 /************************************************************************* 81 * NTSHChangeNotifyRegister [SHELL32.640] 80 82 * NOTES 81 83 * Idlist is an array of structures and Count specifies how many items in the array … … 89 91 int count, 90 92 IDSTRUCT *idlist) 91 { 92 93 94 } 95 /************************************************************************* 96 * NTSHChangeNotifyDeregister 93 { FIXME("(0x%04x,0x%08lx,0x%08lx,0x%08lx,0x%08x,%p):stub.\n", 94 hwnd,events1,events2,msg,count,idlist); 95 return 0; 96 } 97 /************************************************************************* 98 * NTSHChangeNotifyDeregister [SHELL32.641] 97 99 */ 98 100 DWORD WINAPI NTSHChangeNotifyDeregister(LONG x1) 99 { 100 101 } 102 103 /************************************************************************* 104 * ParseField 101 { FIXME("(0x%08lx):stub.\n",x1); 102 return 0; 103 } 104 105 /************************************************************************* 106 * ParseField [SHELL32.58] 105 107 * 106 108 */ 107 109 DWORD WINAPI ParseFieldA(LPCSTR src, DWORD field, LPSTR dst, DWORD len) 108 { 109 110 111 112 113 114 { field--; 115 116 117 118 119 120 121 122 123 124 125 126 127 128 } 129 130 /************************************************************************* 131 * PickIconDlg 110 { WARN("('%s',0x%08lx,%p,%ld) semi-stub.\n",src,field,dst,len); 111 112 if (!src || !src[0] || !dst || !len) 113 return 0; 114 115 if (field >1) 116 { field--; 117 while (field) 118 { if (*src==0x0) return FALSE; 119 if (*src==',') field--; 120 src++; 121 } 122 } 123 124 while (*src!=0x00 && *src!=',' && len>0) 125 { *dst=*src; dst++, src++; len--; 126 } 127 *dst=0x0; 128 129 return TRUE; 130 } 131 132 /************************************************************************* 133 * PickIconDlg [SHELL32.62] 132 134 * 133 135 */ 134 136 DWORD WINAPI PickIconDlg(DWORD x,DWORD y,DWORD z,DWORD a) 135 { 136 137 } 138 139 /************************************************************************* 140 * GetFileNameFromBrowse 137 { FIXME("PickIconDlg(%08lx,%08lx,%08lx,%08lx):stub.\n",x,y,z,a); 138 return 0xffffffff; 139 } 140 141 /************************************************************************* 142 * GetFileNameFromBrowse [SHELL32.63] 141 143 * 142 144 */ 143 145 DWORD WINAPI GetFileNameFromBrowse(HWND howner, LPSTR targetbuf, DWORD len, DWORD x, LPCSTR suffix, LPCSTR y, LPCSTR cmd) 144 { 145 146 { FIXME("(%04x,%p,%ld,%08lx,%s,%s,%s):stub.\n", 147 howner,targetbuf,len,x,suffix,y,cmd); 146 148 /* puts up a Open Dialog and requests input into targetbuf */ 147 149 /* OFN_HIDEREADONLY|OFN_NOCHANGEDIR|OFN_FILEMUSTEXIST|OFN_unknown */ … … 151 153 152 154 /************************************************************************* 153 * SHGetSettings 155 * SHGetSettings [SHELL32.68] 154 156 * 155 157 * NOTES … … 159 161 void WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask, DWORD dwx) 160 162 { 161 HKEYhKey;162 DWORDdwData;163 DWORDdwDataSize = sizeof (DWORD);164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 { if (SSF_SHOWALLOBJECTS & dwMask)lpsfs->fShowAllObjects = 0;192 if (SSF_SHOWSYSFILES & dwMask)lpsfs->fShowSysFiles = 0;193 194 195 { if (SSF_SHOWALLOBJECTS & dwMask)lpsfs->fShowAllObjects = 1;196 if (SSF_SHOWSYSFILES & dwMask)lpsfs->fShowSysFiles = 0;197 198 199 { if (SSF_SHOWALLOBJECTS & dwMask)lpsfs->fShowAllObjects = 0;200 if (SSF_SHOWSYSFILES & dwMask)lpsfs->fShowSysFiles = 1;201 202 203 204 205 206 } 207 208 /************************************************************************* 209 * SHShellFolderView_Message 163 HKEY hKey; 164 DWORD dwData; 165 DWORD dwDataSize = sizeof (DWORD); 166 167 TRACE("(%p 0x%08lx 0x%08lx)\n",lpsfs,dwMask, dwx); 168 169 if (RegCreateKeyExA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", 170 0, 0, 0, KEY_ALL_ACCESS, 0, &hKey, 0)) 171 return; 172 173 if ( (SSF_SHOWEXTENSIONS & dwMask) && !RegQueryValueExA(hKey, "HideFileExt", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 174 lpsfs->fShowExtensions = ((dwData == 0) ? 0 : 1); 175 176 if ( (SSF_SHOWINFOTIP & dwMask) && !RegQueryValueExA(hKey, "ShowInfoTip", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 177 lpsfs->fShowInfoTip = ((dwData == 0) ? 0 : 1); 178 179 if ( (SSF_DONTPRETTYPATH & dwMask) && !RegQueryValueExA(hKey, "DontPrettyPath", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 180 lpsfs->fDontPrettyPath = ((dwData == 0) ? 0 : 1); 181 182 if ( (SSF_HIDEICONS & dwMask) && !RegQueryValueExA(hKey, "HideIcons", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 183 lpsfs->fHideIcons = ((dwData == 0) ? 0 : 1); 184 185 if ( (SSF_MAPNETDRVBUTTON & dwMask) && !RegQueryValueExA(hKey, "MapNetDrvBtn", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 186 lpsfs->fMapNetDrvBtn = ((dwData == 0) ? 0 : 1); 187 188 if ( (SSF_SHOWATTRIBCOL & dwMask) && !RegQueryValueExA(hKey, "ShowAttribCol", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 189 lpsfs->fShowAttribCol = ((dwData == 0) ? 0 : 1); 190 191 if (((SSF_SHOWALLOBJECTS | SSF_SHOWSYSFILES) & dwMask) && !RegQueryValueExA(hKey, "Hidden", 0, 0, (LPBYTE)&dwData, &dwDataSize)) 192 { if (dwData == 0) 193 { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 0; 194 if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 0; 195 } 196 else if (dwData == 1) 197 { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 1; 198 if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 0; 199 } 200 else if (dwData == 2) 201 { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 0; 202 if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 1; 203 } 204 } 205 RegCloseKey (hKey); 206 207 TRACE("-- 0x%04x\n", *(WORD*)lpsfs); 208 } 209 210 /************************************************************************* 211 * SHShellFolderView_Message [SHELL32.73] 210 212 * 211 213 * PARAMETERS … … 227 229 228 230 /************************************************************************* 229 * OleStrToStrN 231 * OleStrToStrN [SHELL32.78] 230 232 */ 231 233 BOOL WINAPI OleStrToStrNA (LPSTR lpStr, INT nStr, LPCWSTR lpOle, INT nOle) 232 234 { 233 234 235 TRACE("%p %x %s %x\n", lpStr, nStr, debugstr_w(lpOle), nOle); 236 return WideCharToMultiByte (0, 0, lpOle, nOle, lpStr, nStr, NULL, NULL); 235 237 } 236 238 237 239 BOOL WINAPI OleStrToStrNW (LPWSTR lpwStr, INT nwStr, LPCWSTR lpOle, INT nOle) 238 240 { 239 240 241 242 243 244 241 TRACE("%p %x %s %x\n", lpwStr, nwStr, debugstr_w(lpOle), nOle); 242 243 if (lstrcpynW ( lpwStr, lpOle, nwStr)) 244 { return lstrlenW (lpwStr); 245 } 246 return 0; 245 247 } 246 248 247 249 BOOL WINAPI OleStrToStrNAW (LPVOID lpOut, INT nOut, LPCVOID lpIn, INT nIn) 248 250 { 249 250 251 252 } 253 254 /************************************************************************* 255 * StrToOleStrN 251 if (VERSION_OsIsUnicode()) 252 return OleStrToStrNW ((LPWSTR)lpOut, nOut, (LPCWSTR)lpIn, nIn); 253 return OleStrToStrNA ((LPSTR)lpOut, nOut, (LPCWSTR)lpIn, nIn); 254 } 255 256 /************************************************************************* 257 * StrToOleStrN [SHELL32.79] 256 258 * lpMulti, nMulti, nWide [IN] 257 259 * lpWide [OUT] … … 259 261 BOOL WINAPI StrToOleStrNA (LPWSTR lpWide, INT nWide, LPCSTR lpStrA, INT nStr) 260 262 { 261 262 263 TRACE("%p %x %s %x\n", lpWide, nWide, lpStrA, nStr); 264 return MultiByteToWideChar (0, 0, lpStrA, nStr, lpWide, nWide); 263 265 } 264 266 BOOL WINAPI StrToOleStrNW (LPWSTR lpWide, INT nWide, LPCWSTR lpStrW, INT nStr) 265 267 { 266 267 268 269 270 271 268 TRACE("%p %x %s %x\n", lpWide, nWide, debugstr_w(lpStrW), nStr); 269 270 if (lstrcpynW (lpWide, lpStrW, nWide)) 271 { return lstrlenW (lpWide); 272 } 273 return 0; 272 274 } 273 275 274 276 BOOL WINAPI StrToOleStrNAW (LPWSTR lpWide, INT nWide, LPCVOID lpStr, INT nStr) 275 277 { 276 277 278 279 } 280 281 /************************************************************************* 282 * RegisterShellHook 278 if (VERSION_OsIsUnicode()) 279 return StrToOleStrNW (lpWide, nWide, (LPWSTR)lpStr, nStr); 280 return StrToOleStrNA (lpWide, nWide, (LPSTR)lpStr, nStr); 281 } 282 283 /************************************************************************* 284 * RegisterShellHook [SHELL32.181] 283 285 * 284 286 * PARAMS … … 293 295 } 294 296 /************************************************************************* 295 * ShellMessageBoxW 297 * ShellMessageBoxW [SHELL32.182] 296 298 * 297 299 * Format and output errormessage. 298 300 * 299 * idText 300 * idTitle 301 * idText resource ID of title or LPSTR 302 * idTitle resource ID of title or LPSTR 301 303 * 302 304 * NOTES … … 305 307 INT __cdecl 306 308 ShellMessageBoxW(HMODULE hmod,HWND hwnd,DWORD idText,DWORD idTitle,DWORD uType,LPCVOID arglist) 307 { WCHARszText[100],szTitle[100],szTemp[256];308 309 LPVOIDargs = &arglist;310 311 312 313 314 315 316 317 318 319 320 321 322 323 309 { WCHAR szText[100],szTitle[100],szTemp[256]; 310 LPWSTR pszText = &szText[0], pszTitle = &szTitle[0]; 311 LPVOID args = &arglist; 312 313 TRACE("(%08lx,%08lx,%08lx,%08lx,%08lx,%p)\n",(DWORD)hmod,(DWORD)hwnd,idText,idTitle,uType,arglist); 314 315 if (!HIWORD (idTitle)) 316 LoadStringW(hmod,idTitle,pszTitle,100); 317 else 318 pszTitle = (LPWSTR)idTitle; 319 320 if (! HIWORD (idText)) 321 LoadStringW(hmod,idText,pszText,100); 322 else 323 pszText = (LPWSTR)idText; 324 325 FormatMessageW(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ARGUMENT_ARRAY, 324 326 szText, 325 327 0, … … 328 330 256, 329 331 (LPDWORD)args); 330 331 } 332 333 /************************************************************************* 334 * ShellMessageBoxA 332 return MessageBoxW(hwnd,szTemp,szTitle,uType); 333 } 334 335 /************************************************************************* 336 * ShellMessageBoxA [SHELL32.183] 335 337 */ 336 338 INT __cdecl 337 339 ShellMessageBoxA(HMODULE hmod,HWND hwnd,DWORD idText,DWORD idTitle,DWORD uType,LPCVOID arglist) 338 { charszText[100],szTitle[100],szTemp[256];339 340 LPVOIDargs = &arglist;341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 } 357 358 /************************************************************************* 359 * SHRestricted 340 { char szText[100],szTitle[100],szTemp[256]; 341 LPSTR pszText = &szText[0], pszTitle = &szTitle[0]; 342 LPVOID args = &arglist; 343 344 TRACE("(%08lx,%08lx,%08lx,%08lx,%08lx,%p)\n", (DWORD)hmod,(DWORD)hwnd,idText,idTitle,uType,arglist); 345 346 if (!HIWORD (idTitle)) 347 LoadStringA(hmod,idTitle,pszTitle,100); 348 else 349 pszTitle = (LPSTR)idTitle; 350 351 if (! HIWORD (idText)) 352 LoadStringA(hmod,idText,pszText,100); 353 else 354 pszText = (LPSTR)idText; 355 356 FormatMessageA(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ARGUMENT_ARRAY ,pszText,0,0,szTemp,256,(LPDWORD)args); 357 return MessageBoxA(hwnd,szTemp,pszTitle,uType); 358 } 359 360 /************************************************************************* 361 * SHRestricted [SHELL32.100] 360 362 * 361 363 * walks through policy table, queries <app> key, <type> value, returns … … 373 375 DWORD WINAPI SHRestricted (DWORD pol) { 374 376 char regstr[256]; 375 HKEYxhkey;376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 } 420 421 377 HKEY xhkey; 378 DWORD retval, polidx, i, datsize = 4; 379 380 TRACE("(%08lx)\n",pol); 381 382 polidx = -1; 383 384 /* scan to see if we know this policy ID */ 385 for (i = 0; i < SHELL_MAX_POLICIES; i++) 386 { 387 if (pol == sh32_policy_table[i].polflags) 388 { 389 polidx = i; 390 break; 391 } 392 } 393 394 if (polidx == -1) 395 { 396 /* we don't know this policy, return 0 */ 397 TRACE("unknown policy: (%08lx)\n", pol); 398 return 0; 399 } 400 401 /* we have a known policy */ 402 lstrcpyA(regstr, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\"); 403 lstrcatA(regstr, sh32_policy_table[polidx].appstr); 404 405 /* first check if this policy has been cached, return it if so */ 406 if (sh32_policy_table[polidx].cache != SHELL_NO_POLICY) 407 { 408 return sh32_policy_table[polidx].cache; 409 } 410 411 /* return 0 and don't set the cache if any registry errors occur */ 412 retval = 0; 413 if (RegOpenKeyA(HKEY_CURRENT_USER, regstr, &xhkey) == ERROR_SUCCESS) 414 { 415 if (RegQueryValueExA(xhkey, sh32_policy_table[polidx].keystr, NULL, NULL, (LPBYTE)&retval, &datsize) == ERROR_SUCCESS) 416 { 417 sh32_policy_table[polidx].cache = retval; 418 } 419 420 RegCloseKey(xhkey); 421 } 422 423 return retval; 422 424 } 423 425 … … 460 462 { 461 463 if (lstrcmpiA(inpRegKey, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies")) 462 463 464 465 464 { 465 /* doesn't match, fail */ 466 return 0; 467 } 466 468 } 467 469 … … 476 478 477 479 /************************************************************************* 478 * SHCreateDirectory 480 * SHCreateDirectory [SHELL32.165] 479 481 * 480 482 * NOTES … … 483 485 */ 484 486 DWORD WINAPI SHCreateDirectory(LPSECURITY_ATTRIBUTES sec,LPCSTR path) { 485 486 487 488 489 487 TRACE("(%p,%s):stub.\n",sec,path); 488 if (CreateDirectoryA(path,sec)) 489 return TRUE; 490 /* SHChangeNotify(8,1,path,0); */ 491 return FALSE; 490 492 #if 0 491 492 493 494 493 if (SHELL32_79(path,(LPVOID)x)) 494 return 0; 495 FIXME("(%08lx,%s):stub.\n",x,path); 496 return 0; 495 497 #endif 496 498 } 497 499 498 500 /************************************************************************* 499 * SHFree 501 * SHFree [SHELL32.195] 500 502 * 501 503 * NOTES … … 503 505 * exported by ordinal 504 506 */ 505 /*#define MEM_DEBUG 1*/ 507 #define MEM_DEBUG 0 506 508 DWORD WINAPI SHFree(LPVOID x) 507 509 { 508 #if defMEM_DEBUG509 510 511 512 513 514 515 516 517 518 519 520 521 510 #if MEM_DEBUG 511 WORD len = *(LPWORD)(x-2); 512 513 if ( *(LPWORD)(x+len) != 0x7384) 514 ERR("MAGIC2!\n"); 515 516 if ( (*(LPWORD)(x-4)) != 0x8271) 517 ERR("MAGIC1!\n"); 518 else 519 memset(x-4, 0xde, len+6); 520 521 TRACE("%p len=%u\n",x, len); 522 523 x -= 4; 522 524 #else 523 525 TRACE("%p\n",x); 524 526 #endif 525 526 } 527 528 /************************************************************************* 529 * SHAlloc 527 return HeapFree(GetProcessHeap(), 0, x); 528 } 529 530 /************************************************************************* 531 * SHAlloc [SHELL32.196] 530 532 * 531 533 * NOTES … … 535 537 LPVOID WINAPI SHAlloc(DWORD len) 536 538 { 537 538 539 #if defMEM_DEBUG540 539 LPBYTE ret; 540 541 #if MEM_DEBUG 542 ret = (LPBYTE) HeapAlloc(GetProcessHeap(),0,len+6); 541 543 #else 542 544 ret = (LPBYTE) HeapAlloc(GetProcessHeap(),0,len); 543 545 #endif 544 546 545 #if defMEM_DEBUG546 547 548 549 550 547 #if MEM_DEBUG 548 *(LPWORD)(ret) = 0x8271; 549 *(LPWORD)(ret+2) = (WORD)len; 550 *(LPWORD)(ret+4+len) = 0x7384; 551 ret += 4; 552 memset(ret, 0xdf, len); 551 553 #endif 552 553 554 } 555 556 /************************************************************************* 557 * SHRegisterDragDrop 554 TRACE("%lu bytes at %p\n",len, ret); 555 return (LPVOID)ret; 556 } 557 558 /************************************************************************* 559 * SHRegisterDragDrop [SHELL32.86] 558 560 * 559 561 * NOTES … … 562 564 DWORD WINAPI SHRegisterDragDrop(HWND hWnd,IDropTarget * pDropTarget) 563 565 { 564 565 566 } 567 568 /************************************************************************* 569 * SHRevokeDragDrop 566 FIXME("(0x%08x,%p):stub.\n", hWnd, pDropTarget); 567 return RegisterDragDrop(hWnd, pDropTarget); 568 } 569 570 /************************************************************************* 571 * SHRevokeDragDrop [SHELL32.87] 570 572 * 571 573 * NOTES … … 578 580 579 581 /************************************************************************* 580 * SHDoDragDrop 582 * SHDoDragDrop [SHELL32.88] 581 583 * 582 584 * NOTES … … 589 591 590 592 /************************************************************************* 591 * RunFileDlg 593 * RunFileDlg [SHELL32.61] 592 594 * 593 595 * NOTES … … 596 598 DWORD WINAPI 597 599 RunFileDlg (HWND hwndOwner, DWORD dwParam1, DWORD dwParam2, 598 600 LPSTR lpszTitle, LPSTR lpszPrompt, UINT uFlags) 599 601 { 600 602 FIXME("(0x%08x 0x%lx 0x%lx \"%s\" \"%s\" 0x%x):stub.\n", 601 603 hwndOwner, dwParam1, dwParam2, lpszTitle, lpszPrompt, uFlags); 602 604 return 0; 603 605 } 604 606 605 607 /************************************************************************* 606 * ExitWindowsDialog 608 * ExitWindowsDialog [SHELL32.60] 607 609 * 608 610 * NOTES … … 611 613 void WINAPI ExitWindowsDialog (HWND hWndOwner) 612 614 { 613 614 615 616 617 } 618 619 /************************************************************************* 620 * ArrangeWindows 615 TRACE("(0x%08x)\n", hWndOwner); 616 if (MessageBoxA( hWndOwner, "Do you want to exit WINE?", "Shutdown", MB_YESNO|MB_ICONQUESTION) == IDOK) 617 { SendMessageA ( hWndOwner, WM_QUIT, 0, 0); 618 } 619 } 620 621 /************************************************************************* 622 * ArrangeWindows [SHELL32.184] 621 623 * 622 624 */ 623 625 DWORD WINAPI 624 626 ArrangeWindows (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3, 625 627 DWORD dwParam4, DWORD dwParam5) 626 628 { 627 629 FIXME("(0x%lx 0x%lx 0x%lx 0x%lx 0x%lx):stub.\n", 628 630 dwParam1, dwParam2, dwParam3, dwParam4, dwParam5); 629 631 return 0; 630 632 } 631 633 632 634 /************************************************************************* 633 * SignalFileOpen 635 * SignalFileOpen [SHELL32.103] 634 636 * 635 637 * NOTES … … 645 647 646 648 /************************************************************************* 647 * SHAddToRecentDocs 649 * SHAddToRecentDocs [SHELL32.234] 648 650 * 649 651 * PARAMETERS … … 657 659 { if (SHARD_PIDL==uFlags) 658 660 { FIXME("(0x%08x,pidl=%p):stub.\n", uFlags,pv); 659 660 661 662 661 } 662 else 663 { FIXME("(0x%08x,%s):stub.\n", uFlags,(char*)pv); 664 } 663 665 return 0; 664 666 } 665 667 /************************************************************************* 666 * SHFileOperation 668 * SHFileOperation [SHELL32.242] 667 669 * 668 670 */ 669 671 DWORD WINAPI SHFileOperationAW(DWORD x) 670 { 671 672 673 } 674 675 /************************************************************************* 676 * SHFileOperationA 672 { FIXME("0x%08lx stub\n",x); 673 return 0; 674 675 } 676 677 /************************************************************************* 678 * SHFileOperationA [SHELL32.243] 677 679 * 678 680 * NOTES … … 684 686 } 685 687 /************************************************************************* 686 * SHFileOperationW 688 * SHFileOperationW [SHELL32.244] 687 689 * 688 690 * NOTES … … 695 697 696 698 /************************************************************************* 697 * SHChangeNotify 699 * SHChangeNotify [SHELL32.239] 698 700 * 699 701 * NOTES … … 703 705 INT wEventId, /* [IN] flags that specifies the event*/ 704 706 UINT uFlags, /* [IN] the meaning of dwItem[1|2]*/ 705 706 707 LPCVOID dwItem1, 708 LPCVOID dwItem2) 707 709 { FIXME("(0x%08x,0x%08ux,%p,%p):stub.\n", wEventId,uFlags,dwItem1,dwItem2); 708 710 return 0; 709 711 } 710 712 /************************************************************************* 711 * SHCreateShellFolderViewEx 713 * SHCreateShellFolderViewEx [SHELL32.174] 712 714 * 713 715 * NOTES … … 718 720 LPVOID* ppv) /*[out] IShellView pointer*/ 719 721 { 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 } 737 /************************************************************************* 738 * SHWinHelp 722 IShellView * psf; 723 HRESULT hRes; 724 725 TRACE("sf=%p pidl=%p cb=%p mode=0x%08lx parm=0x%08lx\n", 726 psvcbi->pShellFolder, psvcbi->pidl, psvcbi->pCallBack, psvcbi->viewmode, psvcbi->dwUserParam); 727 728 psf = IShellView_Constructor(psvcbi->pShellFolder); 729 730 if (!psf) 731 return E_OUTOFMEMORY; 732 733 IShellView_AddRef(psf); 734 hRes = IShellView_QueryInterface(psf, &IID_IShellView, (LPVOID *)ppv); 735 IShellView_Release(psf); 736 737 return hRes; 738 } 739 /************************************************************************* 740 * SHWinHelp [SHELL32.127] 739 741 * 740 742 */ 741 743 HRESULT WINAPI SHWinHelp (DWORD v, DWORD w, DWORD x, DWORD z) 742 { 743 744 { FIXME("0x%08lx 0x%08lx 0x%08lx 0x%08lx stub\n",v,w,x,z); 745 return 0; 744 746 } 745 747 /************************************************************************* … … 748 750 */ 749 751 HRESULT WINAPI SHRunControlPanel (DWORD x, DWORD z) 750 { 751 752 } 753 /************************************************************************* 754 * ShellExecuteEx 752 { FIXME("0x%08lx 0x%08lx stub\n",x,z); 753 return 0; 754 } 755 /************************************************************************* 756 * ShellExecuteEx [SHELL32.291] 755 757 * 756 758 */ 757 759 BOOL WINAPI ShellExecuteExAW (LPVOID sei) 758 { 759 760 761 } 762 /************************************************************************* 763 * ShellExecuteExA 760 { if (VERSION_OsIsUnicode()) 761 return ShellExecuteExW ((LPSHELLEXECUTEINFOW)sei); 762 return ShellExecuteExA ((LPSHELLEXECUTEINFOA)sei); 763 } 764 /************************************************************************* 765 * ShellExecuteExA [SHELL32.292] 764 766 * 765 767 */ 766 768 BOOL WINAPI ShellExecuteExA (LPSHELLEXECUTEINFOA sei) 767 { 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 { HCR_GetExecuteCommand(sei->lpClass, (sei->lpVerb) ? sei->lpVerb : "open", szCommandline, 256); 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 pos = strstr(szCommandline, ",%L");/* dunno what it means: kill it*/821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 } 839 /************************************************************************* 840 * ShellExecuteExW 769 { CHAR szApplicationName[MAX_PATH],szCommandline[MAX_PATH],szPidl[20]; 770 LPSTR pos; 771 int gap, len; 772 STARTUPINFOA startupinfo; 773 PROCESS_INFORMATION processinformation; 774 775 WARN("mask=0x%08lx hwnd=0x%04x verb=%s file=%s parm=%s dir=%s show=0x%08x class=%s incomplete\n", 776 sei->fMask, sei->hwnd, sei->lpVerb, sei->lpFile, 777 sei->lpParameters, sei->lpDirectory, sei->nShow, 778 (sei->fMask & SEE_MASK_CLASSNAME) ? sei->lpClass : "not used"); 779 780 ZeroMemory(szApplicationName,MAX_PATH); 781 if (sei->lpFile) 782 strcpy(szApplicationName, sei->lpFile); 783 784 ZeroMemory(szCommandline,MAX_PATH); 785 if (sei->lpParameters) 786 strcpy(szCommandline, sei->lpParameters); 787 788 if (sei->fMask & (SEE_MASK_CLASSKEY | SEE_MASK_INVOKEIDLIST | SEE_MASK_ICON | SEE_MASK_HOTKEY | 789 SEE_MASK_NOCLOSEPROCESS | SEE_MASK_CONNECTNETDRV | SEE_MASK_FLAG_DDEWAIT | 790 SEE_MASK_DOENVSUBST | SEE_MASK_FLAG_NO_UI | SEE_MASK_UNICODE | 791 SEE_MASK_NO_CONSOLE | SEE_MASK_ASYNCOK | SEE_MASK_HMONITOR )) 792 { FIXME("flags ignored: 0x%08lx\n", sei->fMask); 793 } 794 795 if (sei->fMask & SEE_MASK_CLASSNAME) 796 { HCR_GetExecuteCommand(sei->lpClass, (sei->lpVerb) ? sei->lpVerb : "open", szCommandline, 256); 797 } 798 799 /* process the IDList */ 800 if ( (sei->fMask & SEE_MASK_INVOKEIDLIST) == SEE_MASK_INVOKEIDLIST) /*0x0c*/ 801 { SHGetPathFromIDListA ((LPCITEMIDLIST)sei->lpIDList,szApplicationName); 802 TRACE("-- idlist=%p (%s)\n", sei->lpIDList, szApplicationName); 803 } 804 else 805 { if (sei->fMask & SEE_MASK_IDLIST ) 806 { /* %I is the adress of a global item ID*/ 807 pos = strstr(szCommandline, "%I"); 808 if (pos) 809 { HGLOBAL hmem = SHAllocShared ( sei->lpIDList, ILGetSize((LPCITEMIDLIST)sei->lpIDList), 0); 810 sprintf(szPidl,":%li",(DWORD)SHLockShared(hmem,0) ); 811 SHUnlockShared(hmem); 812 813 gap = strlen(szPidl); 814 len = strlen(pos)-2; 815 memmove(pos+gap,pos+2,len); 816 memcpy(pos,szPidl,gap); 817 818 } 819 } 820 } 821 822 pos = strstr(szCommandline, ",%L"); /* dunno what it means: kill it*/ 823 if (pos) 824 { len = strlen(pos)-2; 825 *pos=0x0; 826 memmove(pos,pos+3,len); 827 } 828 829 TRACE("execute: %s %s\n",szApplicationName, szCommandline); 830 831 ZeroMemory(&startupinfo,sizeof(STARTUPINFOA)); 832 startupinfo.cb = sizeof(STARTUPINFOA); 833 834 return CreateProcessA(szApplicationName[0] ? szApplicationName:NULL, 835 szCommandline[0] ? szCommandline : NULL, 836 NULL, NULL, FALSE, 0, 837 NULL, NULL, &startupinfo, &processinformation); 838 839 840 } 841 /************************************************************************* 842 * ShellExecuteExW [SHELL32.293] 841 843 * 842 844 */ 843 845 BOOL WINAPI ShellExecuteExW (LPSHELLEXECUTEINFOW sei) 844 { 845 846 847 848 849 850 846 { SHELLEXECUTEINFOA seiA; 847 DWORD ret; 848 849 TRACE("%p\n", sei); 850 851 memcpy(&seiA, sei, sizeof(SHELLEXECUTEINFOA)); 852 851 853 if (sei->lpVerb) 852 854 seiA.lpVerb = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpVerb); 853 855 854 856 if (sei->lpFile) 855 857 seiA.lpFile = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpFile); 856 858 857 859 if (sei->lpParameters) 858 859 860 861 860 seiA.lpParameters = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpParameters); 861 862 if (sei->lpDirectory) 863 seiA.lpDirectory = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpDirectory); 862 864 863 865 if ((sei->fMask & SEE_MASK_CLASSNAME) && sei->lpClass) 864 865 866 867 868 869 870 if (seiA.lpVerb) 871 if (seiA.lpFile)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpFile );872 if (seiA.lpParameters)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpParameters );873 if (seiA.lpDirectory)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpDirectory );874 if (seiA.lpClass)HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpClass );875 876 866 seiA.lpClass = HEAP_strdupWtoA( GetProcessHeap(), 0, sei->lpClass); 867 else 868 seiA.lpClass = NULL; 869 870 ret = ShellExecuteExA(&seiA); 871 872 if (seiA.lpVerb) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpVerb ); 873 if (seiA.lpFile) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpFile ); 874 if (seiA.lpParameters) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpParameters ); 875 if (seiA.lpDirectory) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpDirectory ); 876 if (seiA.lpClass) HeapFree( GetProcessHeap(), 0, (LPSTR) seiA.lpClass ); 877 878 return ret; 877 879 } 878 880 879 881 static LPUNKNOWN SHELL32_IExplorerInterface=0; 880 882 /************************************************************************* 881 * SHSetInstanceExplorer 883 * SHSetInstanceExplorer [SHELL32.176] 882 884 * 883 885 * NOTES … … 885 887 */ 886 888 HRESULT WINAPI SHSetInstanceExplorer (LPUNKNOWN lpUnknown) 887 { 888 889 890 } 891 /************************************************************************* 892 * SHGetInstanceExplorer 889 { TRACE("%p\n", lpUnknown); 890 SHELL32_IExplorerInterface = lpUnknown; 891 return (HRESULT) lpUnknown; 892 } 893 /************************************************************************* 894 * SHGetInstanceExplorer [SHELL32.256] 893 895 * 894 896 * NOTES … … 896 898 */ 897 899 HRESULT WINAPI SHGetInstanceExplorer (LPUNKNOWN * lpUnknown) 898 { 899 900 901 902 903 904 905 906 907 } 908 /************************************************************************* 909 * SHFreeUnusedLibraries 900 { TRACE("%p\n", lpUnknown); 901 902 *lpUnknown = SHELL32_IExplorerInterface; 903 904 if (!SHELL32_IExplorerInterface) 905 return E_FAIL; 906 907 IUnknown_AddRef(SHELL32_IExplorerInterface); 908 return NOERROR; 909 } 910 /************************************************************************* 911 * SHFreeUnusedLibraries [SHELL32.123] 910 912 * 911 913 * NOTES … … 913 915 */ 914 916 HRESULT WINAPI SHFreeUnusedLibraries (void) 915 { 916 917 } 918 /************************************************************************* 919 * DAD_SetDragImage 917 { FIXME("stub\n"); 918 return TRUE; 919 } 920 /************************************************************************* 921 * DAD_SetDragImage [SHELL32.136] 920 922 * 921 923 * NOTES … … 927 929 } 928 930 /************************************************************************* 929 * DAD_ShowDragImage 931 * DAD_ShowDragImage [SHELL32.137] 930 932 * 931 933 * NOTES … … 937 939 } 938 940 /************************************************************************* 939 * SHRegCloseKey 941 * SHRegCloseKey [NT4.0:SHELL32.505] 940 942 * 941 943 */ 942 944 HRESULT WINAPI SHRegCloseKey (HKEY hkey) 943 { 944 945 } 946 /************************************************************************* 947 * SHRegOpenKeyA 945 { TRACE("0x%04x\n",hkey); 946 return RegCloseKey( hkey ); 947 } 948 /************************************************************************* 949 * SHRegOpenKeyA [SHELL32.506] 948 950 * 949 951 */ 950 952 HRESULT WINAPI SHRegOpenKeyA(HKEY hKey, LPSTR lpSubKey, LPHKEY phkResult) 951 953 { 952 953 954 } 955 956 /************************************************************************* 957 * SHRegOpenKeyW 954 TRACE("(0x%08x, %s, %p)\n", hKey, debugstr_a(lpSubKey), phkResult); 955 return RegOpenKeyA(hKey, lpSubKey, phkResult); 956 } 957 958 /************************************************************************* 959 * SHRegOpenKeyW [NT4.0:SHELL32.507] 958 960 * 959 961 */ 960 962 HRESULT WINAPI SHRegOpenKeyW (HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey) 961 { 962 963 } 964 /************************************************************************* 965 * SHRegQueryValueExA 963 { WARN("0x%04x %s %p\n",hkey,debugstr_w(lpszSubKey),retkey); 964 return RegOpenKeyW( hkey, lpszSubKey, retkey ); 965 } 966 /************************************************************************* 967 * SHRegQueryValueExA [SHELL32.509] 966 968 * 967 969 */ 968 970 HRESULT WINAPI SHRegQueryValueExA( 969 970 971 972 973 974 975 { 976 977 978 } 979 /************************************************************************* 980 * SHRegQueryValueW 971 HKEY hkey, 972 LPSTR lpValueName, 973 LPDWORD lpReserved, 974 LPDWORD lpType, 975 LPBYTE lpData, 976 LPDWORD lpcbData) 977 { 978 TRACE("0x%04x %s %p %p %p %p\n", hkey, lpValueName, lpReserved, lpType, lpData, lpcbData); 979 return RegQueryValueExA (hkey, lpValueName, lpReserved, lpType, lpData, lpcbData); 980 } 981 /************************************************************************* 982 * SHRegQueryValueW [NT4.0:SHELL32.510] 981 983 * 982 984 */ 983 985 HRESULT WINAPI SHRegQueryValueW (HKEY hkey, LPWSTR lpszSubKey, 984 985 { 986 987 988 } 989 990 /************************************************************************* 991 * SHRegQueryValueExW 986 LPWSTR lpszData, LPDWORD lpcbData ) 987 { WARN("0x%04x %s %p %p semi-stub\n", 988 hkey, debugstr_w(lpszSubKey), lpszData, lpcbData); 989 return RegQueryValueW( hkey, lpszSubKey, lpszData, (LPLONG)lpcbData ); 990 } 991 992 /************************************************************************* 993 * SHRegQueryValueExW [NT4.0:SHELL32.511] 992 994 * 993 995 * FIXME … … 996 998 */ 997 999 HRESULT WINAPI SHRegQueryValueExW (HKEY hkey, LPWSTR pszValue, LPDWORD pdwReserved, 998 999 { 1000 1001 1002 1003 1004 } 1005 1006 /************************************************************************* 1007 * ReadCabinetState 1000 LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData) 1001 { DWORD ret; 1002 WARN("0x%04x %s %p %p %p %p semi-stub\n", 1003 hkey, debugstr_w(pszValue), pdwReserved, pdwType, pvData, pcbData); 1004 ret = RegQueryValueExW ( hkey, pszValue, pdwReserved, pdwType, (LPBYTE)pvData, pcbData); 1005 return ret; 1006 } 1007 1008 /************************************************************************* 1009 * ReadCabinetState [NT 4.0:SHELL32.651] 1008 1010 * 1009 1011 */ 1010 1012 HRESULT WINAPI ReadCabinetState(DWORD u, DWORD v) 1011 { 1012 1013 } 1014 /************************************************************************* 1015 * WriteCabinetState 1013 { FIXME("0x%04lx 0x%04lx stub\n",u,v); 1014 return 0; 1015 } 1016 /************************************************************************* 1017 * WriteCabinetState [NT 4.0:SHELL32.652] 1016 1018 * 1017 1019 */ 1018 1020 HRESULT WINAPI WriteCabinetState(DWORD u) 1019 { 1020 1021 } 1022 /************************************************************************* 1023 * FileIconInit 1021 { FIXME("0x%04lx stub\n",u); 1022 return 0; 1023 } 1024 /************************************************************************* 1025 * FileIconInit [SHELL32.660] 1024 1026 * 1025 1027 */ 1026 1028 BOOL WINAPI FileIconInit(BOOL bFullInit) 1027 { 1028 1029 } 1030 /************************************************************************* 1031 * IsUserAdmin 1029 { FIXME("(%s)\n", bFullInit ? "true" : "false"); 1030 return 0; 1031 } 1032 /************************************************************************* 1033 * IsUserAdmin [NT 4.0:SHELL32.680] 1032 1034 * 1033 1035 */ 1034 1036 HRESULT WINAPI IsUserAdmin(void) 1035 { 1036 1037 } 1038 /************************************************************************* 1039 * StrRetToStrN 1037 { FIXME("stub\n"); 1038 return TRUE; 1039 } 1040 /************************************************************************* 1041 * StrRetToStrN [SHELL32.96] 1040 1042 * 1041 1043 * converts a STRRET to a normal string … … 1046 1048 HRESULT WINAPI StrRetToBufA (LPSTRRET src, LPITEMIDLIST pidl, LPSTR dest, DWORD len) 1047 1049 { 1048 1050 return StrRetToStrNA(dest, len, src, pidl); 1049 1051 } 1050 1052 1051 1053 HRESULT WINAPI StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl) 1052 1054 { 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1055 TRACE("dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,pidl); 1056 1057 switch (src->uType) 1058 { 1059 case STRRET_WSTR: 1060 WideCharToMultiByte(CP_ACP, 0, src->u.pOleStr, -1, (LPSTR)dest, len, NULL, NULL); 1061 SHFree(src->u.pOleStr); 1062 break; 1063 1064 case STRRET_CSTRA: 1065 lstrcpynA((LPSTR)dest, src->u.cStr, len); 1066 break; 1067 1068 case STRRET_OFFSETA: 1069 lstrcpynA((LPSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len); 1070 break; 1071 1072 default: 1073 FIXME("unknown type!\n"); 1074 if (len) 1075 { 1076 *(LPSTR)dest = '\0'; 1077 } 1078 return(FALSE); 1079 } 1080 return S_OK; 1079 1081 } 1080 1082 1081 1083 HRESULT WINAPI StrRetToBufW (LPSTRRET src, LPITEMIDLIST pidl, LPWSTR dest, DWORD len) 1082 1084 { 1083 1085 return StrRetToStrNW(dest, len, src, pidl); 1084 1086 } 1085 1087 1086 1088 HRESULT WINAPI StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl) 1087 1089 { 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1090 TRACE("dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,pidl); 1091 1092 switch (src->uType) 1093 { 1094 case STRRET_WSTR: 1095 lstrcpynW((LPWSTR)dest, src->u.pOleStr, len); 1096 SHFree(src->u.pOleStr); 1097 break; 1098 1099 case STRRET_CSTRA: 1100 lstrcpynAtoW((LPWSTR)dest, src->u.cStr, len); 1101 break; 1102 1103 case STRRET_OFFSETA: 1104 if (pidl) 1105 { 1106 lstrcpynAtoW((LPWSTR)dest, ((LPSTR)&pidl->mkid)+src->u.uOffset, len); 1107 } 1108 break; 1109 1110 default: 1111 FIXME("unknown type!\n"); 1112 if (len) 1113 { *(LPSTR)dest = '\0'; 1114 } 1115 return(FALSE); 1116 } 1117 return S_OK; 1116 1118 } 1117 1119 HRESULT WINAPI StrRetToStrNAW (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl) 1118 1120 { 1119 1120 1121 1122 } 1123 1124 /************************************************************************* 1125 * StrChrA 1121 if(VERSION_OsIsUnicode()) 1122 return StrRetToStrNW (dest, len, src, pidl); 1123 return StrRetToStrNA (dest, len, src, pidl); 1124 } 1125 1126 /************************************************************************* 1127 * StrChrA [NT 4.0:SHELL32.651] 1126 1128 * 1127 1129 */ 1128 1130 LPSTR WINAPI StrChrA (LPSTR str, CHAR x ) 1129 { 1130 1131 1132 1133 1134 1135 1136 1137 1138 } 1139 1140 /************************************************************************* 1141 * StrChrW 1131 { LPSTR ptr=str; 1132 1133 do 1134 { if (*ptr==x) 1135 { return ptr; 1136 } 1137 ptr++; 1138 } while (*ptr); 1139 return NULL; 1140 } 1141 1142 /************************************************************************* 1143 * StrChrW [NT 4.0:SHELL32.651] 1142 1144 * 1143 1145 */ 1144 1146 LPWSTR WINAPI StrChrW (LPWSTR str, WCHAR x ) 1145 { 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 } 1156 1157 /************************************************************************* 1158 * StrCmpNIW 1147 { LPWSTR ptr=str; 1148 1149 TRACE("%s 0x%04x\n",debugstr_w(str),x); 1150 do 1151 { if (*ptr==x) 1152 { return ptr; 1153 } 1154 ptr++; 1155 } while (*ptr); 1156 return NULL; 1157 } 1158 1159 /************************************************************************* 1160 * StrCmpNIW [NT 4.0:SHELL32.*] 1159 1161 * 1160 1162 */ 1161 1163 INT WINAPI StrCmpNIW ( LPWSTR wstr1, LPWSTR wstr2, INT len) 1162 { 1163 1164 } 1165 1166 /************************************************************************* 1167 * StrCmpNIA 1164 { FIXME("%s %s %i stub\n", debugstr_w(wstr1),debugstr_w(wstr2),len); 1165 return 0; 1166 } 1167 1168 /************************************************************************* 1169 * StrCmpNIA [NT 4.0:SHELL32.*] 1168 1170 * 1169 1171 */ 1170 1172 INT WINAPI StrCmpNIA ( LPSTR wstr1, LPSTR wstr2, INT len) 1171 { 1172 1173 } 1174 1175 /************************************************************************* 1176 * SHAllocShared 1173 { FIXME("%s %s %i stub\n", wstr1,wstr2,len); 1174 return 0; 1175 } 1176 1177 /************************************************************************* 1178 * SHAllocShared [SHELL32.520] 1177 1179 * 1178 1180 * NOTES … … 1186 1188 */ 1187 1189 HGLOBAL WINAPI SHAllocShared(LPVOID psrc, DWORD size, DWORD procID) 1188 { 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 } 1205 /************************************************************************* 1206 * SHLockShared 1190 { HGLOBAL hmem; 1191 LPVOID pmem; 1192 1193 TRACE("ptr=%p size=0x%04lx procID=0x%04lx\n",psrc,size,procID); 1194 hmem = GlobalAlloc(GMEM_FIXED, size); 1195 if (!hmem) 1196 return 0; 1197 1198 pmem = GlobalLock (hmem); 1199 1200 if (! pmem) 1201 return 0; 1202 1203 memcpy (pmem, psrc, size); 1204 GlobalUnlock(hmem); 1205 return hmem; 1206 } 1207 /************************************************************************* 1208 * SHLockShared [SHELL32.521] 1207 1209 * 1208 1210 * NOTES … … 1213 1215 */ 1214 1216 LPVOID WINAPI SHLockShared(HANDLE hmem, DWORD procID) 1215 { 1216 1217 } 1218 /************************************************************************* 1219 * SHUnlockShared 1217 { TRACE("handle=0x%04x procID=0x%04lx\n",hmem,procID); 1218 return GlobalLock(hmem); 1219 } 1220 /************************************************************************* 1221 * SHUnlockShared [SHELL32.522] 1220 1222 * 1221 1223 * NOTES … … 1223 1225 */ 1224 1226 BOOL WINAPI SHUnlockShared(HANDLE pmem) 1225 { 1226 1227 } 1228 /************************************************************************* 1229 * SHFreeShared 1227 { TRACE("handle=0x%04x\n",pmem); 1228 return GlobalUnlock(pmem); 1229 } 1230 /************************************************************************* 1231 * SHFreeShared [SHELL32.523] 1230 1232 * 1231 1233 * NOTES … … 1234 1236 */ 1235 1237 HANDLE WINAPI SHFreeShared(HANDLE hmem, DWORD procID) 1236 { 1237 1238 } 1239 1240 /************************************************************************* 1241 * SetAppStartingCursor 1238 { TRACE("handle=0x%04x 0x%04lx\n",hmem,procID); 1239 return GlobalFree(hmem); 1240 } 1241 1242 /************************************************************************* 1243 * SetAppStartingCursor [SHELL32.99] 1242 1244 * 1243 1245 */ 1244 1246 HRESULT WINAPI SetAppStartingCursor(HWND u, DWORD v) 1245 { 1246 1247 } 1248 /************************************************************************* 1249 * SHLoadOLE 1247 { FIXME("hwnd=0x%04x 0x%04lx stub\n",u,v ); 1248 return 0; 1249 } 1250 /************************************************************************* 1251 * SHLoadOLE [SHELL32.151] 1250 1252 * 1251 1253 */ 1252 1254 HRESULT WINAPI SHLoadOLE(DWORD u) 1253 { 1254 1255 } 1256 /************************************************************************* 1257 * DriveType 1255 { FIXME("0x%04lx stub\n",u); 1256 return S_OK; 1257 } 1258 /************************************************************************* 1259 * DriveType [SHELL32.64] 1258 1260 * 1259 1261 */ 1260 1262 HRESULT WINAPI DriveType(DWORD u) 1261 { 1262 1263 } 1264 /************************************************************************* 1265 * SHAbortInvokeCommand 1263 { FIXME("0x%04lx stub\n",u); 1264 return 0; 1265 } 1266 /************************************************************************* 1267 * SHAbortInvokeCommand [SHELL32.198] 1266 1268 * 1267 1269 */ 1268 1270 HRESULT WINAPI SHAbortInvokeCommand(void) 1269 { 1270 1271 } 1272 /************************************************************************* 1273 * SHOutOfMemoryMessageBox 1271 { FIXME("stub\n"); 1272 return 1; 1273 } 1274 /************************************************************************* 1275 * SHOutOfMemoryMessageBox [SHELL32.126] 1274 1276 * 1275 1277 */ 1276 1278 HRESULT WINAPI SHOutOfMemoryMessageBox(DWORD u, DWORD v, DWORD w) 1277 { 1278 1279 } 1280 /************************************************************************* 1281 * SHFlushClipboard 1279 { FIXME("0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w); 1280 return 0; 1281 } 1282 /************************************************************************* 1283 * SHFlushClipboard [SHELL32.121] 1282 1284 * 1283 1285 */ 1284 1286 HRESULT WINAPI SHFlushClipboard(void) 1285 { 1286 1287 } 1288 /************************************************************************* 1289 * StrRChrA 1287 { FIXME("stub\n"); 1288 return 1; 1289 } 1290 /************************************************************************* 1291 * StrRChrA [SHELL32.346] 1290 1292 * 1291 1293 */ 1292 1294 LPSTR WINAPI StrRChrA(LPCSTR lpStart, LPCSTR lpEnd, DWORD wMatch) 1293 1295 { 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 } 1310 /************************************************************************* 1311 * StrRChrW 1296 if (!lpStart) 1297 return NULL; 1298 1299 /* if the end not given, search*/ 1300 if (!lpEnd) 1301 { lpEnd=lpStart; 1302 while (*lpEnd) 1303 lpEnd++; 1304 } 1305 1306 for (--lpEnd;lpStart <= lpEnd; lpEnd--) 1307 if (*lpEnd==(char)wMatch) 1308 return (LPSTR)lpEnd; 1309 1310 return NULL; 1311 } 1312 /************************************************************************* 1313 * StrRChrW [SHELL32.320] 1312 1314 * 1313 1315 */ 1314 1316 LPWSTR WINAPI StrRChrW(LPWSTR lpStart, LPWSTR lpEnd, DWORD wMatch) 1315 { 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 } 1332 /************************************************************************* 1333 * StrFormatByteSize 1317 { LPWSTR wptr=NULL; 1318 TRACE("%s %s 0x%04x\n",debugstr_w(lpStart),debugstr_w(lpEnd), (WCHAR)wMatch ); 1319 1320 /* if the end not given, search*/ 1321 if (!lpEnd) 1322 { lpEnd=lpStart; 1323 while (*lpEnd) 1324 lpEnd++; 1325 } 1326 1327 do 1328 { if (*lpStart==(WCHAR)wMatch) 1329 wptr = lpStart; 1330 lpStart++; 1331 } while ( lpStart<=lpEnd ); 1332 return wptr; 1333 } 1334 /************************************************************************* 1335 * StrFormatByteSize [SHLWAPI] 1334 1336 */ 1335 1337 LPSTR WINAPI StrFormatByteSizeA ( DWORD dw, LPSTR pszBuf, UINT cchBuf ) 1336 { 1337 1338 1339 { sprintf (buf,"%3.1f bytes", (FLOAT)dw);1340 1341 1342 { sprintf (buf,"%3.1f KB", (FLOAT)dw/1024);1343 1344 1345 { sprintf (buf,"%3.1f MB", (FLOAT)dw/1048576L);1346 1347 1348 { sprintf (buf,"%3.1f GB", (FLOAT)dw/1073741824L);1349 1350 1351 return pszBuf; 1338 { char buf[64]; 1339 TRACE("%lx %p %i\n", dw, pszBuf, cchBuf); 1340 if ( dw<1024L ) 1341 { sprintf (buf,"%3.0f bytes", (FLOAT)dw); 1342 } 1343 else if ( dw<1048576L) 1344 { sprintf (buf,"%3.2f KB", (FLOAT)dw/1024); 1345 } 1346 else if ( dw < 1073741824L) 1347 { sprintf (buf,"%3.2f MB", (FLOAT)dw/1048576L); 1348 } 1349 else 1350 { sprintf (buf,"%3.2f GB", (FLOAT)dw/1073741824L); 1351 } 1352 lstrcpynA (pszBuf, buf, cchBuf); 1353 return pszBuf; 1352 1354 } 1353 1355 LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf ) 1354 { 1355 1356 1357 { sprintf (buf,"%3.1f bytes", (FLOAT)dw);1358 1359 1360 { sprintf (buf,"%3.1f KB", (FLOAT)dw/1024);1361 1362 1363 { sprintf (buf,"%3.1f MB", (FLOAT)dw/1048576L);1364 1365 1366 { sprintf (buf,"%3.1f GB", (FLOAT)dw/1073741824L);1367 1368 1369 return pszBuf; 1370 } 1371 /************************************************************************* 1372 * SHWaitForFileToOpen 1356 { char buf[64]; 1357 TRACE("%lx %p %i\n", dw, pszBuf, cchBuf); 1358 if ( dw<1024L ) 1359 { sprintf (buf,"%3.0f bytes", (FLOAT)dw); 1360 } 1361 else if ( dw<1048576L) 1362 { sprintf (buf,"%3.2f KB", (FLOAT)dw/1024); 1363 } 1364 else if ( dw < 1073741824L) 1365 { sprintf (buf,"%3.2f MB", (FLOAT)dw/1048576L); 1366 } 1367 else 1368 { sprintf (buf,"%3.2f GB", (FLOAT)dw/1073741824L); 1369 } 1370 lstrcpynAtoW (pszBuf, buf, cchBuf); 1371 return pszBuf; 1372 } 1373 /************************************************************************* 1374 * SHWaitForFileToOpen [SHELL32.97] 1373 1375 * 1374 1376 */ 1375 1377 HRESULT WINAPI SHWaitForFileToOpen(DWORD u, DWORD v, DWORD w) 1376 { 1377 1378 } 1379 /************************************************************************* 1380 * Control_FillCache_RunDLL 1378 { FIXME("0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w); 1379 return 0; 1380 } 1381 /************************************************************************* 1382 * Control_FillCache_RunDLL [SHELL32.8] 1381 1383 * 1382 1384 */ 1383 1385 HRESULT WINAPI Control_FillCache_RunDLL(HWND hWnd, HANDLE hModule, DWORD w, DWORD x) 1384 { 1385 1386 } 1387 /************************************************************************* 1388 * RunDLL_CallEntry16 1386 { FIXME("0x%04x 0x%04x 0x%04lx 0x%04lx stub\n",hWnd, hModule,w,x); 1387 return 0; 1388 } 1389 /************************************************************************* 1390 * RunDLL_CallEntry16 [SHELL32.122] 1389 1391 * the name is propably wrong 1390 1392 */ 1391 1393 HRESULT WINAPI RunDLL_CallEntry16(DWORD v, DWORD w, DWORD x, DWORD y, DWORD z) 1392 { 1393 1394 { FIXME("0x%04lx 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",v,w,x,y,z); 1395 return 0; 1394 1396 } 1395 1397 1396 1398 /************************************************************************ 1397 * shell32_654[SHELL32.654]1399 * shell32_654 [SHELL32.654] 1398 1400 * 1399 1401 * NOTES: first parameter seems to be a pointer (same as passed to WriteCabinetState) … … 1403 1405 */ 1404 1406 HRESULT WINAPI shell32_654 (DWORD x, DWORD y) 1405 { 1406 1407 { FIXME("0x%08lx 0x%08lx stub\n",x,y); 1408 return 0; 1407 1409 } 1408 1410 1409 1411 /************************************************************************ 1410 * RLBuildListOfPaths[SHELL32.146]1412 * RLBuildListOfPaths [SHELL32.146] 1411 1413 * 1412 1414 * NOTES … … 1414 1416 */ 1415 1417 DWORD WINAPI RLBuildListOfPaths (void) 1416 { 1417 1418 { FIXME("stub\n"); 1419 return 0; 1418 1420 } 1419 1421 /************************************************************************ 1420 * StrToOleStr[SHELL32.163]1422 * StrToOleStr [SHELL32.163] 1421 1423 * 1422 1424 */ 1423 1425 int WINAPI StrToOleStrA (LPWSTR lpWideCharStr, LPCSTR lpMultiByteString) 1424 1426 { 1425 1426 1427 1428 1427 TRACE("%p %p(%s)\n", 1428 lpWideCharStr, lpMultiByteString, lpMultiByteString); 1429 1430 return MultiByteToWideChar(0, 0, lpMultiByteString, -1, lpWideCharStr, MAX_PATH); 1429 1431 1430 1432 } 1431 1433 int WINAPI StrToOleStrW (LPWSTR lpWideCharStr, LPCWSTR lpWString) 1432 1434 { 1433 1434 1435 1436 1437 1438 1439 1435 TRACE("%p %p(%s)\n", 1436 lpWideCharStr, lpWString, debugstr_w(lpWString)); 1437 1438 if (lstrcpyW (lpWideCharStr, lpWString )) 1439 { return lstrlenW (lpWideCharStr); 1440 } 1441 return 0; 1440 1442 } 1441 1443 1442 1444 BOOL WINAPI StrToOleStrAW (LPWSTR lpWideCharStr, LPCVOID lpString) 1443 1445 { 1444 1445 1446 1446 if (VERSION_OsIsUnicode()) 1447 return StrToOleStrW (lpWideCharStr, (LPCWSTR)lpString); 1448 return StrToOleStrA (lpWideCharStr, (LPCSTR)lpString); 1447 1449 } 1448 1450 1449 1451 /************************************************************************ 1450 * SHValidateUNC[SHELL32.173]1452 * SHValidateUNC [SHELL32.173] 1451 1453 * 1452 1454 */ 1453 1455 HRESULT WINAPI SHValidateUNC (DWORD x, DWORD y, DWORD z) 1454 1456 { 1455 1456 1457 FIXME("0x%08lx 0x%08lx 0x%08lx stub\n",x,y,z); 1458 return 0; 1457 1459 } 1458 1460 1459 1461 /************************************************************************ 1460 * DoEnvironmentSubstW[SHELL32.53]1462 * DoEnvironmentSubstW [SHELL32.53] 1461 1463 * 1462 1464 */ 1463 1465 HRESULT WINAPI DoEnvironmentSubstA(LPSTR x, LPSTR y) 1464 1466 { 1465 1466 1467 FIXME("%p(%s) %p(%s) stub\n", x, x, y, y); 1468 return 0; 1467 1469 } 1468 1470 1469 1471 HRESULT WINAPI DoEnvironmentSubstW(LPWSTR x, LPWSTR y) 1470 1472 { 1471 1472 1473 FIXME("%p(%s) %p(%s) stub\n", x, debugstr_w(x), y, debugstr_w(y)); 1474 return 0; 1473 1475 } 1474 1476 1475 1477 HRESULT WINAPI DoEnvironmentSubstAW(LPVOID x, LPVOID y) 1476 1478 { 1477 1478 1479 1479 if (VERSION_OsIsUnicode()) 1480 return DoEnvironmentSubstW((LPWSTR)x, (LPWSTR)y); 1481 return DoEnvironmentSubstA((LPSTR)x, (LPSTR)y); 1480 1482 } 1481 1483 -
trunk/src/shell32/shellpath.cpp
r3193 r3243 1 /* $Id: shellpath.cpp,v 1. 6 2000-03-22 16:55:51cbratschi Exp $ */1 /* $Id: shellpath.cpp,v 1.7 2000-03-26 16:34:52 cbratschi Exp $ */ 2 2 3 3 /* … … 12 12 * Many of this functions are in SHLWAPI.DLL also 13 13 * 14 * Corel WINE 20000324 level (without CRTDLL_* calls) 14 15 */ 15 16 … … 47 48 ODINDEBUGCHANNEL(SHELL32-SHELLPATH) 48 49 50 /* Supported protocols for PathIsURL */ 51 LPSTR SupportedProtocol[] = {"http","https","ftp","gopher","file","mailto",""}; 49 52 50 53 /************************************************************************* … … 56 59 if (*(x+1)==':' && *(x+2)=='\\') /* "X:\" */ 57 60 return 1; 58 if (*x=='\\' ) /* "\" */59 return 0;61 if (*x=='\\' || *x=='/') /* "\" */ 62 return 1; 60 63 if (x[0]=='\\' && x[1]=='\\') /* UNC "\\<xx>\" */ 61 64 { int foundbackslash = 0; … … 75 78 if (*(x+1)==':' && *(x+2)=='\\') /* "X:\" */ 76 79 return 1; 77 if (*x == (WCHAR) '\\' ) /* "\" */78 return 0;80 if (*x == (WCHAR) '\\' || *x == (WCHAR) '/') /* "\" */ 81 return 1; 79 82 if (x[0]==(WCHAR)'\\' && x[1]==(WCHAR)'\\') /* UNC "\\<xx>\" */ 80 83 { int foundbackslash = 0; … … 817 820 ODINFUNCTION1(HRESULT, PathGetDriveNumberW, 818 821 LPWSTR, u) 819 { 822 { FIXME("%s stub\n",debugstr_a(u)); 820 823 return 0; 821 824 } … … 965 968 FIXME("%p(%s) %p 0x%04lx 0x%04lx stub\n", 966 969 lpCommand, lpCommand, v, w,x ); 970 lstrcpyA(v,lpCommand); 967 971 return 0; 968 972 } … … 1085 1089 hRootKey = HKEY_CURRENT_USER; 1086 1090 strcpy(szValueName, "Programs"); 1087 strcpy(szDefaultPath, "Sta trMenu\\Programs");1091 strcpy(szDefaultPath, "StartMenu\\Programs"); 1088 1092 break; 1089 1093 … … 1239 1243 } 1240 1244 1245 /* 1246 shlwapi functions that have found their way in because most of 1247 shlwapi is unimplemented and doesn't have a home. 1248 1249 FIXME: move to a more appropriate file( when one exists ) 1250 */ 1251 1252 /* SHGetValue: Gets a value from the registry */ 1253 1254 1255 BOOL WINAPI PathIsURLA(LPCSTR lpstrPath) 1256 { 1257 LPSTR lpstrRes; 1258 char lpstrFileType[10] = ""; 1259 int iSize; 1260 int i = 0; 1261 /* sanity check */ 1262 if(!lpstrPath) 1263 return FALSE; 1264 1265 /* get protocol */ 1266 /* protocol://location */ 1267 if(!(lpstrRes = strchr(lpstrPath,':'))) 1268 { 1269 return FALSE; 1270 } 1271 iSize = lpstrRes - lpstrPath; 1272 if(iSize > sizeof(lpstrFileType)) 1273 return FALSE; 1274 1275 strncpy(lpstrFileType,lpstrPath,iSize); 1276 1277 while(strlen(SupportedProtocol[i])) 1278 { 1279 if(!stricmp(lpstrFileType,SupportedProtocol[i++])) 1280 return TRUE; 1281 } 1282 1283 return FALSE; 1284 } 1285 1286 DWORD WINAPI SHGetValueA( 1287 HKEY hkey, 1288 LPCSTR pSubKey, 1289 LPCSTR pValue, 1290 LPDWORD pwType, 1291 LPVOID pvData, 1292 LPDWORD pbData 1293 ) 1294 { 1295 FIXME("(%p),stub!\n", pSubKey); 1296 1297 return ERROR_SUCCESS; /* return success */ 1298 } 1299 1300 DWORD WINAPI SHGetValueW( 1301 HKEY hkey, 1302 LPCWSTR pSubKey, 1303 LPCWSTR pValue, 1304 LPDWORD pwType, 1305 LPVOID pvData, 1306 LPDWORD pbData 1307 ) 1308 { 1309 FIXME("(%p),stub!\n", pSubKey); 1310 1311 return ERROR_SUCCESS; /* return success */ 1312 } 1313 1314 /* gets a user-specific registry value. */ 1315 1316 LONG WINAPI SHRegGetUSValueA( 1317 LPCSTR pSubKey, 1318 LPCSTR pValue, 1319 LPDWORD pwType, 1320 LPVOID pvData, 1321 LPDWORD pbData, 1322 BOOL fIgnoreHKCU, 1323 LPVOID pDefaultData, 1324 DWORD wDefaultDataSize 1325 ) 1326 { 1327 FIXME("(%p),stub!\n", pSubKey); 1328 1329 return ERROR_SUCCESS; /* return success */ 1330 } 1331 1332 LONG WINAPI SHRegGetUSValueW( 1333 LPCWSTR pSubKey, 1334 LPCWSTR pValue, 1335 LPDWORD pwType, 1336 LPVOID pvData, 1337 LPDWORD pbData, 1338 BOOL flagIgnoreHKCU, 1339 LPVOID pDefaultData, 1340 DWORD wDefaultDataSize 1341 ) 1342 { 1343 FIXME("(%p),stub!\n", pSubKey); 1344 1345 return ERROR_SUCCESS; /* return success */ 1346 } 1347 -
trunk/src/shell32/shlfolder.cpp
r3217 r3243 1 /* $Id: shlfolder.cpp,v 1. 8 2000-03-24 17:17:27cbratschi Exp $ */1 /* $Id: shlfolder.cpp,v 1.9 2000-03-26 16:34:52 cbratschi Exp $ */ 2 2 /* 3 3 * Shell Folder stuff … … 8 8 * IShellFolder2 and related interfaces 9 9 * 10 * Corel WINE 20000324 level 10 11 */ 11 12 … … 36 37 DEFAULT_DEBUG_CHANNEL(shell) 37 38 38 #define MEM_DEBUG 1 39 /*************************************************************************** 40 * debughelper: print out the return adress 41 * helps especially to track down unbalanced AddRef/Release 42 */ 43 #define MEM_DEBUG 0 44 45 #if MEM_DEBUG 46 #define _CALL_TRACE TRACE("called from: 0x%08x\n", *( ((UINT*)&iface)-1 )); 47 #else 48 #define _CALL_TRACE 49 #endif 39 50 40 51 typedef struct … … 96 107 HRESULT hr = E_OUTOFMEMORY; 97 108 LPITEMIDLIST pidlOut, pidlTemp = NULL; 98 IShellFolder *psfChild ;109 IShellFolder *psfChild = NULL; 99 110 100 111 TRACE("(%p %p %s)\n",psf, pidlInOut? *pidlInOut: NULL, debugstr_w(szNext)); … … 103 114 /* get the shellfolder for the child pidl and let it analyse further */ 104 115 hr = IShellFolder_BindToObject(psf, *pidlInOut, NULL, &IID_IShellFolder, (LPVOID*)&psfChild); 105 116 dprintf(("C 1")); 106 117 if (psfChild) 107 { 118 { dprintf(("C 1a %d",psfChild/*,(psfChild)->fnParseDisplayName()*/)); 108 119 hr = IShellFolder_ParseDisplayName(psfChild, hwndOwner, NULL, szNext, pEaten, &pidlOut, pdwAttributes); 120 dprintf(("C 1b")); 109 121 IShellFolder_Release(psfChild); 110 122 dprintf(("C 2")); 111 123 pidlTemp = ILCombine(*pidlInOut, pidlOut); 112 124 dprintf(("C 3")); 113 125 if (pidlOut) 114 126 ILFree(pidlOut); 115 127 } 116 128 dprintf(("C 4")); 117 129 ILFree(*pidlInOut); 118 130 *pidlInOut = pidlTemp; … … 207 219 typedef struct 208 220 { 209 ICOM_VTABLE(I ShellFolder2)* lpvtbl;221 ICOM_VTABLE(IUnknown)* lpVtbl; 210 222 DWORD ref; 211 223 224 ICOM_VTABLE(IShellFolder2)* lpvtblShellFolder; 212 225 ICOM_VTABLE(IPersistFolder)* lpvtblPersistFolder; 213 226 ICOM_VTABLE(IDropTarget)* lpvtblDropTarget; 227 228 IUnknown *pUnkOuter; /* used for aggregation */ 214 229 215 230 CLSID* pclsid; … … 222 237 } IGenericSFImpl; 223 238 239 extern struct ICOM_VTABLE(IUnknown) unkvt; 224 240 extern struct ICOM_VTABLE(IShellFolder2) sfvt; 225 241 extern struct ICOM_VTABLE(IPersistFolder) psfvt; 226 extern struct ICOM_VTABLE(IDropTarget) dt 2vt;242 extern struct ICOM_VTABLE(IDropTarget) dtvt; 227 243 228 244 static IShellFolder * ISF_MyComputer_Constructor(void); 245 246 #define _IShellFolder2_Offset ((int)(&(((IGenericSFImpl*)0)->lpvtblShellFolder))) 247 #define _ICOM_THIS_From_IShellFolder2(class, name) class* This = (class*)(((char*)name)-_IShellFolder2_Offset); 229 248 230 249 #define _IPersistFolder_Offset ((int)(&(((IGenericSFImpl*)0)->lpvtblPersistFolder))) … … 233 252 #define _IDropTarget_Offset ((int)(&(((IGenericSFImpl*)0)->lpvtblDropTarget))) 234 253 #define _ICOM_THIS_From_IDropTarget(class, name) class* This = (class*)(((char*)name)-_IDropTarget_Offset); 254 255 /* 256 converts This to a interface pointer 257 */ 258 #define _IUnknown_(This) (IUnknown*)&(This->lpVtbl) 259 #define _IShellFolder_(This) (IShellFolder*)&(This->lpvtblShellFolder) 260 #define _IShellFolder2_(This) (IShellFolder2*)&(This->lpvtblShellFolder) 261 #define _IPersist_(This) (IPersist*)&(This->lpvtblPersistFolder) 262 #define _IPersistFolder_(This) (IPersistFolder*)&(This->lpvtblPersistFolder) 263 #define _IDropTarget_(This) (IDropTarget*)&(This->lpvtblDropTarget) 264 265 /************************************************************************** 266 * registers clipboardformat once 267 */ 268 static void SF_RegisterClipFmt (IGenericSFImpl * This) 269 { 270 TRACE("(%p)\n", This); 271 272 if (!This->cfShellIDList) 273 { 274 This->cfShellIDList = RegisterClipboardFormatA(CFSTR_SHELLIDLIST); 275 } 276 } 277 278 /************************************************************************** 279 * we need a seperate IUnknown to handle aggregation 280 * (inner IUnknown) 281 */ 282 static HRESULT WINAPI IUnknown_fnQueryInterface( 283 IUnknown * iface, 284 REFIID riid, 285 LPVOID *ppvObj) 286 { 287 ICOM_THIS(IGenericSFImpl, iface); 288 289 char xriid[50]; 290 WINE_StringFromCLSID((LPCLSID)riid,xriid); 291 292 _CALL_TRACE 293 TRACE("(%p)->(\n\tIID:\t%s,%p)\n",This,xriid,ppvObj); 294 295 *ppvObj = NULL; 296 297 if(IsEqualIID(riid, &IID_IUnknown)) *ppvObj = _IUnknown_(This); 298 else if(IsEqualIID(riid, &IID_IShellFolder)) *ppvObj = _IShellFolder_(This); 299 else if(IsEqualIID(riid, &IID_IShellFolder2)) *ppvObj = _IShellFolder_(This); 300 else if(IsEqualIID(riid, &IID_IPersist)) *ppvObj = _IPersist_(This); 301 else if(IsEqualIID(riid, &IID_IPersistFolder)) *ppvObj = _IPersistFolder_(This); 302 else if(IsEqualIID(riid, &IID_IDropTarget)) 303 { 304 *ppvObj = _IDropTarget_(This); 305 SF_RegisterClipFmt(This); 306 } 307 308 if(*ppvObj) 309 { 310 IUnknown_AddRef((IUnknown*)(*ppvObj)); 311 TRACE("-- Interface = %p\n", *ppvObj); 312 return S_OK; 313 } 314 TRACE("-- Interface: E_NOINTERFACE\n"); 315 return E_NOINTERFACE; 316 } 317 318 static ULONG WINAPI IUnknown_fnAddRef(IUnknown * iface) 319 { 320 ICOM_THIS(IGenericSFImpl, iface); 321 322 _CALL_TRACE 323 TRACE("(%p)->(count=%lu)\n",This,This->ref); 324 325 shell32_ObjCount++; 326 return ++(This->ref); 327 } 328 329 static ULONG WINAPI IUnknown_fnRelease(IUnknown * iface) 330 { 331 ICOM_THIS(IGenericSFImpl, iface); 332 333 _CALL_TRACE 334 TRACE("(%p)->(count=%lu)\n",This,This->ref); 335 336 shell32_ObjCount--; 337 if (!--(This->ref)) 338 { 339 TRACE("-- destroying IShellFolder(%p)\n",This); 340 341 if (pdesktopfolder == _IShellFolder_(This)) 342 { 343 pdesktopfolder=NULL; 344 TRACE("-- destroyed IShellFolder(%p) was Desktopfolder\n",This); 345 } 346 if(This->absPidl) SHFree(This->absPidl); 347 if(This->sMyPath) SHFree(This->sMyPath); 348 HeapFree(GetProcessHeap(),0,This); 349 return 0; 350 } 351 return This->ref; 352 } 353 354 struct ICOM_VTABLE(IUnknown) unkvt = 355 { 356 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 357 IUnknown_fnQueryInterface, 358 IUnknown_fnAddRef, 359 IUnknown_fnRelease, 360 }; 235 361 236 362 static shvheader GenericSFHeader [] = … … 245 371 246 372 /************************************************************************** 247 * registers clipboardformat once 248 */ 249 static void SF_RegisterClipFmt (IShellFolder2 * iface) 250 { 251 ICOM_THIS(IGenericSFImpl, iface); 252 253 TRACE("(%p)\n", This); 254 255 if (!This->cfShellIDList) 256 { 257 This->cfShellIDList = RegisterClipboardFormatA(CFSTR_SHELLIDLIST); 258 } 373 * IShellFolder_Constructor 374 * 375 * NOTES 376 * creating undocumented ShellFS_Folder as part of an aggregation 377 * {F3364BA0-65B9-11CE-A9BA-00AA004AE837} 378 * 379 * FIXME 380 * when pUnkOuter = 0 then rrid = IID_IShellFolder is returned 381 */ 382 HRESULT IFSFolder_Constructor( 383 IUnknown * pUnkOuter, 384 REFIID riid, 385 LPVOID * ppv) 386 { 387 IGenericSFImpl * sf; 388 char xriid[50]; 389 HRESULT hr = S_OK; 390 WINE_StringFromCLSID((LPCLSID)riid,xriid); 391 392 TRACE("unkOut=%p riid=%s\n",pUnkOuter, xriid); 393 394 if(pUnkOuter && ! IsEqualIID(riid, &IID_IUnknown)) 395 { 396 hr = CLASS_E_NOAGGREGATION; /* forbidden by definition */ 397 } 398 else 399 { 400 sf=(IGenericSFImpl*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IGenericSFImpl)); 401 if (sf) 402 { 403 sf->ref=1; 404 ICOM_VTBL(sf)=&unkvt; 405 sf->lpvtblShellFolder=&sfvt; 406 sf->lpvtblPersistFolder=&psfvt; 407 sf->lpvtblDropTarget=&dtvt; 408 sf->pclsid = (CLSID*)&CLSID_SFFile; 409 sf->pUnkOuter = pUnkOuter ? pUnkOuter : _IUnknown_(sf); 410 *ppv = _IUnknown_(sf); 411 hr = S_OK; 412 shell32_ObjCount++; 413 } 414 else 415 { 416 hr = E_OUTOFMEMORY; 417 } 418 } 419 return hr; 259 420 } 260 421 … … 262 423 * IShellFolder_Constructor 263 424 * 425 * NOTES 426 * THIS points to the parent folder 264 427 */ 265 428 266 429 static IShellFolder * IShellFolder_Constructor( 267 IShellFolder * psf,430 IShellFolder2 * iface, 268 431 LPITEMIDLIST pidl) 269 432 { 270 433 IGenericSFImpl * sf; 271 IGenericSFImpl * sfParent = (IGenericSFImpl*) psf;272 434 DWORD dwSize=0; 435 436 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 273 437 274 438 sf=(IGenericSFImpl*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IGenericSFImpl)); 275 439 sf->ref=1; 276 440 277 sf->lpvtbl=&sfvt; 441 ICOM_VTBL(sf)=&unkvt; 442 sf->lpvtblShellFolder=&sfvt; 278 443 sf->lpvtblPersistFolder=&psfvt; 279 sf->lpvtblDropTarget=&dt 2vt;444 sf->lpvtblDropTarget=&dtvt; 280 445 sf->pclsid = (CLSID*)&CLSID_SFFile; 281 sf->cfShellIDList=0; 282 sf->fAcceptFmt=FALSE; 283 284 TRACE("(%p)->(parent=%p, pidl=%p)\n",sf,sfParent, pidl); 446 sf->pUnkOuter = _IUnknown_(sf); 447 448 TRACE("(%p)->(parent=%p, pidl=%p)\n",sf,This, pidl); 285 449 pdump(pidl); 286 450 287 if(pidl ) /* do we have a pidl? */451 if(pidl && iface) /* do we have a pidl? */ 288 452 { 289 453 int len; 290 454 291 sf->absPidl = ILCombine( sfParent->absPidl, pidl); /* build a absolute pidl */455 sf->absPidl = ILCombine(This->absPidl, pidl); /* build a absolute pidl */ 292 456 293 457 if (!_ILIsSpecialFolder(pidl)) /* only file system paths */ 294 458 { 295 if( sfParent->sMyPath) /* get the size of the parents path */459 if(This->sMyPath) /* get the size of the parents path */ 296 460 { 297 dwSize += strlen( sfParent->sMyPath) ;298 TRACE("-- (%p)->(parent's path=%s)\n",sf, debugstr_a( sfParent->sMyPath));461 dwSize += strlen(This->sMyPath) ; 462 TRACE("-- (%p)->(parent's path=%s)\n",sf, debugstr_a(This->sMyPath)); 299 463 } 300 464 … … 305 469 *(sf->sMyPath)=0x00; 306 470 307 if( sfParent->sMyPath) /* if the parent has a path, get it*/471 if(This->sMyPath) /* if the parent has a path, get it*/ 308 472 { 309 strcpy(sf->sMyPath, sfParent->sMyPath);473 strcpy(sf->sMyPath, This->sMyPath); 310 474 PathAddBackslashA (sf->sMyPath); 311 475 } … … 321 485 322 486 shell32_ObjCount++; 323 return (IShellFolder *)sf;487 return _IShellFolder_(sf); 324 488 } 325 489 /************************************************************************** … … 335 499 LPVOID *ppvObj) 336 500 { 337 ICOM_THIS(IGenericSFImpl, iface); 338 339 char xriid[50]; 340 WINE_StringFromCLSID((LPCLSID)riid,xriid); 341 TRACE("(%p)->(\n\tIID:\t%s,%p)\n",This,xriid,ppvObj); 342 343 *ppvObj = NULL; 344 345 if(IsEqualIID(riid, &IID_IUnknown)) 346 { *ppvObj = This; 347 } 348 else if(IsEqualIID(riid, &IID_IShellFolder)) 349 { 350 *ppvObj = (IShellFolder*)This; 351 } 352 else if(IsEqualIID(riid, &IID_IShellFolder2)) 353 { 354 *ppvObj = (IShellFolder2*)This; 355 } 356 else if(IsEqualIID(riid, &IID_IPersist)) 357 { 358 *ppvObj = (IPersistFolder*)&(This->lpvtblPersistFolder); 359 } 360 else if(IsEqualIID(riid, &IID_IPersistFolder)) 361 { 362 *ppvObj = (IPersistFolder*)&(This->lpvtblPersistFolder); 363 } 364 else if(IsEqualIID(riid, &IID_IDropTarget)) 365 { 366 *ppvObj = (IDropTarget*)&(This->lpvtblDropTarget); 367 SF_RegisterClipFmt((IShellFolder2*)This); 368 } 369 370 if(*ppvObj) 371 { 372 IUnknown_AddRef((IUnknown*)(*ppvObj)); 373 TRACE("-- Interface = %p\n", *ppvObj); 374 return S_OK; 375 } 376 TRACE("-- Interface: E_NOINTERFACE\n"); 377 return E_NOINTERFACE; 501 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 502 503 char xriid[50]; 504 WINE_StringFromCLSID((LPCLSID)riid,xriid); 505 _CALL_TRACE 506 TRACE("(%p)->(\n\tIID:\t%s,%p)\n",This,xriid,ppvObj); 507 508 return IUnknown_QueryInterface(This->pUnkOuter, riid, ppvObj); 378 509 } 379 510 … … 384 515 static ULONG WINAPI IShellFolder_fnAddRef(IShellFolder2 * iface) 385 516 { 386 ICOM_THIS(IGenericSFImpl, iface); 387 388 #ifdef MEM_DEBUG 389 TRACE("called from: 0x%08x\n", *( ((UINT*)&iface)-1 )); 390 #endif 391 TRACE("(%p)->(count=%lu)\n",This,This->ref); 392 393 shell32_ObjCount++; 394 return ++(This->ref); 517 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 518 519 _CALL_TRACE 520 TRACE("(%p)->(count=%lu)\n",This,This->ref); 521 522 return IUnknown_AddRef(This->pUnkOuter); 395 523 } 396 524 … … 400 528 static ULONG WINAPI IShellFolder_fnRelease(IShellFolder2 * iface) 401 529 { 402 ICOM_THIS(IGenericSFImpl, iface); 403 404 #ifdef MEM_DEBUG 405 TRACE("called from: 0x%08x\n", *( ((UINT*)&iface)-1 )); 406 #endif 407 TRACE("(%p)->(count=%lu)\n",This,This->ref); 408 409 shell32_ObjCount--; 410 if (!--(This->ref)) 411 { TRACE("-- destroying IShellFolder(%p)\n",This); 412 413 if (pdesktopfolder == (IShellFolder*)iface) 414 { pdesktopfolder=NULL; 415 TRACE("-- destroyed IShellFolder(%p) was Desktopfolder\n",This); 416 } 417 if(This->absPidl) 418 { SHFree(This->absPidl); 419 } 420 if(This->sMyPath) 421 { SHFree(This->sMyPath); 422 } 423 424 HeapFree(GetProcessHeap(),0,This); 425 426 return 0; 427 } 428 return This->ref; 530 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 531 532 _CALL_TRACE 533 TRACE("(%p)->(count=%lu)\n",This,This->ref); 534 535 return IUnknown_Release(This->pUnkOuter); 429 536 } 430 537 /************************************************************************** … … 459 566 DWORD *pdwAttributes) 460 567 { 461 ICOM_THIS(IGenericSFImpl, iface);568 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 462 569 463 570 HRESULT hr = E_OUTOFMEMORY; … … 494 601 if (szNext && *szNext) 495 602 { 496 hr = SHELL32_ParseNextElement(hwndOwner, (IShellFolder2*)This, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes);603 hr = SHELL32_ParseNextElement(hwndOwner, iface, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes); 497 604 } 498 605 else … … 523 630 LPENUMIDLIST* ppEnumIDList) 524 631 { 525 ICOM_THIS(IGenericSFImpl, iface); 526 527 TRACE("(%p)->(HWND=0x%08x flags=0x%08lx pplist=%p)\n",This,hwndOwner,dwFlags,ppEnumIDList); 528 529 *ppEnumIDList = NULL; 530 *ppEnumIDList = IEnumIDList_Constructor (This->sMyPath, dwFlags, EIDL_FILE); 531 532 TRACE("-- (%p)->(new ID List: %p)\n",This,*ppEnumIDList); 533 534 if(!*ppEnumIDList) return E_OUTOFMEMORY; 535 536 return S_OK; 632 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 633 634 TRACE("(%p)->(HWND=0x%08x flags=0x%08lx pplist=%p)\n",This,hwndOwner,dwFlags,ppEnumIDList); 635 636 *ppEnumIDList = NULL; 637 638 if (This->sMyPath) 639 *ppEnumIDList = IEnumIDList_Constructor (This->sMyPath, dwFlags, EIDL_FILE); 640 else 641 { 642 /* if This->sMyPath is NULL, we will start enumerating objects 643 at MyComputer level */ 644 *ppEnumIDList = IEnumIDList_Constructor (NULL, dwFlags, EIDL_MYCOMP); 645 } 646 647 648 TRACE("-- (%p)->(new ID List: %p)\n",This,*ppEnumIDList); 649 650 if(!*ppEnumIDList) return E_OUTOFMEMORY; 651 652 return S_OK; 537 653 } 538 654 … … 548 664 LPBC pbcReserved, REFIID riid, LPVOID * ppvOut) 549 665 { 550 ICOM_THIS(IGenericSFImpl, iface);666 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 551 667 GUID const * iid; 552 668 char xriid[50]; … … 559 675 TRACE("(%p)->(pidl=%p,%p,\n\tIID:\t%s,%p)\n",This,pidl,pbcReserved,xriid,ppvOut); 560 676 561 if(!p idl || !ppvOut) return E_INVALIDARG;677 if(!ppvOut) return E_INVALIDARG; 562 678 563 679 *ppvOut = NULL; 680 681 if (!pidl) return E_INVALIDARG; 564 682 565 683 iid = _ILGetGUIDPointer(pidl); … … 583 701 { 584 702 LPITEMIDLIST pidltemp = ILCloneFirst(pidl); 585 pShellFolder = IShellFolder_Constructor( (IShellFolder*)This, pidltemp);703 pShellFolder = IShellFolder_Constructor(iface, pidltemp); 586 704 ILFree(pidltemp); 587 705 } … … 618 736 LPVOID *ppvOut) 619 737 { 620 ICOM_THIS(IGenericSFImpl, iface);738 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 621 739 622 740 char xriid[50]; … … 651 769 LPCITEMIDLIST pidl2) 652 770 { 653 ICOM_THIS(IGenericSFImpl, iface);771 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 654 772 655 773 CHAR szTemp1[MAX_PATH]; … … 706 824 pidl2 = ILGetNext(pidl2); 707 825 708 hr = IShellFolder_BindToObject( (IShellFolder*)This, pidlTemp, NULL, &IID_IShellFolder, (LPVOID*)&psf);826 hr = IShellFolder_BindToObject(iface, pidlTemp, NULL, &IID_IShellFolder, (LPVOID*)&psf); 709 827 if (SUCCEEDED(hr)) 710 828 { … … 737 855 HWND hwndOwner, REFIID riid, LPVOID *ppvOut) 738 856 { 739 ICOM_THIS(IGenericSFImpl, iface);857 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 740 858 741 859 LPSHELLVIEW pShellView; … … 752 870 if(IsEqualIID(riid, &IID_IDropTarget)) 753 871 { 754 hr = IShellFolder_QueryInterface( (IShellFolder*)This, &IID_IDropTarget, ppvOut);872 hr = IShellFolder_QueryInterface(iface, &IID_IDropTarget, ppvOut); 755 873 } 756 874 else if(IsEqualIID(riid, &IID_IContextMenu)) … … 761 879 else if(IsEqualIID(riid, &IID_IShellView)) 762 880 { 763 pShellView = IShellView_Constructor((IShellFolder *) This);881 pShellView = IShellView_Constructor((IShellFolder*)iface); 764 882 if(pShellView) 765 883 { … … 784 902 static HRESULT WINAPI IShellFolder_fnGetAttributesOf(IShellFolder2 * iface,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgfInOut) 785 903 { 786 ICOM_THIS(IGenericSFImpl, iface);904 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 787 905 788 906 HRESULT hr = S_OK; 789 907 790 908 TRACE("(%p)->(cidl=%d apidl=%p mask=0x%08lx)\n",This,cidl,apidl,*rgfInOut); 909 910 if( !cidl && !apidl && rgfInOut ) 911 { // return default 912 *rgfInOut = SFGAO_CAPABILITYMASK|SFGAO_FILESYSTEM; 913 return hr; 914 } 915 791 916 792 917 if ( (!cidl) || (!apidl) || (!rgfInOut)) … … 846 971 LPVOID * ppvOut) 847 972 { 848 ICOM_THIS(IGenericSFImpl, iface);973 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 849 974 850 975 char xclsid[50]; … … 864 989 if(IsEqualIID(riid, &IID_IContextMenu) && (cidl >= 1)) 865 990 { 866 pObj = (LPUNKNOWN)IContextMenu_Constructor((IShellFolder *) This, This->absPidl, apidl, cidl);991 pObj = (LPUNKNOWN)IContextMenu_Constructor((IShellFolder *)iface, This->absPidl, apidl, cidl); 867 992 hr = S_OK; 868 993 } … … 881 1006 else if (IsEqualIID(riid, &IID_IDropTarget) && (cidl >= 1)) 882 1007 { 883 hr = IShellFolder_QueryInterface( (IShellFolder*)This, &IID_IDropTarget, (LPVOID*)&pObj);1008 hr = IShellFolder_QueryInterface(iface, &IID_IDropTarget, (LPVOID*)&pObj); 884 1009 } 885 1010 else … … 918 1043 LPSTRRET strRet) 919 1044 { 920 ICOM_THIS(IGenericSFImpl, iface);1045 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 921 1046 922 1047 CHAR szPath[MAX_PATH]= ""; … … 955 1080 len = strlen(szPath); 956 1081 957 if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild( (IShellFolder2*)This, pidl, dwFlags, szPath + len, MAX_PATH - len)))1082 if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild(iface, pidl, dwFlags, szPath + len, MAX_PATH - len))) 958 1083 return E_OUTOFMEMORY; 959 1084 } … … 985 1110 LPITEMIDLIST *pPidlOut) 986 1111 { 987 ICOM_THIS(IGenericSFImpl, iface);1112 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 988 1113 989 1114 FIXME("(%p)->(%u,pidl=%p,%s,%lu,%p),stub!\n", … … 998 1123 static HRESULT WINAPI IShellFolder_fnGetFolderPath(IShellFolder2 * iface, LPSTR lpszOut, DWORD dwOutSize) 999 1124 { 1000 ICOM_THIS(IGenericSFImpl, iface);1125 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1001 1126 1002 1127 TRACE("(%p)->(%p %lu)\n",This, lpszOut, dwOutSize); … … 1018 1143 GUID *pguid) 1019 1144 { 1020 ICOM_THIS(IGenericSFImpl, iface);1021 TRACE("(%p)\n",This);1145 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1146 FIXME("(%p)\n",This); 1022 1147 return E_NOTIMPL; 1023 1148 } … … 1026 1151 IEnumExtraSearch **ppenum) 1027 1152 { 1028 ICOM_THIS(IGenericSFImpl, iface);1029 TRACE("(%p)\n",This);1153 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1154 FIXME("(%p)\n",This); 1030 1155 return E_NOTIMPL; 1031 1156 } … … 1036 1161 ULONG *pDisplay) 1037 1162 { 1038 ICOM_THIS(IGenericSFImpl, iface);1163 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1039 1164 1040 1165 TRACE("(%p)\n",This); … … 1050 1175 DWORD *pcsFlags) 1051 1176 { 1052 ICOM_THIS(IGenericSFImpl, iface);1177 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1053 1178 1054 1179 TRACE("(%p)\n",This); … … 1066 1191 VARIANT *pv) 1067 1192 { 1068 ICOM_THIS(IGenericSFImpl, iface);1069 TRACE("(%p)\n",This);1193 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1194 FIXME("(%p)\n",This); 1070 1195 return E_NOTIMPL; 1071 1196 } … … 1076 1201 SHELLDETAILS *psd) 1077 1202 { 1078 ICOM_THIS(IGenericSFImpl, iface);1203 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1079 1204 HRESULT hr = E_FAIL; 1080 1205 … … 1110 1235 break; 1111 1236 case 4: /* attributes */ 1112 _ILGet AttributeStr(pidl, psd->str.u.cStr, MAX_PATH);1237 _ILGetFileAttributes(pidl, psd->str.u.cStr, MAX_PATH); 1113 1238 break; 1114 1239 } … … 1124 1249 SHCOLUMNID *pscid) 1125 1250 { 1126 ICOM_THIS(IGenericSFImpl, iface);1127 TRACE("(%p)\n",This);1251 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1252 FIXME("(%p)\n",This); 1128 1253 return E_NOTIMPL; 1129 1254 } … … 1183 1308 sf=(IGenericSFImpl*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IGenericSFImpl)); 1184 1309 sf->ref=1; 1185 sf->lpvtbl=&sfdvt; 1310 ICOM_VTBL(sf)=&unkvt; 1311 sf->lpvtblShellFolder=&sfdvt; 1186 1312 sf->absPidl=_ILCreateDesktop(); /* my qualified pidl */ 1313 sf->pUnkOuter = (IUnknown *) &sf->lpVtbl; 1187 1314 1188 1315 TRACE("(%p)\n",sf); 1189 1316 1190 1317 shell32_ObjCount++; 1191 return (IShellFolder *)sf;1318 return _IShellFolder_(sf); 1192 1319 } 1193 1320 … … 1202 1329 LPVOID *ppvObj) 1203 1330 { 1204 ICOM_THIS(IGenericSFImpl, iface); 1205 1206 char xriid[50]; 1207 WINE_StringFromCLSID((LPCLSID)riid,xriid); 1208 TRACE("(%p)->(\n\tIID:\t%s,%p)\n",This,xriid,ppvObj); 1209 1210 *ppvObj = NULL; 1211 1212 if(IsEqualIID(riid, &IID_IUnknown)) /*IUnknown*/ 1213 { *ppvObj = This; 1214 } 1215 else if(IsEqualIID(riid, &IID_IShellFolder)) /*IShellFolder*/ 1216 { *ppvObj = (IShellFolder*)This; 1217 } 1218 else if(IsEqualIID(riid, &IID_IShellFolder2)) /*IShellFolder2*/ 1219 { *ppvObj = (IShellFolder2*)This; 1220 } 1221 1222 if(*ppvObj) 1223 { 1224 IUnknown_AddRef((IUnknown*)(*ppvObj)); 1225 TRACE("-- Interface: (%p)->(%p)\n",ppvObj,*ppvObj); 1226 return S_OK; 1227 } 1228 TRACE("-- Interface: E_NOINTERFACE\n"); 1229 return E_NOINTERFACE; 1331 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1332 1333 char xriid[50]; 1334 WINE_StringFromCLSID((LPCLSID)riid,xriid); 1335 TRACE("(%p)->(\n\tIID:\t%s,%p)\n",This,xriid,ppvObj); 1336 1337 *ppvObj = NULL; 1338 1339 if(IsEqualIID(riid, &IID_IUnknown)) /*IUnknown*/ 1340 { 1341 *ppvObj = _IUnknown_(This); 1342 } 1343 else if(IsEqualIID(riid, &IID_IShellFolder)) /*IShellFolder*/ 1344 { 1345 *ppvObj = _IShellFolder_(This); 1346 } 1347 else if(IsEqualIID(riid, &IID_IShellFolder2)) /*IShellFolder2*/ 1348 { 1349 *ppvObj = _IShellFolder_(This); 1350 } 1351 1352 if(*ppvObj) 1353 { 1354 IUnknown_AddRef((IUnknown*)(*ppvObj)); 1355 TRACE("-- Interface: (%p)->(%p)\n",ppvObj,*ppvObj); 1356 return S_OK; 1357 } 1358 TRACE("-- Interface: E_NOINTERFACE\n"); 1359 return E_NOINTERFACE; 1230 1360 } 1231 1361 … … 1246 1376 DWORD *pdwAttributes) 1247 1377 { 1248 ICOM_THIS(IGenericSFImpl, iface);1378 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1249 1379 1250 1380 LPCWSTR szNext=NULL; … … 1265 1395 if (szNext && *szNext) 1266 1396 { 1267 hr = SHELL32_ParseNextElement(hwndOwner, (IShellFolder2*)This, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes);1397 hr = SHELL32_ParseNextElement(hwndOwner,iface, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes); 1268 1398 } 1269 1399 else … … 1288 1418 LPENUMIDLIST* ppEnumIDList) 1289 1419 { 1290 ICOM_THIS(IGenericSFImpl, iface);1420 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1291 1421 1292 1422 TRACE("(%p)->(HWND=0x%08x flags=0x%08lx pplist=%p)\n",This,hwndOwner,dwFlags,ppEnumIDList); … … 1308 1438 LPBC pbcReserved, REFIID riid, LPVOID * ppvOut) 1309 1439 { 1310 ICOM_THIS(IGenericSFImpl, iface);1440 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1311 1441 GUID const * clsid; 1312 1442 char xriid[50]; … … 1322 1452 if (clsid) 1323 1453 { 1324 if ( IsEqualIID(clsid, & IID_MyComputer))1454 if ( IsEqualIID(clsid, &CLSID_MyComputer)) 1325 1455 { 1326 1456 pShellFolder = ISF_MyComputer_Constructor(); … … 1338 1468 { 1339 1469 /* file system folder on the desktop */ 1340 LPITEMIDLIST pidltemp = ILCloneFirst(pidl); 1341 pShellFolder = IShellFolder_Constructor((IShellFolder*)This, pidltemp); 1342 ILFree(pidltemp); 1470 LPITEMIDLIST deskpidl, firstpidl, completepidl; 1471 IPersistFolder * ppf; 1472 1473 /* combine pidls */ 1474 SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, &deskpidl); 1475 firstpidl = ILCloneFirst(pidl); 1476 completepidl = ILCombine(deskpidl, firstpidl); 1477 1478 pShellFolder = IShellFolder_Constructor(NULL, NULL); 1479 if (SUCCEEDED(IShellFolder_QueryInterface(pShellFolder, &IID_IPersistFolder, (LPVOID*)&ppf))) 1480 { 1481 IPersistFolder_Initialize(ppf, completepidl); 1482 IPersistFolder_Release(ppf); 1483 } 1484 ILFree(completepidl); 1485 ILFree(deskpidl); 1486 ILFree(firstpidl); 1343 1487 } 1344 1488 … … 1365 1509 HWND hwndOwner, REFIID riid, LPVOID *ppvOut) 1366 1510 { 1367 ICOM_THIS(IGenericSFImpl, iface);1511 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1368 1512 1369 1513 LPSHELLVIEW pShellView; … … 1390 1534 else if(IsEqualIID(riid, &IID_IShellView)) 1391 1535 { 1392 pShellView = IShellView_Constructor((IShellFolder *) This);1536 pShellView = IShellView_Constructor((IShellFolder*)iface); 1393 1537 if(pShellView) 1394 1538 { … … 1407 1551 static HRESULT WINAPI ISF_Desktop_fnGetAttributesOf(IShellFolder2 * iface,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgfInOut) 1408 1552 { 1409 ICOM_THIS(IGenericSFImpl, iface);1553 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1410 1554 1411 1555 GUID const * clsid; … … 1425 1569 if (clsid) 1426 1570 { 1427 if (IsEqualIID(clsid, & IID_MyComputer))1571 if (IsEqualIID(clsid, &CLSID_MyComputer)) 1428 1572 { 1429 1573 *rgfInOut &= 0xb0000154; … … 1473 1617 LPSTRRET strRet) 1474 1618 { 1475 ICOM_THIS(IGenericSFImpl, iface);1619 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1476 1620 1477 1621 CHAR szPath[MAX_PATH]= ""; … … 1492 1636 else 1493 1637 { 1494 if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild( (IShellFolder2*)This, pidl, dwFlags, szPath, MAX_PATH)))1638 if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild(iface, pidl, dwFlags, szPath, MAX_PATH))) 1495 1639 return E_OUTOFMEMORY; 1496 1640 } … … 1507 1651 GUID *pguid) 1508 1652 { 1509 ICOM_THIS(IGenericSFImpl, iface);1653 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1510 1654 FIXME("(%p)\n",This); 1511 1655 return E_NOTIMPL; … … 1515 1659 IEnumExtraSearch **ppenum) 1516 1660 { 1517 ICOM_THIS(IGenericSFImpl, iface);1661 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1518 1662 FIXME("(%p)\n",This); 1519 1663 return E_NOTIMPL; … … 1525 1669 ULONG *pDisplay) 1526 1670 { 1527 ICOM_THIS(IGenericSFImpl, iface);1671 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1528 1672 1529 1673 TRACE("(%p)\n",This); … … 1539 1683 DWORD *pcsFlags) 1540 1684 { 1541 ICOM_THIS(IGenericSFImpl, iface);1685 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1542 1686 1543 1687 TRACE("(%p)\n",This); … … 1555 1699 VARIANT *pv) 1556 1700 { 1557 ICOM_THIS(IGenericSFImpl, iface);1701 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1558 1702 FIXME("(%p)\n",This); 1559 1703 … … 1566 1710 SHELLDETAILS *psd) 1567 1711 { 1568 ICOM_THIS(IGenericSFImpl, iface);1712 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1569 1713 HRESULT hr = E_FAIL;; 1570 1714 … … 1599 1743 break; 1600 1744 case 4: /* attributes */ 1601 _ILGet AttributeStr(pidl, psd->str.u.cStr, MAX_PATH);1745 _ILGetFileAttributes(pidl, psd->str.u.cStr, MAX_PATH); 1602 1746 break; 1603 1747 } … … 1613 1757 SHCOLUMNID *pscid) 1614 1758 { 1615 ICOM_THIS(IGenericSFImpl, iface);1759 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1616 1760 FIXME("(%p)\n",This); 1617 1761 return E_NOTIMPL; … … 1671 1815 sf->ref=1; 1672 1816 1673 sf->lpvtbl = &sfmcvt; 1817 ICOM_VTBL(sf)=&unkvt; 1818 sf->lpvtblShellFolder=&sfmcvt; 1674 1819 sf->lpvtblPersistFolder = &psfvt; 1675 1820 sf->pclsid = (CLSID*)&CLSID_SFMyComp; 1676 1821 sf->absPidl=_ILCreateMyComputer(); /* my qualified pidl */ 1822 sf->pUnkOuter = (IUnknown *) &sf->lpVtbl; 1677 1823 1678 1824 TRACE("(%p)\n",sf); 1679 1825 1680 1826 shell32_ObjCount++; 1681 return (IShellFolder *)sf;1827 return _IShellFolder_(sf); 1682 1828 } 1683 1829 … … 1694 1840 DWORD *pdwAttributes) 1695 1841 { 1696 ICOM_THIS(IGenericSFImpl, iface);1842 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1697 1843 1698 1844 HRESULT hr = E_OUTOFMEMORY; … … 1717 1863 if (szNext && *szNext) 1718 1864 { 1719 hr = SHELL32_ParseNextElement(hwndOwner, (IShellFolder2*)This, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes);1865 hr = SHELL32_ParseNextElement(hwndOwner,iface, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes); 1720 1866 } 1721 1867 else … … 1740 1886 LPENUMIDLIST* ppEnumIDList) 1741 1887 { 1742 ICOM_THIS(IGenericSFImpl, iface);1888 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1743 1889 1744 1890 TRACE("(%p)->(HWND=0x%08x flags=0x%08lx pplist=%p)\n",This,hwndOwner,dwFlags,ppEnumIDList); … … 1760 1906 LPBC pbcReserved, REFIID riid, LPVOID * ppvOut) 1761 1907 { 1762 ICOM_THIS(IGenericSFImpl, iface);1908 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1763 1909 GUID const * clsid; 1764 1910 char xriid[50]; … … 1770 1916 TRACE("(%p)->(pidl=%p,%p,\n\tIID:\t%s,%p)\n",This,pidl,pbcReserved,xriid,ppvOut); 1771 1917 1772 if(!p idl || !ppvOut) return E_INVALIDARG;1918 if(!ppvOut) return E_INVALIDARG; 1773 1919 1774 1920 *ppvOut = NULL; 1775 1921 1776 if ((clsid=_ILGetGUIDPointer(pidl)) && !IsEqualIID(clsid, &IID_MyComputer)) 1922 if (!pidl) return E_INVALIDARG; 1923 1924 if ((clsid=_ILGetGUIDPointer(pidl)) && !IsEqualIID(clsid, &CLSID_MyComputer)) 1777 1925 { 1778 1926 if (!SUCCEEDED(SHELL32_CoCreateInitSF (This->absPidl, pidl, clsid, riid, (LPVOID*)&pShellFolder))) … … 1786 1934 1787 1935 pidltemp = ILCloneFirst(pidl); 1788 pShellFolder = IShellFolder_Constructor( (IShellFolder*)This, pidltemp);1936 pShellFolder = IShellFolder_Constructor(iface, pidltemp); 1789 1937 ILFree(pidltemp); 1790 1938 } … … 1812 1960 HWND hwndOwner, REFIID riid, LPVOID *ppvOut) 1813 1961 { 1814 ICOM_THIS(IGenericSFImpl, iface);1962 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1815 1963 1816 1964 LPSHELLVIEW pShellView; … … 1837 1985 else if(IsEqualIID(riid, &IID_IShellView)) 1838 1986 { 1839 pShellView = IShellView_Constructor((IShellFolder *) This);1987 pShellView = IShellView_Constructor((IShellFolder*)iface); 1840 1988 if(pShellView) 1841 1989 { … … 1854 2002 static HRESULT WINAPI ISF_MyComputer_fnGetAttributesOf(IShellFolder2 * iface,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgfInOut) 1855 2003 { 1856 ICOM_THIS(IGenericSFImpl, iface);2004 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1857 2005 1858 2006 GUID const * clsid; … … 1910 2058 LPSTRRET strRet) 1911 2059 { 1912 ICOM_THIS(IGenericSFImpl, iface);2060 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1913 2061 1914 2062 char szPath[MAX_PATH], szDrive[18]; … … 1962 2110 len = strlen(szPath); 1963 2111 1964 if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild( (IShellFolder2*)This, pidl, dwFlags | SHGDN_FORPARSING, szPath + len, MAX_PATH - len)))2112 if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild(iface, pidl, dwFlags | SHGDN_FORPARSING, szPath + len, MAX_PATH - len))) 1965 2113 return E_OUTOFMEMORY; 1966 2114 } … … 1977 2125 GUID *pguid) 1978 2126 { 1979 ICOM_THIS(IGenericSFImpl, iface);2127 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1980 2128 FIXME("(%p)\n",This); 1981 2129 return E_NOTIMPL; … … 1985 2133 IEnumExtraSearch **ppenum) 1986 2134 { 1987 ICOM_THIS(IGenericSFImpl, iface);2135 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1988 2136 FIXME("(%p)\n",This); 1989 2137 return E_NOTIMPL; … … 1995 2143 ULONG *pDisplay) 1996 2144 { 1997 ICOM_THIS(IGenericSFImpl, iface);2145 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1998 2146 1999 2147 TRACE("(%p)\n",This); … … 2009 2157 DWORD *pcsFlags) 2010 2158 { 2011 ICOM_THIS(IGenericSFImpl, iface);2159 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 2012 2160 2013 2161 TRACE("(%p)\n",This); … … 2025 2173 VARIANT *pv) 2026 2174 { 2027 ICOM_THIS(IGenericSFImpl, iface);2175 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 2028 2176 FIXME("(%p)\n",This); 2029 2177 … … 2038 2186 SHELLDETAILS *psd) 2039 2187 { 2040 ICOM_THIS(IGenericSFImpl, iface);2188 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 2041 2189 HRESULT hr; 2042 2190 … … 2073 2221 _ILSimpleGetText(pidl, szPath, MAX_PATH); 2074 2222 GetDiskFreeSpaceExA(szPath, NULL, &ulBytes, NULL); 2223 //CB: WINE uses ulBytes.s.LowPart 2075 2224 StrFormatByteSizeA(ulBytes.LowPart, psd->str.u.cStr, MAX_PATH); 2076 2225 } … … 2081 2230 _ILSimpleGetText(pidl, szPath, MAX_PATH); 2082 2231 GetDiskFreeSpaceExA(szPath, &ulBytes, NULL, NULL); 2232 //CB: WINE uses ulBytes.s.LowPart 2083 2233 StrFormatByteSizeA(ulBytes.LowPart, psd->str.u.cStr, MAX_PATH); 2084 2234 } … … 2095 2245 SHCOLUMNID *pscid) 2096 2246 { 2097 ICOM_THIS(IGenericSFImpl, iface);2247 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 2098 2248 FIXME("(%p)\n",This); 2099 2249 return E_NOTIMPL; … … 2141 2291 TRACE("(%p)\n", This); 2142 2292 2143 return I ShellFolder_QueryInterface((IShellFolder*)This, iid, ppvObj);2293 return IUnknown_QueryInterface(This->pUnkOuter, iid, ppvObj); 2144 2294 } 2145 2295 … … 2151 2301 IPersistFolder * iface) 2152 2302 { 2153 _ICOM_THIS_From_IPersistFolder(IShellFolder, iface);2154 2155 2156 2157 return IShellFolder_AddRef((IShellFolder*)This);2303 _ICOM_THIS_From_IPersistFolder(IGenericSFImpl, iface); 2304 2305 TRACE("(%p)\n", This); 2306 2307 return IUnknown_AddRef(This->pUnkOuter); 2158 2308 } 2159 2309 … … 2169 2319 TRACE("(%p)\n", This); 2170 2320 2171 return I ShellFolder_Release((IShellFolder*)This);2321 return IUnknown_Release(This->pUnkOuter); 2172 2322 } 2173 2323 … … 2199 2349 LPCITEMIDLIST pidl) 2200 2350 { 2351 char sTemp[MAX_PATH]; 2201 2352 _ICOM_THIS_From_IPersistFolder(IGenericSFImpl, iface); 2202 2353 2203 TRACE("(%p)\n", This); 2204 2205 if(This->absPidl) 2206 { 2207 SHFree(This->absPidl); 2208 This->absPidl = NULL; 2209 } 2210 This->absPidl = ILClone(pidl); 2211 return S_OK; 2354 TRACE("(%p)->(%p)\n", This, pidl); 2355 2356 /* free the old stuff */ 2357 if(This->absPidl) 2358 { 2359 SHFree(This->absPidl); 2360 This->absPidl = NULL; 2361 } 2362 if(This->sMyPath) 2363 { 2364 SHFree(This->sMyPath); 2365 This->sMyPath = NULL; 2366 } 2367 2368 /* set my pidl */ 2369 This->absPidl = ILClone(pidl); 2370 2371 /* set my path */ 2372 if (SHGetPathFromIDListA(pidl, sTemp)) 2373 { 2374 This->sMyPath = (CHAR*)SHAlloc(strlen(sTemp+1)); 2375 strcpy(This->sMyPath, sTemp); 2376 } 2377 2378 TRACE("--(%p)->(%s)\n", This, This->sMyPath); 2379 2380 return S_OK; 2212 2381 } 2213 2382 … … 2258 2427 TRACE("(%p)\n", This); 2259 2428 2260 return I ShellFolder_QueryInterface((IShellFolder*)This, riid, ppvObj);2429 return IUnknown_QueryInterface(This->pUnkOuter, riid, ppvObj); 2261 2430 } 2262 2431 … … 2267 2436 TRACE("(%p)\n", This); 2268 2437 2269 return I ShellFolder_AddRef((IShellFolder*)This);2438 return IUnknown_AddRef(This->pUnkOuter); 2270 2439 } 2271 2440 … … 2276 2445 TRACE("(%p)\n", This); 2277 2446 2278 return I ShellFolder_Release((IShellFolder*)This);2447 return IUnknown_Release(This->pUnkOuter); 2279 2448 } 2280 2449 -
trunk/src/shell32/shlmenu.cpp
r1558 r3243 1 /* $Id: shlmenu.cpp,v 1. 4 1999-11-02 20:38:47 phallerExp $ */1 /* $Id: shlmenu.cpp,v 1.5 2000-03-26 16:34:53 cbratschi Exp $ */ 2 2 3 3 /* … … 11 11 * Many of this functions are in SHLWAPI.DLL also 12 12 * 13 * Corel WINE 20000324 level 13 14 */ 14 15 … … 251 252 * FileMenu_Create [SHELL32.114] 252 253 * 254 * NOTES 255 * for non-root menus values are 256 * (ffffffff,00000000,00000000,00000000,00000000) 253 257 */ 254 258 ODINFUNCTION5(HMENU, FileMenu_Create, … … 427 431 * FileMenu_ReplaceUsingPidl [SHELL32.113] 428 432 * 433 * FIXME: the static items are deleted but wont be refreshed 429 434 */ 430 435 ODINFUNCTION5(int, FileMenu_ReplaceUsingPidl, … … 805 810 806 811 /************************************************************************* 807 * SHFind_InitMenuPopup 812 * SHFind_InitMenuPopup [SHELL32.149] 808 813 * 809 814 * 810 815 * PARAMETERS 811 * hMenu [in] handel of menu previously created 812 * hWndParent [in] parent window 813 * w [in] no pointer 814 * x [in] no pointer 816 * hMenu [in] handle of menu previously created 817 * hWndParent [in] parent window 818 * w [in] no pointer (0x209 over here) perhaps menu IDs ??? 819 * x [in] no pointer (0x226 over here) 820 * 821 * RETURNS 822 * LPXXXXX pointer to struct containing a func addr at offset 8 823 * or NULL at failure. 815 824 */ 816 825 ODINFUNCTION4(HRESULT, SHFind_InitMenuPopup, … … 821 830 { FIXME("hmenu=0x%08x hwnd=0x%08x 0x%08lx 0x%08lx stub\n", 822 831 hMenu,hWndParent,w,x); 823 return TRUE;832 return NULL; /* this is supposed to be a pointer */ 824 833 } 825 834 -
trunk/src/shell32/shlview.cpp
r3217 r3243 1 /* $Id: shlview.cpp,v 1. 8 2000-03-24 17:17:28cbratschi Exp $ */1 /* $Id: shlview.cpp,v 1.9 2000-03-26 16:34:54 cbratschi Exp $ */ 2 2 /* 3 3 * ShellView 4 4 * 5 * Copyright 2000 Christoph Bratschi (cbratschi@datacomm.ch) 6 * 5 7 * Copyright 1998,1999 <juergen.schmied@metronet.de> 6 8 * 7 * FIXME: when the ShellView_WndProc gets a WM_NCDESTROY should we do a 8 * Release() ??? 9 * 10 * FIXME: There is still a design problem in this implementation. 11 * This implementation is more or less ok for file system folders 12 * but there are many more kinds of folders. 13 * The shellview is not supposed to know much about the colums 14 * appearing in the view. To fix this it should use the IShellFolder2 15 * interface when possible to get the informations dynamically 16 * this will take a lot of work to implement and wont likely not 17 * be done in near future 18 * Please considder this when code new features. Mail me if you 19 * are in doubt how to do things. (jsch 25/10/99) 20 * 21 * FIXME: Set the buttons in the filedialog according to the view state 22 9 * This is the view visualizing the data provied by the shellfolder. 10 * No direct access to data from pidls should be done from here. 11 * 12 * FIXME: There is not jet a official interface defined to manipulate 13 * the objects shown in the view (rename, move...). This should be 14 * implemented as additional interface to IShellFolder. 15 * 16 * FIXME: The order by part of the background context menu should be 17 * buily according to the columns shown. 18 * 19 * FIXME: Load/Save the view state from/into the stream provied by 20 * the ShellBrowser 21 * 22 * FIXME: CheckToolbar: handle the "new folder" and "folder up" button 23 * 24 * FIXME: ShellView_FillList: consider sort orders 25 * 26 * FIXME: implement the drag and drop in the old (msg-based) way 27 * 28 * FIXME: when the ShellView_WndProc gets a WM_NCDESTROY should we do a 29 * Release() ??? 30 * 31 * Corel WINE 20000324 level 23 32 */ 24 33 … … 83 92 84 93 extern struct ICOM_VTABLE(IShellView) svvt; 94 85 95 extern struct ICOM_VTABLE(IOleCommandTarget) ctvt; 86 96 #define _IOleCommandTarget_Offset ((int)(&(((IShellViewImpl*)0)->lpvtblOleCommandTarget))) 87 #define _ICOM_THIS_From_IOleCommandTarget( myClass, name) myClass* This = (myClass*)(((char*)name)-_IOleCommandTarget_Offset);97 #define _ICOM_THIS_From_IOleCommandTarget(class, name) class* This = (class*)(((char*)name)-_IOleCommandTarget_Offset); 88 98 89 99 extern struct ICOM_VTABLE(IDropTarget) dtvt; 90 100 #define _IDropTarget_Offset ((int)(&(((IShellViewImpl*)0)->lpvtblDropTarget))) 91 #define _ICOM_THIS_From_IDropTarget( myClass, name) myClass* This = (myClass*)(((char*)name)-_IDropTarget_Offset);101 #define _ICOM_THIS_From_IDropTarget(class, name) class* This = (class*)(((char*)name)-_IDropTarget_Offset); 92 102 93 103 extern struct ICOM_VTABLE(IDropSource) dsvt; 94 104 #define _IDropSource_Offset ((int)(&(((IShellViewImpl*)0)->lpvtblDropSource))) 95 #define _ICOM_THIS_From_IDropSource( myClass, name) myClass* This = (myClass*)(((char*)name)-_IDropSource_Offset);105 #define _ICOM_THIS_From_IDropSource(class, name) class* This = (class*)(((char*)name)-_IDropSource_Offset); 96 106 97 107 extern struct ICOM_VTABLE(IViewObject) vovt; 98 108 #define _IViewObject_Offset ((int)(&(((IShellViewImpl*)0)->lpvtblViewObject))) 99 #define _ICOM_THIS_From_IViewObject( myClass, name) myClass* This = (myClass*)(((char*)name)-_IViewObject_Offset);109 #define _ICOM_THIS_From_IViewObject(class, name) class* This = (class*)(((char*)name)-_IViewObject_Offset); 100 110 101 111 /* ListView Header ID's */ 102 #define LISTVIEW_COLUMN_NAME 0103 #define LISTVIEW_COLUMN_SIZE 1104 #define LISTVIEW_COLUMN_TYPE 2105 #define LISTVIEW_COLUMN_TIME 3106 #define LISTVIEW_COLUMN_ATTRIB 4112 #define FILEDIALOG_COLUMN_NAME 0 113 #define FILEDIALOG_COLUMN_SIZE 1 114 #define FILEDIALOG_COLUMN_TYPE 2 115 #define FILEDIALOG_COLUMN_TIME 3 116 #define FILEDIALOG_COLUMN_ATTRIB 4 107 117 //CB: todo: drive view! 108 118 … … 215 225 return ret; 216 226 } 217 /********************************************************** 218 219 * ##### helperfunctions for initializing the view #####220 * /221 /********************************************************** 222 * set the toolbar buttons227 228 /********************************************************** 229 * set the toolbar of the filedialog buttons 230 * 231 * - activates the buttons from the shellbrowser according to 232 * the view state 223 233 */ 224 234 static void CheckToolbar(IShellViewImpl * This) … … 242 252 243 253 /********************************************************** 254 * 255 * ##### helperfunctions for initializing the view ##### 256 */ 257 258 /********************************************************** 244 259 * change the style of the listview control 245 260 */ … … 257 272 * ShellView_CreateList() 258 273 * 274 * - creates the list view window 259 275 */ 260 276 static BOOL ShellView_CreateList (IShellViewImpl * This) … … 275 291 } 276 292 277 if (This->FolderSettings.fFlags & &FWF_AUTOARRANGE) dwStyle |= LVS_AUTOARRANGE;293 if (This->FolderSettings.fFlags & FWF_AUTOARRANGE) dwStyle |= LVS_AUTOARRANGE; 278 294 /*if (This->FolderSettings.fFlags && FWF_DESKTOP); used from explorer*/ 279 if (This->FolderSettings.fFlags && FWF_SINGLESEL) dwStyle |= LVS_SINGLESEL; 295 if (This->FolderSettings.fFlags & FWF_SINGLESEL) dwStyle |= LVS_SINGLESEL; 296 297 This->ListViewSortInfo.bIsAscending = TRUE; 298 This->ListViewSortInfo.nHeaderID = -1; 299 This->ListViewSortInfo.nLastHeaderID = -1; 280 300 281 301 This->hWndList=CreateWindowExA( WS_EX_CLIENTEDGE, … … 292 312 return FALSE; 293 313 294 This->ListViewSortInfo.bIsAscending = TRUE;295 This->ListViewSortInfo.nHeaderID = -1;296 This->ListViewSortInfo.nLastHeaderID = -1;297 298 314 /* UpdateShellSettings(); */ 315 316 /* Bring window to the Top 317 if there is any user defined template then we cannot 318 see this list control 319 */ 320 BringWindowToTop(This->hWnd); 321 BringWindowToTop(This->hWndList); 322 299 323 return TRUE; 300 324 } … … 302 326 * ShellView_InitList() 303 327 * 304 * NOTES 305 * FIXME: the headers should depend on the kind of shellfolder 306 * thats creating the shellview. this hack implements only the 307 * correct headers for a filesystem folder (jsch 25/10/99) 328 * - adds all needed columns to the shellview 308 329 */ 309 330 static BOOL ShellView_InitList(IShellViewImpl * This) … … 409 430 /* Sort by Time: Folders or Files can be sorted */ 410 431 411 if(pSortInfo->nHeaderID == LISTVIEW_COLUMN_TIME)432 if(pSortInfo->nHeaderID == FILEDIALOG_COLUMN_TIME) 412 433 { 413 434 _ILGetFileDateTime(pItemIdList1, &fd1); … … 416 437 } 417 438 /* Sort by Attribute: Folder or Files can be sorted */ 418 else if(pSortInfo->nHeaderID == LISTVIEW_COLUMN_ATTRIB)439 else if(pSortInfo->nHeaderID == FILEDIALOG_COLUMN_ATTRIB) 419 440 { 420 _ILGet AttributeStr(pItemIdList1, strName1, MAX_PATH);421 _ILGet AttributeStr(pItemIdList2, strName2, MAX_PATH);441 _ILGetFileAttributes(pItemIdList1, strName1, MAX_PATH); 442 _ILGetFileAttributes(pItemIdList2, strName2, MAX_PATH); 422 443 nDiff = strcmp(strName1, strName2); 423 444 } 424 445 /* Sort by FileName: Folder or Files can be sorted */ 425 else if(pSortInfo->nHeaderID == LISTVIEW_COLUMN_NAME || bIsBothFolder)446 else if(pSortInfo->nHeaderID == FILEDIALOG_COLUMN_NAME || bIsBothFolder) 426 447 { 427 448 /* Sort by Text */ … … 431 452 } 432 453 /* Sort by File Size, Only valid for Files */ 433 else if(pSortInfo->nHeaderID == LISTVIEW_COLUMN_SIZE)454 else if(pSortInfo->nHeaderID == FILEDIALOG_COLUMN_SIZE) 434 455 { 435 456 nDiff = (INT)(_ILGetFileSize(pItemIdList1, NULL, 0) - _ILGetFileSize(pItemIdList2, NULL, 0)); 436 457 } 437 458 /* Sort by File Type, Only valid for Files */ 438 else if(pSortInfo->nHeaderID == LISTVIEW_COLUMN_TYPE)459 else if(pSortInfo->nHeaderID == FILEDIALOG_COLUMN_TYPE) 439 460 { 440 461 /* Sort by Type */ … … 465 486 * ShellView_FillList() 466 487 * 467 * NOTES 468 * internal 488 * - gets the objectlist from the shellfolder 489 * - sorts the list 490 * - fills the list into the view 469 491 */ 470 492 … … 540 562 /*turn the listview's redrawing back on and force it to draw*/ 541 563 SendMessageA(This->hWndList, WM_SETREDRAW, TRUE, 0); 542 InvalidateRect(This->hWndList, NULL, TRUE);543 UpdateWindow(This->hWndList);544 564 545 565 IEnumIDList_Release(pEnumIDList); /* destroy the list*/ … … 777 797 ZeroMemory(&cmi, sizeof(cmi)); 778 798 cmi.cbSize = sizeof(cmi); 779 cmi.hwnd = This->hWnd Parent;799 cmi.hwnd = This->hWnd; 780 800 cmi.lpVerb = (LPCSTR)MAKEINTRESOURCEA(uCommand); 781 801 IContextMenu_InvokeCommand(pContextMenu, &cmi); … … 1017 1037 break; 1018 1038 1039 case ID_NEWFOLDER: 1040 PostMessageA (GetParent (This->hWnd), WM_COMMAND, ID_NEWFOLDER, 0L); 1041 break; 1042 1043 1019 1044 default: 1020 1045 TRACE("-- COMMAND 0x%04lx unhandled\n", dwCmdID); 1021 1046 } 1022 1047 return 0; 1048 } 1049 1050 /************************************************************************* 1051 * ShellView_OnEndLabelEdit [Internal] 1052 * 1053 * Message handling for LVN_ENDLABELEDIT. This function will rename a 1054 * file and rename the pidl to match it's new name. 1055 * 1056 * PARAMS 1057 * This [I] ShellView structure 1058 * lpdi [I] Listview Display info struct 1059 * 1060 * RETURNS 1061 * TRUE if the listview should keep the edit text otherwise FALSE 1062 * 1063 * NOTES 1064 * This funciton will pop a message box if an error occures 1065 */ 1066 static LRESULT ShellView_OnEndLabelEdit(IShellViewImpl *This, NMLVDISPINFOA *lpdi) 1067 { 1068 char strOldPath[MAX_PATH]; 1069 char strNewPath[MAX_PATH]; 1070 char strMsgTitle[256]; 1071 char strMsgText[256]; 1072 1073 LPSTR strDestName; 1074 BOOL bRet = FALSE; 1075 LPITEMIDLIST pidl = (LPITEMIDLIST)lpdi->item.lParam; 1076 DWORD type; 1077 STRRET str; 1078 1079 if(lpdi->item.pszText != NULL && lpdi->item.cchTextMax > 0) 1080 { 1081 strDestName = lpdi->item.pszText; 1082 1083 /* Check for valid Destnation Name */ 1084 if(strpbrk(strDestName,"/\\:*?\"<>|") != NULL) 1085 { 1086 LoadStringA(shell32_hInstance, IDS_SHV_INVALID_FILENAME_TITLE, strMsgTitle, sizeof(strMsgTitle)); 1087 LoadStringA(shell32_hInstance, IDS_SHV_INVALID_FILENAME, strMsgText, sizeof(strMsgText)); 1088 MessageBoxA(This->hWnd,strMsgText, strMsgTitle, MB_OK | MB_ICONHAND); 1089 return FALSE; 1090 } 1091 1092 if(SUCCEEDED(IShellFolder_GetDisplayNameOf(This->pSFParent,pidl, SHGDN_NORMAL | SHGDN_FORPARSING, &str))) 1093 { 1094 char *pLastSlash; 1095 StrRetToStrNA(strOldPath, MAX_PATH, &str, pidl); 1096 1097 1098 /* Set the complete path of the new filename */ 1099 strcpy(strNewPath, strOldPath); 1100 pLastSlash = strrchr(strNewPath, '\\'); 1101 if(pLastSlash != NULL) 1102 { 1103 pLastSlash[1] = 0; 1104 } 1105 strcat(strNewPath, strDestName); 1106 1107 /* Are the string the same */ 1108 if(strcmp(strNewPath, strOldPath) != 0) 1109 { 1110 if(MoveFileA(strOldPath, strNewPath) != 0) 1111 { 1112 /* Update the pidl with the new filename */ 1113 type = _ILGetDataPointer(pidl)->type; 1114 LPSTR pStr = _ILGetTextPointer(type,_ILGetDataPointer(pidl)); 1115 strcpy(pStr, strDestName); 1116 1117 /* Remove the current selection from the listview */ 1118 ListView_SetItemState(This->hWndList,lpdi->item.iItem,0,LVIS_SELECTED); 1119 bRet = TRUE; 1120 } 1121 else 1122 { 1123 /* Cannot move file, so display a message */ 1124 char pBuffer[256+MAX_PATH]; 1125 LoadStringA(shell32_hInstance, IDS_SHV_INVALID_MOVE_TITLE, strMsgTitle, sizeof(strMsgTitle)); 1126 LoadStringA(shell32_hInstance, IDS_SHV_INVALID_MOVE, strMsgText, sizeof(strMsgText)); 1127 sprintf(pBuffer, strMsgText, strDestName); 1128 MessageBoxA(This->hWnd,pBuffer,strMsgTitle, MB_OK | MB_ICONHAND); 1129 } 1130 } 1131 } 1132 1133 } 1134 return bRet; 1023 1135 } 1024 1136 … … 1106 1218 1107 1219 case LVN_ITEMCHANGED: 1108 TRACE("-- LVN_ITEMCHANGED %p\n",This); 1109 OnStateChange(This, CDBOSC_SELCHANGE); /* the browser will get the IDataObject now */ 1220 if (ListView_GetNextItem(This->hWndList, -1, LVNI_FOCUSED) == lpnmlv->iItem) 1221 { 1222 TRACE("-- LVN_ITEMCHANGED %p\n",This); 1223 OnStateChange(This, CDBOSC_SELCHANGE); /* the browser will get the IDataObject now */ 1224 } 1110 1225 break; 1111 1226 … … 1143 1258 1144 1259 case LVN_BEGINLABELEDITA: 1260 return FALSE; 1261 1145 1262 case LVN_ENDLABELEDITA: 1146 FIXME("labeledit\n"); 1147 break; 1263 { 1264 return ShellView_OnEndLabelEdit(This,lpdi); 1265 } 1148 1266 1149 1267 default: … … 1329 1447 static HRESULT WINAPI IShellView_fnTranslateAccelerator(IShellView * iface,LPMSG lpmsg) 1330 1448 { 1449 #if 0 1331 1450 ICOM_THIS(IShellViewImpl, iface); 1332 1451 1333 #if 01334 1452 FIXME("(%p)->(%p: hwnd=%x msg=%x lp=%lx wp=%x) stub\n",This,lpmsg, lpmsg->hwnd, lpmsg->message, lpmsg->lParam, lpmsg->wParam); 1335 1453 #endif … … 1531 1649 } 1532 1650 1651 /************************************************************************* 1652 * IShellView_fnSelectItem 1653 * 1654 * Changes the selection state of one or more items within the shell 1655 * view window. 1656 * 1657 * PARAMS 1658 * iFace [I] The IShellView structure 1659 * pidlItem [I] Address of the ITEMIDLIST structure 1660 * uFlags [I] Flag specifying what type of selection to apply. 1661 * 1662 * RETURNS 1663 * Returns NOERROR if successful otherwise S_FALSE 1664 * 1665 * NOTES 1666 * CB: can't use ListView_SetItemState return value: MS's macro doesn't return a value 1667 */ 1533 1668 static HRESULT WINAPI IShellView_fnSelectItem(IShellView * iface, LPCITEMIDLIST pidlItem, UINT uFlags) 1534 { ICOM_THIS(IShellViewImpl, iface); 1535 1536 FIXME("(%p)->(pidl=%p, 0x%08x) stub\n",This, pidlItem, uFlags); 1537 1538 return E_NOTIMPL; 1669 { ICOM_THIS(IShellViewImpl, iface); 1670 1671 LVITEMA lvItem; 1672 int iItem=-1; 1673 BOOL bIsFound = FALSE; 1674 HRESULT hResult = NOERROR; 1675 1676 /* Find the Listview item index */ 1677 ZeroMemory(&lvItem, sizeof(lvItem)); 1678 lvItem.mask = LVIF_PARAM; 1679 lvItem.iItem = 0; 1680 while(ListView_GetItemA(This->hWndList, &lvItem) && !bIsFound) 1681 { 1682 if(ILIsEqual((LPCITEMIDLIST)lvItem.lParam, pidlItem)) 1683 { 1684 iItem = lvItem.iItem; 1685 bIsFound = TRUE; 1686 } 1687 lvItem.iItem++; 1688 } 1689 1690 if(!bIsFound) 1691 { 1692 return S_FALSE; 1693 } 1694 1695 /* Perform flag operations */ 1696 if(SVSI_DESELECT & uFlags) 1697 { 1698 ListView_SetItemState(This->hWndList,iItem,0,LVIS_SELECTED); 1699 } 1700 1701 if(SVSI_DESELECTOTHERS & uFlags) 1702 { 1703 int iOtherItems=-1; 1704 iOtherItems = ListView_GetNextItem(This->hWndList, iOtherItems, LVNI_ALL); 1705 while(iOtherItems != -1) 1706 { 1707 if(iOtherItems != iItem) 1708 { 1709 ListView_SetItemState(This->hWndList,iOtherItems,0,LVIS_SELECTED); 1710 } 1711 iOtherItems = ListView_GetNextItem(This->hWndList, iOtherItems, LVNI_ALL); 1712 } 1713 } 1714 1715 if(SVSI_ENSUREVISIBLE & uFlags) 1716 { 1717 if(ListView_EnsureVisible(This->hWndList, iItem, FALSE) != TRUE) 1718 { 1719 hResult = S_FALSE; 1720 } 1721 } 1722 1723 if(SVSI_FOCUSED & uFlags) 1724 { 1725 ListView_SetItemState(This->hWndList,iItem,LVIS_FOCUSED,LVIS_FOCUSED); 1726 } 1727 1728 if(SVSI_SELECT & uFlags) 1729 { 1730 ListView_SetItemState(This->hWndList,iItem,LVIS_FOCUSED,LVIS_FOCUSED); 1731 } 1732 1733 if(SVSI_EDIT & uFlags) 1734 { 1735 if(ListView_EditLabelA(This->hWndList, iItem) != 0) 1736 { 1737 hResult = S_FALSE; 1738 } 1739 } 1740 return NOERROR; 1539 1741 } 1540 1742 -
trunk/src/shell32/shpolicy.cpp
r1551 r3243 1 /* $Id: shpolicy.cpp,v 1. 1 1999-11-02 19:17:16 phallerExp $ */1 /* $Id: shpolicy.cpp,v 1.2 2000-03-26 16:34:55 cbratschi Exp $ */ 2 2 3 3 /* … … 19 19 * 20 20 * Up to date as of SHELL32 v4.72 (Win98, Win95 with MSIE 5) 21 * 22 * Corel WINE 20000324 level 21 23 */ 22 24 -
trunk/src/shell32/shpolicy.h
r1551 r3243 1 /* 1 /* 2 2 * shpolicy.h - contains defs of policy data for SHRestricted 3 * 3 * 4 4 * Created 1999 by Ian Schmidt, <ischmidt@cfl.rr.com> 5 5 * Up to date as of SHELL32 v4.72 (Win98, Win95 with MSIE 5) 6 * 7 * Corel WINE 20000324 level 6 8 */ 7 9 -
trunk/src/shell32/shres.orc
r3217 r3243 1 /* $Id: shres.orc,v 1. 2 2000-03-24 17:17:29cbratschi Exp $ */1 /* $Id: shres.orc,v 1.3 2000-03-26 16:34:55 cbratschi Exp $ */ 2 2 /* 3 3 * Top level resource file for Common Dialogs … … 46 46 END 47 47 MENUITEM SEPARATOR 48 /* PATCH, the grayed items are unimplemented features */ 48 49 POPUP "Arrange &Icons" 49 50 BEGIN … … 53 54 MENUITEM "By &Date", 0x33 54 55 MENUITEM SEPARATOR 55 MENUITEM "&Auto Arrange", FCIDM_SHVIEW_AUTOARRANGE 56 MENUITEM "&Auto Arrange", FCIDM_SHVIEW_AUTOARRANGE, GRAYED 56 57 END 57 MENUITEM "Line up Icons", FCIDM_SHVIEW_SNAPTOGRID 58 MENUITEM "Line up Icons", FCIDM_SHVIEW_SNAPTOGRID, GRAYED 58 59 MENUITEM SEPARATOR 59 MENUITEM "Paste", FCIDM_SHVIEW_INSERT 60 MENUITEM "Paste as Link", FCIDM_SHVIEW_INSERTLINK 60 MENUITEM "Paste", FCIDM_SHVIEW_INSERT, GRAYED 61 MENUITEM "Paste as Link", FCIDM_SHVIEW_INSERTLINK, GRAYED 61 62 POPUP "New" 62 63 BEGIN 63 MENUITEM "New &Folder", 0x705364 MENUITEM "New &Link", 0x7052 64 MENUITEM "New &Folder", ID_NEWFOLDER 65 MENUITEM "New &Link", 0x7052, GRAYED 65 66 MENUITEM SEPARATOR 66 67 END 67 MENUITEM "Properties", FCIDM_SHVIEW_PROPERTIES 68 MENUITEM "Properties", FCIDM_SHVIEW_PROPERTIES, GRAYED 68 69 END 69 70 END … … 84 85 END 85 86 SHBRSFORFOLDER_MSGBOX DIALOG 15, 40, 128, 152 86 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU87 STYLE WS_THICKFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU 87 88 CAPTION "Choose a Directory:" 88 89 FONT 8, "Helv" … … 94 95 WS_BORDER | WS_TABSTOP, 95 96 4, 4, 120, 120 96 }97 98 /*99 columns in the shellview100 */101 STRINGTABLE DISCARDABLE102 {103 IDS_SHV_COLUMN1 "File"104 IDS_SHV_COLUMN2 "Size"105 IDS_SHV_COLUMN3 "Type"106 IDS_SHV_COLUMN4 "Modified"107 IDS_SHV_COLUMN5 "Attrs"108 IDS_SHV_COLUMN3DV "Size" /* drive view */109 IDS_SHV_COLUMN4DV "Size available" /* drive view */110 97 } 111 98 … … 171 158 0 ICON 172 159 {' 173 00 00 01 00 04 00 10 10 10 00 00 00 00 00 28 01 174 00 00 46 00 00 00 10 10 00 00 00 00 00 00 68 05 175 00 00 6e 01 00 00 20 20 10 00 00 00 00 00 e8 02 176 00 00 d6 06 00 00 20 20 00 00 00 00 00 00 a8 08 177 00 00 be 09 00 00 28 00 00 00 10 00 00 00 20 00 178 00 00 01 00 04 00 00 00 00 00 c0 00 00 00 00 00 179 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 160 00 00 01 00 02 00 20 20 00 00 00 00 00 00 a8 08 161 00 00 26 00 00 00 10 10 00 00 00 00 00 00 68 05 162 00 00 ce 08 00 00 28 00 00 00 20 00 00 00 40 00 163 00 00 01 00 08 00 00 00 00 00 80 04 00 00 00 00 164 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 180 165 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 181 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 80 80 166 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 c0 dc 167 c0 00 f0 ca a6 00 04 04 04 00 08 08 08 00 0c 0c 168 0c 00 11 11 11 00 16 16 16 00 1c 1c 1c 00 22 22 169 22 00 29 29 29 00 55 55 55 00 4d 4d 4d 00 42 42 170 42 00 39 39 39 00 80 7c ff 00 50 50 ff 00 93 00 171 d6 00 ff ec cc 00 c6 d6 ef 00 d6 e7 e7 00 90 a9 172 ad 00 00 00 33 00 00 00 66 00 00 00 99 00 00 00 173 cc 00 00 33 00 00 00 33 33 00 00 33 66 00 00 33 174 99 00 00 33 cc 00 00 33 ff 00 00 66 00 00 00 66 175 33 00 00 66 66 00 00 66 99 00 00 66 cc 00 00 66 176 ff 00 00 99 00 00 00 99 33 00 00 99 66 00 00 99 177 99 00 00 99 cc 00 00 99 ff 00 00 cc 00 00 00 cc 178 33 00 00 cc 66 00 00 cc 99 00 00 cc cc 00 00 cc 179 ff 00 00 ff 66 00 00 ff 99 00 00 ff cc 00 33 00 180 00 00 33 00 33 00 33 00 66 00 33 00 99 00 33 00 181 cc 00 33 00 ff 00 33 33 00 00 33 33 33 00 33 33 182 66 00 33 33 99 00 33 33 cc 00 33 33 ff 00 33 66 183 00 00 33 66 33 00 33 66 66 00 33 66 99 00 33 66 184 cc 00 33 66 ff 00 33 99 00 00 33 99 33 00 33 99 185 66 00 33 99 99 00 33 99 cc 00 33 99 ff 00 33 cc 186 00 00 33 cc 33 00 33 cc 66 00 33 cc 99 00 33 cc 187 cc 00 33 cc ff 00 33 ff 33 00 33 ff 66 00 33 ff 188 99 00 33 ff cc 00 33 ff ff 00 66 00 00 00 66 00 189 33 00 66 00 66 00 66 00 99 00 66 00 cc 00 66 00 190 ff 00 66 33 00 00 66 33 33 00 66 33 66 00 66 33 191 99 00 66 33 cc 00 66 33 ff 00 66 66 00 00 66 66 192 33 00 66 66 66 00 66 66 99 00 66 66 cc 00 66 99 193 00 00 66 99 33 00 66 99 66 00 66 99 99 00 66 99 194 cc 00 66 99 ff 00 66 cc 00 00 66 cc 33 00 66 cc 195 99 00 66 cc cc 00 66 cc ff 00 66 ff 00 00 66 ff 196 33 00 66 ff 99 00 66 ff cc 00 cc 00 ff 00 ff 00 197 cc 00 99 99 00 00 99 33 99 00 99 00 99 00 99 00 198 cc 00 99 00 00 00 99 33 33 00 99 00 66 00 99 33 199 cc 00 99 00 ff 00 99 66 00 00 99 66 33 00 99 33 200 66 00 99 66 99 00 99 66 cc 00 99 33 ff 00 99 99 201 33 00 99 99 66 00 99 99 99 00 99 99 cc 00 99 99 202 ff 00 99 cc 00 00 99 cc 33 00 66 cc 66 00 99 cc 203 99 00 99 cc cc 00 99 cc ff 00 99 ff 00 00 99 ff 204 33 00 99 cc 66 00 99 ff 99 00 99 ff cc 00 99 ff 205 ff 00 cc 00 00 00 99 00 33 00 cc 00 66 00 cc 00 206 99 00 cc 00 cc 00 99 33 00 00 cc 33 33 00 cc 33 207 66 00 cc 33 99 00 cc 33 cc 00 cc 33 ff 00 cc 66 208 00 00 cc 66 33 00 99 66 66 00 cc 66 99 00 cc 66 209 cc 00 99 66 ff 00 cc 99 00 00 cc 99 33 00 cc 99 210 66 00 cc 99 99 00 cc 99 cc 00 cc 99 ff 00 cc cc 211 00 00 cc cc 33 00 cc cc 66 00 cc cc 99 00 cc cc 212 cc 00 cc cc ff 00 cc ff 00 00 cc ff 33 00 99 ff 213 66 00 cc ff 99 00 cc ff cc 00 cc ff ff 00 cc 00 214 33 00 ff 00 66 00 ff 00 99 00 cc 33 00 00 ff 33 215 33 00 ff 33 66 00 ff 33 99 00 ff 33 cc 00 ff 33 216 ff 00 ff 66 00 00 ff 66 33 00 cc 66 66 00 ff 66 217 99 00 ff 66 cc 00 cc 66 ff 00 ff 99 00 00 ff 99 218 33 00 ff 99 66 00 ff 99 99 00 ff 99 cc 00 ff 99 219 ff 00 ff cc 00 00 ff cc 33 00 ff cc 66 00 ff cc 220 99 00 ff cc cc 00 ff cc ff 00 ff ff 33 00 cc ff 221 66 00 ff ff 99 00 ff ff cc 00 66 66 ff 00 66 ff 222 66 00 66 ff ff 00 ff 66 66 00 ff 66 ff 00 ff ff 223 66 00 21 00 a5 00 5f 5f 5f 00 77 77 77 00 86 86 224 86 00 96 96 96 00 cb cb cb 00 b2 b2 b2 00 d7 d7 225 d7 00 dd dd dd 00 e3 e3 e3 00 ea ea ea 00 f1 f1 226 f1 00 f8 f8 f8 00 f0 fb ff 00 a4 a0 a0 00 80 80 182 227 80 00 00 00 ff 00 00 ff 00 00 00 ff ff 00 ff 00 183 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 77 77 184 77 77 77 77 77 77 77 77 77 88 88 88 88 77 77 77 185 78 88 88 88 88 87 78 88 87 88 77 77 f8 88 78 88 186 88 88 88 77 f8 88 7f 88 88 8f f8 88 f8 88 7f 87 187 77 77 f8 77 f8 88 7f 88 88 88 f8 88 f8 88 7f 77 188 77 7f f8 87 f8 88 7f 88 88 88 f8 88 f8 88 7f 77 189 77 77 f8 77 f8 88 7f 88 88 87 f8 88 f8 88 7f 78 190 77 77 f8 ff f8 88 7f 88 88 88 f8 ff ff 87 7f ff 191 ff ff f8 77 77 77 77 77 77 77 77 77 77 77 00 00 192 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 193 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 194 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 195 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 28 00 228 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 00 00 229 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 231 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 232 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 233 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 234 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 235 00 00 00 00 00 00 00 00 00 00 00 00 92 6d 00 00 236 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 237 00 00 00 00 00 00 00 00 00 00 6d 92 dd dd 00 00 238 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 239 00 00 00 00 00 00 00 00 6d 92 dd dd dd dd 00 00 240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 241 00 00 00 00 00 00 92 6d dd dd dd dd dd dd 00 00 242 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 243 00 00 00 00 92 6d dd dd dd dd dd dd dd dd 00 00 244 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 245 00 00 6d 92 dd dd dd dd dd dd dd dd dd dd 00 00 246 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 247 00 00 dd dd dd dd 5f 5f dd dd dd dd dd dd 00 00 248 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 249 00 00 dd dd 5f 5f dd dd dd dd 5f 5f dd dd 00 00 250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 251 00 00 dd dd dd dd dd dd 5f 5f dd dd dd dd 00 00 252 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 253 00 00 ff dd dd dd 5f 5f dd dd dd dd dd dd 00 00 254 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 255 00 00 ff dd 5f 5f dd dd dd dd dd dd dd dd 00 00 256 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 257 00 00 ff dd dd dd dd dd 5f 5f dd dd dd dd 00 00 258 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 259 00 00 ff ff ff dd 5f 5f dd dd dd dd dd dd 00 00 260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 261 00 00 ff ff 5f 5f dd dd dd dd 5f 5f dd dd 00 00 262 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 263 00 00 ff ff ff ff ff dd 5f 5f dd dd dd dd 00 00 264 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 265 00 00 ff ff ff ff 5f 5f dd dd dd dd dd dd 00 00 266 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 267 00 00 ff ff 5f 5f ff ff ff dd 5f 5f dd dd 00 00 268 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 269 00 00 ff ff ff ff ff ff 5f 5f dd dd dd dd 00 00 270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 271 00 00 ff ff ff ff 5f 5f ff ff ff ff dd dd 00 00 272 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 273 00 00 ff 00 00 00 ff ff ff ff 5f 5f ff dd 00 00 274 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 275 00 00 00 ff ff 00 ff ff 5f 5f ff ff ff ff 00 00 276 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 277 00 00 ff ff 00 d6 5f 5f ff ff ff ff ff ff 00 00 278 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 279 00 00 00 ff 00 d6 ff ff ff ff ff ff 00 00 00 00 280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 281 00 00 00 00 00 d6 ff ff ff ff 00 00 00 00 00 00 282 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 283 00 00 00 00 00 d6 d6 ff 00 00 00 00 00 00 00 00 284 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 285 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 286 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 287 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 288 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 289 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 291 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 292 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 293 ff ff ff ff ff ff ff fc 7f ff ff f0 1f ff ff c0 294 07 ff ff 00 01 ff fc 00 00 7f f0 00 00 1f e0 00 295 00 07 e0 00 00 03 e0 00 00 07 e0 00 00 1f e0 00 296 00 7f e0 00 01 ff e0 00 07 ff e0 00 5f ff e0 00 297 7f ff e0 00 7f ff e0 00 7f ff e0 00 7f ff e0 00 298 7f ff e0 00 7f ff e0 00 7f ff e0 00 7f ff e0 00 299 7f ff f0 00 ff ff f8 03 ff ff fc 0f ff ff fe 3f 300 ff ff ff ff ff ff ff ff ff ff ff ff ff ff 28 00 196 301 00 00 10 00 00 00 20 00 00 00 01 00 08 00 00 00 197 00 00 40 01 00 00 00 00 00 00 00 00 00 00 00 01 198 00 00 00 00 00 00 00 00 00 00 00 00 33 00 00 00 199 66 00 00 00 99 00 00 00 cc 00 00 00 ff 00 00 33 200 00 00 00 33 33 00 00 33 66 00 00 33 99 00 00 33 201 cc 00 00 33 ff 00 00 66 00 00 00 66 33 00 00 66 202 66 00 00 66 99 00 00 66 cc 00 00 66 ff 00 00 99 203 00 00 00 99 33 00 00 99 66 00 00 99 99 00 00 99 204 cc 00 00 99 ff 00 00 cc 00 00 00 cc 33 00 00 cc 205 66 00 00 cc 99 00 00 cc cc 00 00 cc ff 00 00 ff 206 00 00 00 ff 33 00 00 ff 66 00 00 ff 99 00 00 ff 207 cc 00 00 ff ff 00 33 00 00 00 33 00 33 00 33 00 302 00 00 40 01 00 00 00 00 00 00 00 00 00 00 00 00 303 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80 304 00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80 305 00 00 c0 c0 c0 00 c0 dc c0 00 f0 ca a6 00 04 04 306 04 00 08 08 08 00 0c 0c 0c 00 11 11 11 00 16 16 307 16 00 1c 1c 1c 00 22 22 22 00 29 29 29 00 55 55 308 55 00 4d 4d 4d 00 42 42 42 00 39 39 39 00 80 7c 309 ff 00 50 50 ff 00 93 00 d6 00 ff ec cc 00 c6 d6 310 ef 00 d6 e7 e7 00 90 a9 ad 00 00 00 33 00 00 00 311 66 00 00 00 99 00 00 00 cc 00 00 33 00 00 00 33 312 33 00 00 33 66 00 00 33 99 00 00 33 cc 00 00 33 313 ff 00 00 66 00 00 00 66 33 00 00 66 66 00 00 66 314 99 00 00 66 cc 00 00 66 ff 00 00 99 00 00 00 99 315 33 00 00 99 66 00 00 99 99 00 00 99 cc 00 00 99 316 ff 00 00 cc 00 00 00 cc 33 00 00 cc 66 00 00 cc 317 99 00 00 cc cc 00 00 cc ff 00 00 ff 66 00 00 ff 318 99 00 00 ff cc 00 33 00 00 00 33 00 33 00 33 00 208 319 66 00 33 00 99 00 33 00 cc 00 33 00 ff 00 33 33 209 320 00 00 33 33 33 00 33 33 66 00 33 33 99 00 33 33 … … 213 324 cc 00 33 99 ff 00 33 cc 00 00 33 cc 33 00 33 cc 214 325 66 00 33 cc 99 00 33 cc cc 00 33 cc ff 00 33 ff 215 00 00 33 ff 33 00 33 ff 66 00 33 ff 99 00 33 ff 216 cc 00 33 ff ff 00 66 00 00 00 66 00 33 00 66 00 217 66 00 66 00 99 00 66 00 cc 00 66 00 ff 00 66 33 218 00 00 66 33 33 00 66 33 66 00 66 33 99 00 66 33 219 cc 00 66 33 ff 00 66 66 00 00 66 66 33 00 66 66 220 66 00 66 66 99 00 66 66 cc 00 66 66 ff 00 66 99 221 00 00 66 99 33 00 66 99 66 00 66 99 99 00 66 99 222 cc 00 66 99 ff 00 66 cc 00 00 66 cc 33 00 66 cc 223 66 00 66 cc 99 00 66 cc cc 00 66 cc ff 00 66 ff 224 00 00 66 ff 33 00 66 ff 66 00 66 ff 99 00 66 ff 225 cc 00 66 ff ff 00 99 00 00 00 99 00 33 00 99 00 226 66 00 99 00 99 00 99 00 cc 00 99 00 ff 00 99 33 227 00 00 99 33 33 00 99 33 66 00 99 33 99 00 99 33 228 cc 00 99 33 ff 00 99 66 00 00 99 66 33 00 99 66 229 66 00 99 66 99 00 99 66 cc 00 99 66 ff 00 99 99 230 00 00 99 99 33 00 99 99 66 00 99 99 99 00 99 99 231 cc 00 99 99 ff 00 99 cc 00 00 99 cc 33 00 99 cc 232 66 00 99 cc 99 00 99 cc cc 00 99 cc ff 00 99 ff 233 00 00 99 ff 33 00 99 ff 66 00 99 ff 99 00 99 ff 234 cc 00 99 ff ff 00 cc 00 00 00 cc 00 33 00 cc 00 235 66 00 cc 00 99 00 cc 00 cc 00 cc 00 ff 00 cc 33 326 33 00 33 ff 66 00 33 ff 99 00 33 ff cc 00 33 ff 327 ff 00 66 00 00 00 66 00 33 00 66 00 66 00 66 00 328 99 00 66 00 cc 00 66 00 ff 00 66 33 00 00 66 33 329 33 00 66 33 66 00 66 33 99 00 66 33 cc 00 66 33 330 ff 00 66 66 00 00 66 66 33 00 66 66 66 00 66 66 331 99 00 66 66 cc 00 66 99 00 00 66 99 33 00 66 99 332 66 00 66 99 99 00 66 99 cc 00 66 99 ff 00 66 cc 333 00 00 66 cc 33 00 66 cc 99 00 66 cc cc 00 66 cc 334 ff 00 66 ff 00 00 66 ff 33 00 66 ff 99 00 66 ff 335 cc 00 cc 00 ff 00 ff 00 cc 00 99 99 00 00 99 33 336 99 00 99 00 99 00 99 00 cc 00 99 00 00 00 99 33 337 33 00 99 00 66 00 99 33 cc 00 99 00 ff 00 99 66 338 00 00 99 66 33 00 99 33 66 00 99 66 99 00 99 66 339 cc 00 99 33 ff 00 99 99 33 00 99 99 66 00 99 99 340 99 00 99 99 cc 00 99 99 ff 00 99 cc 00 00 99 cc 341 33 00 66 cc 66 00 99 cc 99 00 99 cc cc 00 99 cc 342 ff 00 99 ff 00 00 99 ff 33 00 99 cc 66 00 99 ff 343 99 00 99 ff cc 00 99 ff ff 00 cc 00 00 00 99 00 344 33 00 cc 00 66 00 cc 00 99 00 cc 00 cc 00 99 33 236 345 00 00 cc 33 33 00 cc 33 66 00 cc 33 99 00 cc 33 237 cc 00 cc 33 ff 00 cc 66 00 00 cc 66 33 00 cc66238 66 00 cc 66 99 00 cc 66 cc 00 cc66 ff 00 cc 99346 cc 00 cc 33 ff 00 cc 66 00 00 cc 66 33 00 99 66 347 66 00 cc 66 99 00 cc 66 cc 00 99 66 ff 00 cc 99 239 348 00 00 cc 99 33 00 cc 99 66 00 cc 99 99 00 cc 99 240 349 cc 00 cc 99 ff 00 cc cc 00 00 cc cc 33 00 cc cc 241 350 66 00 cc cc 99 00 cc cc cc 00 cc cc ff 00 cc ff 242 00 00 cc ff 33 00 cc ff 66 00 cc ff 99 00 cc ff 243 cc 00 cc ff ff 00 ff 00 00 00 ff 00 33 00 ff 00 244 66 00 ff 00 99 00 ff 00 cc 00 ff 00 ff 00 ff 33 245 00 00 ff 33 33 00 ff 33 66 00 ff 33 99 00 ff 33 246 cc 00 ff 33 ff 00 ff 66 00 00 ff 66 33 00 ff 66 247 66 00 ff 66 99 00 ff 66 cc 00 ff 66 ff 00 ff 99 248 00 00 ff 99 33 00 ff 99 66 00 ff 99 99 00 ff 99 249 cc 00 ff 99 ff 00 ff cc 00 00 ff cc 33 00 ff cc 250 66 00 ff cc 99 00 ff cc cc 00 ff cc ff 00 ff ff 251 00 00 ff ff 33 00 ff ff 66 00 ff ff 99 00 ff ff 252 cc 00 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 253 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 254 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 255 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 256 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 257 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 258 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 259 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 261 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 262 00 00 00 00 00 00 ac ac ac ac ac ac ac ac ac ac 263 ac ac ac ac ac ac ac ac ac ac ac a5 81 81 81 81 264 81 81 81 81 ac ac ac ac ac ac ac 81 81 81 81 81 265 81 81 81 56 81 ab ac 56 56 56 81 ac 81 81 ac ac 266 ac ac d7 56 56 81 ab 81 81 81 81 81 81 81 81 56 267 ac ac d7 81 81 81 ac d7 81 81 81 81 81 d7 d7 56 268 56 81 d7 81 81 81 ac d7 81 ac ac 88 ac ac d7 56 269 ac ac d7 81 81 81 ac d7 56 56 56 56 56 56 d7 56 270 56 56 d7 81 81 81 ac d7 ac ac ac ac ac d7 d7 56 271 81 ac d7 81 81 81 ac d7 56 56 56 56 81 56 d7 56 272 56 56 d7 81 81 81 ac d7 ac ac ac ac ac ac d7 56 273 ac ac d7 7a 81 81 ac d7 56 56 81 56 81 a6 d7 56 274 7b 81 d7 7a 81 81 ac d7 ac 81 ac ac ac ac d7 56 275 d7 d7 d7 81 81 81 ac d7 56 56 81 56 7b 81 d7 56 276 d7 ad ad d7 81 a5 ac d7 d7 d7 d7 d7 d7 d7 d7 81 277 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 278 ac ac ac ac ac ac 00 00 ff ff 00 00 ff ff 00 00 279 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 280 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 281 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 282 ff ff 00 00 ff ff 28 00 00 00 20 00 00 00 40 00 283 00 00 01 00 04 00 00 00 00 00 80 02 00 00 00 00 284 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 351 00 00 cc ff 33 00 99 ff 66 00 cc ff 99 00 cc ff 352 cc 00 cc ff ff 00 cc 00 33 00 ff 00 66 00 ff 00 353 99 00 cc 33 00 00 ff 33 33 00 ff 33 66 00 ff 33 354 99 00 ff 33 cc 00 ff 33 ff 00 ff 66 00 00 ff 66 355 33 00 cc 66 66 00 ff 66 99 00 ff 66 cc 00 cc 66 356 ff 00 ff 99 00 00 ff 99 33 00 ff 99 66 00 ff 99 357 99 00 ff 99 cc 00 ff 99 ff 00 ff cc 00 00 ff cc 358 33 00 ff cc 66 00 ff cc 99 00 ff cc cc 00 ff cc 359 ff 00 ff ff 33 00 cc ff 66 00 ff ff 99 00 ff ff 360 cc 00 66 66 ff 00 66 ff 66 00 66 ff ff 00 ff 66 361 66 00 ff 66 ff 00 ff ff 66 00 21 00 a5 00 5f 5f 362 5f 00 77 77 77 00 86 86 86 00 96 96 96 00 cb cb 363 cb 00 b2 b2 b2 00 d7 d7 d7 00 dd dd dd 00 e3 e3 364 e3 00 ea ea ea 00 f1 f1 f1 00 f8 f8 f8 00 f0 fb 365 ff 00 a4 a0 a0 00 80 80 80 00 00 00 ff 00 00 ff 366 00 00 00 ff ff 00 ff 00 00 00 ff 00 ff 00 ff ff 367 00 00 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 368 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 369 00 00 00 00 00 00 00 00 00 dd dd dd dd dd dd dd 370 dd 00 00 00 00 00 00 00 00 ff dd dd dd dd dd dd 371 dd 00 00 00 00 00 00 00 00 ff 92 92 92 92 92 92 372 dd 00 00 00 00 00 00 00 00 ff ff ff ff dd dd dd 373 dd 00 00 00 00 00 00 00 00 ff 92 92 92 92 92 92 374 dd 00 00 00 00 00 00 00 00 ff ff ff ff ff ff dd 375 dd 00 00 00 00 00 00 00 00 ff 92 92 92 ff 92 92 376 dd 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff 377 dd 00 00 00 00 00 00 00 00 dd dd dd dd 92 92 92 378 dd 00 00 00 00 00 00 00 00 00 00 00 dd ff ff ff 379 dd 00 00 00 00 00 00 00 00 00 ff 00 dd 92 92 92 380 dd 00 00 00 00 00 00 00 00 00 00 00 dd ff ff ff 381 dd 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 382 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 383 00 00 00 00 00 00 ff ff 00 00 c0 0f 00 00 c0 07 384 00 00 c0 03 00 00 c0 01 00 00 c0 07 00 00 c0 0f 385 00 00 c0 0f 00 00 c0 0f 00 00 c0 0f 00 00 c0 0f 386 00 00 c0 0f 00 00 e0 0f 00 00 f0 0f 00 00 f8 0f 387 00 00 ff ff 00 00 388 '} 389 390 /* folder */ 391 3 ICON 392 {' 393 00 00 01 00 02 00 20 20 00 00 00 00 00 00 a8 08 394 00 00 26 00 00 00 10 10 00 00 00 00 00 00 68 05 395 00 00 ce 08 00 00 28 00 00 00 20 00 00 00 40 00 396 00 00 01 00 08 00 00 00 00 00 80 04 00 00 00 00 397 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 285 398 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 286 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 80 80 399 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 c0 dc 400 c0 00 f0 ca a6 00 04 04 04 00 08 08 08 00 0c 0c 401 0c 00 11 11 11 00 16 16 16 00 1c 1c 1c 00 22 22 402 22 00 29 29 29 00 55 55 55 00 4d 4d 4d 00 42 42 403 42 00 39 39 39 00 80 7c ff 00 50 50 ff 00 93 00 404 d6 00 ff ec cc 00 c6 d6 ef 00 d6 e7 e7 00 90 a9 405 ad 00 00 00 33 00 00 00 66 00 00 00 99 00 00 00 406 cc 00 00 33 00 00 00 33 33 00 00 33 66 00 00 33 407 99 00 00 33 cc 00 00 33 ff 00 00 66 00 00 00 66 408 33 00 00 66 66 00 00 66 99 00 00 66 cc 00 00 66 409 ff 00 00 99 00 00 00 99 33 00 00 99 66 00 00 99 410 99 00 00 99 cc 00 00 99 ff 00 00 cc 00 00 00 cc 411 33 00 00 cc 66 00 00 cc 99 00 00 cc cc 00 00 cc 412 ff 00 00 ff 66 00 00 ff 99 00 00 ff cc 00 33 00 413 00 00 33 00 33 00 33 00 66 00 33 00 99 00 33 00 414 cc 00 33 00 ff 00 33 33 00 00 33 33 33 00 33 33 415 66 00 33 33 99 00 33 33 cc 00 33 33 ff 00 33 66 416 00 00 33 66 33 00 33 66 66 00 33 66 99 00 33 66 417 cc 00 33 66 ff 00 33 99 00 00 33 99 33 00 33 99 418 66 00 33 99 99 00 33 99 cc 00 33 99 ff 00 33 cc 419 00 00 33 cc 33 00 33 cc 66 00 33 cc 99 00 33 cc 420 cc 00 33 cc ff 00 33 ff 33 00 33 ff 66 00 33 ff 421 99 00 33 ff cc 00 33 ff ff 00 66 00 00 00 66 00 422 33 00 66 00 66 00 66 00 99 00 66 00 cc 00 66 00 423 ff 00 66 33 00 00 66 33 33 00 66 33 66 00 66 33 424 99 00 66 33 cc 00 66 33 ff 00 66 66 00 00 66 66 425 33 00 66 66 66 00 66 66 99 00 66 66 cc 00 66 99 426 00 00 66 99 33 00 66 99 66 00 66 99 99 00 66 99 427 cc 00 66 99 ff 00 66 cc 00 00 66 cc 33 00 66 cc 428 99 00 66 cc cc 00 66 cc ff 00 66 ff 00 00 66 ff 429 33 00 66 ff 99 00 66 ff cc 00 cc 00 ff 00 ff 00 430 cc 00 99 99 00 00 99 33 99 00 99 00 99 00 99 00 431 cc 00 99 00 00 00 99 33 33 00 99 00 66 00 99 33 432 cc 00 99 00 ff 00 99 66 00 00 99 66 33 00 99 33 433 66 00 99 66 99 00 99 66 cc 00 99 33 ff 00 99 99 434 33 00 99 99 66 00 99 99 99 00 99 99 cc 00 99 99 435 ff 00 99 cc 00 00 99 cc 33 00 66 cc 66 00 99 cc 436 99 00 99 cc cc 00 99 cc ff 00 99 ff 00 00 99 ff 437 33 00 99 cc 66 00 99 ff 99 00 99 ff cc 00 99 ff 438 ff 00 cc 00 00 00 99 00 33 00 cc 00 66 00 cc 00 439 99 00 cc 00 cc 00 99 33 00 00 cc 33 33 00 cc 33 440 66 00 cc 33 99 00 cc 33 cc 00 cc 33 ff 00 cc 66 441 00 00 cc 66 33 00 99 66 66 00 cc 66 99 00 cc 66 442 cc 00 99 66 ff 00 cc 99 00 00 cc 99 33 00 cc 99 443 66 00 cc 99 99 00 cc 99 cc 00 cc 99 ff 00 cc cc 444 00 00 cc cc 33 00 cc cc 66 00 cc cc 99 00 cc cc 445 cc 00 cc cc ff 00 cc ff 00 00 cc ff 33 00 99 ff 446 66 00 cc ff 99 00 cc ff cc 00 cc ff ff 00 cc 00 447 33 00 ff 00 66 00 ff 00 99 00 cc 33 00 00 ff 33 448 33 00 ff 33 66 00 ff 33 99 00 ff 33 cc 00 ff 33 449 ff 00 ff 66 00 00 ff 66 33 00 cc 66 66 00 ff 66 450 99 00 ff 66 cc 00 cc 66 ff 00 ff 99 00 00 ff 99 451 33 00 ff 99 66 00 ff 99 99 00 ff 99 cc 00 ff 99 452 ff 00 ff cc 00 00 ff cc 33 00 ff cc 66 00 ff cc 453 99 00 ff cc cc 00 ff cc ff 00 ff ff 33 00 cc ff 454 66 00 ff ff 99 00 ff ff cc 00 66 66 ff 00 66 ff 455 66 00 66 ff ff 00 ff 66 66 00 ff 66 ff 00 ff ff 456 66 00 21 00 a5 00 5f 5f 5f 00 77 77 77 00 86 86 457 86 00 96 96 96 00 cb cb cb 00 b2 b2 b2 00 d7 d7 458 d7 00 dd dd dd 00 e3 e3 e3 00 ea ea ea 00 f1 f1 459 f1 00 f8 f8 f8 00 f0 fb ff 00 a4 a0 a0 00 80 80 287 460 80 00 00 00 ff 00 00 ff 00 00 00 ff ff 00 ff 00 288 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 77 77 289 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 290 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 291 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 292 77 77 77 78 88 88 88 88 88 88 88 88 77 77 77 77 293 77 77 78 88 88 88 88 88 88 88 88 00 77 77 77 77 294 77 77 7f ff ff ff ff ff ff ff ff 80 88 87 77 88 295 88 88 8f ff ff ff ff ff ff ff ff 80 80 87 77 00 296 00 00 88 88 88 88 88 88 88 87 ff 88 f8 87 78 88 297 88 88 88 88 88 88 88 00 87 7f ff 88 f8 87 77 ff 298 ff ff ff ff ff ff ff 80 87 7f ff 88 f8 87 77 ff 299 ff ff ff ff ff ff ff 80 88 87 ff 88 f8 87 77 ff 300 88 88 88 88 88 ff ff 80 88 88 ff 88 f8 87 77 ff 301 88 77 77 77 77 77 ff 80 77 7f ff 88 f8 87 77 ff 302 88 77 77 77 77 77 ff 80 77 7f ff 88 f8 87 77 ff 303 88 88 88 88 88 88 ff 80 88 88 ff 88 f8 87 77 ff 304 88 88 88 88 88 88 ff 80 88 88 ff 88 f8 87 77 ff 305 87 78 77 78 f7 7f ff 80 88 77 ff 88 f8 87 77 ff 306 87 78 77 78 f7 7f ff 80 88 77 ff 88 f8 87 77 ff 307 88 88 88 88 88 87 ff 80 88 88 ff 88 f8 87 77 ff 308 88 88 88 88 88 88 ff 80 88 87 ff 88 f8 87 77 ff 309 77 78 77 78 78 77 ff 80 77 87 ff 88 f8 87 77 ff 310 77 78 77 78 78 77 ff 80 77 87 ff 88 f8 87 77 ff 311 88 88 88 88 78 7f ff 80 88 88 ff 86 f8 87 77 ff 312 88 88 88 88 88 87 ff 80 78 7f ff 86 f8 87 77 ff 313 77 88 78 77 77 87 ff 80 ff ff ff 86 f8 87 77 ff 314 77 88 78 77 77 87 ff 80 ff ff ff 88 f8 87 77 ff 315 88 88 88 88 88 88 ff 84 f7 77 77 7f f8 87 77 ff 316 88 88 88 88 78 7f ff 80 ff ff ff ff f8 77 77 ff 317 ff ff ff ff ff ff ff 88 77 77 77 77 77 77 77 ff 318 ff ff ff ff ff ff ff 88 77 77 77 77 77 77 77 77 319 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 320 77 77 77 77 77 77 77 77 77 77 77 77 77 77 00 00 321 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 322 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 323 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 324 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 325 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 326 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 327 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 328 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 329 00 00 20 00 00 00 40 00 00 00 01 00 08 00 00 00 330 00 00 80 04 00 00 00 00 00 00 00 00 00 00 00 01 331 00 00 00 00 00 00 00 00 00 00 00 00 33 00 00 00 332 66 00 00 00 99 00 00 00 cc 00 00 00 ff 00 00 33 333 00 00 00 33 33 00 00 33 66 00 00 33 99 00 00 33 334 cc 00 00 33 ff 00 00 66 00 00 00 66 33 00 00 66 335 66 00 00 66 99 00 00 66 cc 00 00 66 ff 00 00 99 336 00 00 00 99 33 00 00 99 66 00 00 99 99 00 00 99 337 cc 00 00 99 ff 00 00 cc 00 00 00 cc 33 00 00 cc 338 66 00 00 cc 99 00 00 cc cc 00 00 cc ff 00 00 ff 339 00 00 00 ff 33 00 00 ff 66 00 00 ff 99 00 00 ff 340 cc 00 00 ff ff 00 33 00 00 00 33 00 33 00 33 00 461 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 00 00 462 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 463 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 464 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 465 00 00 6d 92 00 86 00 00 00 00 00 00 00 00 00 00 466 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 467 92 6d d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 468 00 00 00 00 00 00 00 00 00 00 00 00 00 00 92 6d 469 d6 d6 d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 470 00 00 00 00 00 00 00 00 00 00 00 00 6d 92 d6 d6 471 d6 d6 d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 472 00 00 00 00 00 00 00 00 00 00 6d 92 d6 d6 dd d6 473 d6 d6 d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 474 00 00 00 00 00 00 00 00 92 6d d6 dd d6 d6 d6 d6 475 d6 d6 d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 476 00 00 00 00 00 00 92 6d dd d6 d6 d6 d6 d6 d6 d6 477 d6 d6 d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 478 00 00 00 00 6d 92 dd d6 d6 dd dd d6 d6 dd d6 d6 479 d6 d6 d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 480 00 00 6d 92 dd dd dd dd dd d6 dd d6 d6 d6 d6 d6 481 d6 d6 d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 482 92 6d dd dd dd d6 dd d6 dd dd d6 dd dd d6 d6 d6 483 d6 d6 d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 484 dd dd dd dd dd dd d6 dd dd d6 dd d6 dd d6 d6 d6 485 d6 d6 d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 486 dd dd dd dd dd dd dd dd dd dd dd dd d6 dd d6 dd 487 d6 d6 d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 488 dd dd dd dd dd dd dd d6 dd dd d6 d6 dd d6 d6 d6 489 d6 d6 d6 d6 00 86 00 00 00 00 00 00 00 00 00 00 490 dd dd dd dd dd dd dd dd dd d6 dd dd d6 dd dd dd 491 d6 d6 d6 d6 00 d6 00 00 00 00 00 00 00 00 00 00 492 dd dd dd dd dd dd dd dd dd dd dd dd dd d6 d6 dd 493 d6 dd d6 d6 00 d6 00 00 00 00 00 00 00 00 00 00 494 dd dd dd dd dd dd dd dd dd dd d6 d6 dd dd dd dd 495 d6 d6 d6 d6 00 d6 00 00 00 00 00 00 00 00 00 00 496 dd dd dd dd dd dd dd dd d6 dd dd dd dd dd d6 dd 497 d6 d6 00 00 d6 d6 00 00 00 00 00 00 00 00 00 00 498 dd dd dd dd dd dd dd dd dd dd dd d6 dd dd dd d6 499 00 00 d6 d6 d6 d6 00 00 00 00 00 00 00 00 00 00 500 dd dd dd dd dd dd dd dd dd dd dd dd dd d6 00 00 501 d6 d6 d6 d6 00 00 00 00 00 00 00 00 00 00 00 00 502 dd dd dd dd dd dd dd dd dd dd dd dd 00 00 d6 d6 503 d6 d6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 504 dd dd dd dd dd dd dd dd dd dd 00 00 d6 d6 d6 d6 505 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 506 dd dd dd dd dd dd dd dd 00 00 d6 d6 d6 d6 00 00 507 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 508 dd dd dd dd dd dd 00 00 d6 d6 d6 d6 00 00 00 00 509 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 510 dd dd dd dd 00 00 d6 d6 d6 d6 d6 00 00 00 00 00 511 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 512 dd dd 00 00 d6 d6 d6 d6 d6 d6 d6 00 00 00 00 00 513 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 514 00 00 d6 d6 d6 d6 d6 d6 d6 d6 00 00 00 00 00 00 515 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 516 00 00 d6 d6 d6 d6 d6 d6 d6 d6 00 00 00 00 00 00 517 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 518 00 00 00 d6 d6 d6 d6 d6 00 00 00 00 00 00 00 00 519 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 520 00 00 00 d6 d6 00 00 00 00 00 00 00 00 00 00 00 521 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 522 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 523 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 524 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 525 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 526 f0 ff ff ff c0 7f ff ff 00 3f ff fc 00 1f ff f0 527 00 0f ff c0 00 03 ff 00 00 01 fc 00 00 00 f0 00 528 00 01 c0 00 00 07 80 00 00 0f 80 00 00 3f 80 00 529 00 7f 80 00 00 7f 80 00 00 7f 80 00 00 7f 80 00 530 00 7f 80 00 00 7f 80 00 00 7f 80 00 00 ff 80 00 531 03 ff 80 00 0f ff 80 00 3f ff 80 00 ff ff 80 03 532 ff ff 80 03 ff ff 80 03 ff ff e0 07 ff ff e0 07 533 ff ff f0 1f ff ff f8 ff ff ff ff ff ff ff 28 00 534 00 00 10 00 00 00 20 00 00 00 01 00 08 00 00 00 535 00 00 40 01 00 00 00 00 00 00 00 00 00 00 00 00 536 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80 537 00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80 538 00 00 c0 c0 c0 00 c0 dc c0 00 f0 ca a6 00 04 04 539 04 00 08 08 08 00 0c 0c 0c 00 11 11 11 00 16 16 540 16 00 1c 1c 1c 00 22 22 22 00 29 29 29 00 55 55 541 55 00 4d 4d 4d 00 42 42 42 00 39 39 39 00 80 7c 542 ff 00 50 50 ff 00 93 00 d6 00 ff ec cc 00 c6 d6 543 ef 00 d6 e7 e7 00 90 a9 ad 00 00 00 33 00 00 00 544 66 00 00 00 99 00 00 00 cc 00 00 33 00 00 00 33 545 33 00 00 33 66 00 00 33 99 00 00 33 cc 00 00 33 546 ff 00 00 66 00 00 00 66 33 00 00 66 66 00 00 66 547 99 00 00 66 cc 00 00 66 ff 00 00 99 00 00 00 99 548 33 00 00 99 66 00 00 99 99 00 00 99 cc 00 00 99 549 ff 00 00 cc 00 00 00 cc 33 00 00 cc 66 00 00 cc 550 99 00 00 cc cc 00 00 cc ff 00 00 ff 66 00 00 ff 551 99 00 00 ff cc 00 33 00 00 00 33 00 33 00 33 00 341 552 66 00 33 00 99 00 33 00 cc 00 33 00 ff 00 33 33 342 553 00 00 33 33 33 00 33 33 66 00 33 33 99 00 33 33 … … 346 557 cc 00 33 99 ff 00 33 cc 00 00 33 cc 33 00 33 cc 347 558 66 00 33 cc 99 00 33 cc cc 00 33 cc ff 00 33 ff 348 00 00 33 ff 33 00 33 ff 66 00 33 ff 99 00 33 ff 349 cc 00 33 ff ff 00 66 00 00 00 66 00 33 00 66 00 350 66 00 66 00 99 00 66 00 cc 00 66 00 ff 00 66 33 351 00 00 66 33 33 00 66 33 66 00 66 33 99 00 66 33 352 cc 00 66 33 ff 00 66 66 00 00 66 66 33 00 66 66 353 66 00 66 66 99 00 66 66 cc 00 66 66 ff 00 66 99 559 33 00 33 ff 66 00 33 ff 99 00 33 ff cc 00 33 ff 560 ff 00 66 00 00 00 66 00 33 00 66 00 66 00 66 00 561 99 00 66 00 cc 00 66 00 ff 00 66 33 00 00 66 33 562 33 00 66 33 66 00 66 33 99 00 66 33 cc 00 66 33 563 ff 00 66 66 00 00 66 66 33 00 66 66 66 00 66 66 564 99 00 66 66 cc 00 66 99 00 00 66 99 33 00 66 99 565 66 00 66 99 99 00 66 99 cc 00 66 99 ff 00 66 cc 566 00 00 66 cc 33 00 66 cc 99 00 66 cc cc 00 66 cc 567 ff 00 66 ff 00 00 66 ff 33 00 66 ff 99 00 66 ff 568 cc 00 cc 00 ff 00 ff 00 cc 00 99 99 00 00 99 33 569 99 00 99 00 99 00 99 00 cc 00 99 00 00 00 99 33 570 33 00 99 00 66 00 99 33 cc 00 99 00 ff 00 99 66 571 00 00 99 66 33 00 99 33 66 00 99 66 99 00 99 66 572 cc 00 99 33 ff 00 99 99 33 00 99 99 66 00 99 99 573 99 00 99 99 cc 00 99 99 ff 00 99 cc 00 00 99 cc 574 33 00 66 cc 66 00 99 cc 99 00 99 cc cc 00 99 cc 575 ff 00 99 ff 00 00 99 ff 33 00 99 cc 66 00 99 ff 576 99 00 99 ff cc 00 99 ff ff 00 cc 00 00 00 99 00 577 33 00 cc 00 66 00 cc 00 99 00 cc 00 cc 00 99 33 578 00 00 cc 33 33 00 cc 33 66 00 cc 33 99 00 cc 33 579 cc 00 cc 33 ff 00 cc 66 00 00 cc 66 33 00 99 66 580 66 00 cc 66 99 00 cc 66 cc 00 99 66 ff 00 cc 99 581 00 00 cc 99 33 00 cc 99 66 00 cc 99 99 00 cc 99 582 cc 00 cc 99 ff 00 cc cc 00 00 cc cc 33 00 cc cc 583 66 00 cc cc 99 00 cc cc cc 00 cc cc ff 00 cc ff 584 00 00 cc ff 33 00 99 ff 66 00 cc ff 99 00 cc ff 585 cc 00 cc ff ff 00 cc 00 33 00 ff 00 66 00 ff 00 586 99 00 cc 33 00 00 ff 33 33 00 ff 33 66 00 ff 33 587 99 00 ff 33 cc 00 ff 33 ff 00 ff 66 00 00 ff 66 588 33 00 cc 66 66 00 ff 66 99 00 ff 66 cc 00 cc 66 589 ff 00 ff 99 00 00 ff 99 33 00 ff 99 66 00 ff 99 590 99 00 ff 99 cc 00 ff 99 ff 00 ff cc 00 00 ff cc 591 33 00 ff cc 66 00 ff cc 99 00 ff cc cc 00 ff cc 592 ff 00 ff ff 33 00 cc ff 66 00 ff ff 99 00 ff ff 593 cc 00 66 66 ff 00 66 ff 66 00 66 ff ff 00 ff 66 594 66 00 ff 66 ff 00 ff ff 66 00 21 00 a5 00 5f 5f 595 5f 00 77 77 77 00 86 86 86 00 96 96 96 00 cb cb 596 cb 00 b2 b2 b2 00 d7 d7 d7 00 dd dd dd 00 e3 e3 597 e3 00 ea ea ea 00 f1 f1 f1 00 f8 f8 f8 00 f0 fb 598 ff 00 a4 a0 a0 00 80 80 80 00 00 00 ff 00 00 ff 599 00 00 00 ff ff 00 ff 00 00 00 ff 00 ff 00 ff ff 600 00 00 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 601 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 602 00 00 00 00 00 00 00 00 92 6d 92 92 6d 92 92 6d 603 92 92 6d 92 6d 00 00 00 00 00 00 00 00 00 00 00 604 00 00 00 00 92 00 00 00 ff dd dd dd dd d6 d6 d6 605 d6 d6 d6 00 92 00 00 00 ff dd dd dd dd dd dd d6 606 d6 d6 d6 00 6d 00 00 00 ff dd dd dd dd dd dd dd 607 d6 d6 d6 00 92 00 00 00 ff dd dd dd dd dd dd dd 608 d6 d6 d6 00 92 00 00 00 ff dd dd dd dd dd dd dd 609 d6 d6 d6 00 6d 00 00 00 ff dd dd dd dd dd dd dd 610 dd dd d6 00 92 00 00 00 ff ff ff ff ff ff ff ff 611 ff ff c3 00 00 00 00 00 d6 d6 d6 d6 d6 d6 d6 00 612 00 00 00 00 00 00 00 00 00 d6 d6 d6 d6 d6 00 00 613 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 614 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 615 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 616 00 00 00 00 00 00 ff ff 00 00 ff ff 00 00 c0 01 617 00 00 80 01 00 00 80 01 00 00 80 01 00 00 80 01 618 00 00 80 01 00 00 80 01 00 00 80 01 00 00 80 03 619 00 00 80 03 00 00 c0 7f 00 00 e0 ff 00 00 ff ff 620 00 00 ff ff 00 00 621 '} 622 623 /* drive */ 624 8 ICON 625 {' 626 00 00 01 00 02 00 20 20 00 00 00 00 00 00 a8 08 627 00 00 26 00 00 00 10 10 00 00 00 00 00 00 68 05 628 00 00 ce 08 00 00 28 00 00 00 20 00 00 00 40 00 629 00 00 01 00 08 00 00 00 00 00 80 04 00 00 00 00 630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 631 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 632 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 c0 dc 633 c0 00 f0 ca a6 00 04 04 04 00 08 08 08 00 0c 0c 634 0c 00 11 11 11 00 16 16 16 00 1c 1c 1c 00 22 22 635 22 00 29 29 29 00 55 55 55 00 4d 4d 4d 00 42 42 636 42 00 39 39 39 00 80 7c ff 00 50 50 ff 00 93 00 637 d6 00 ff ec cc 00 c6 d6 ef 00 d6 e7 e7 00 90 a9 638 ad 00 00 00 33 00 00 00 66 00 00 00 99 00 00 00 639 cc 00 00 33 00 00 00 33 33 00 00 33 66 00 00 33 640 99 00 00 33 cc 00 00 33 ff 00 00 66 00 00 00 66 641 33 00 00 66 66 00 00 66 99 00 00 66 cc 00 00 66 642 ff 00 00 99 00 00 00 99 33 00 00 99 66 00 00 99 643 99 00 00 99 cc 00 00 99 ff 00 00 cc 00 00 00 cc 644 33 00 00 cc 66 00 00 cc 99 00 00 cc cc 00 00 cc 645 ff 00 00 ff 66 00 00 ff 99 00 00 ff cc 00 33 00 646 00 00 33 00 33 00 33 00 66 00 33 00 99 00 33 00 647 cc 00 33 00 ff 00 33 33 00 00 33 33 33 00 33 33 648 66 00 33 33 99 00 33 33 cc 00 33 33 ff 00 33 66 649 00 00 33 66 33 00 33 66 66 00 33 66 99 00 33 66 650 cc 00 33 66 ff 00 33 99 00 00 33 99 33 00 33 99 651 66 00 33 99 99 00 33 99 cc 00 33 99 ff 00 33 cc 652 00 00 33 cc 33 00 33 cc 66 00 33 cc 99 00 33 cc 653 cc 00 33 cc ff 00 33 ff 33 00 33 ff 66 00 33 ff 654 99 00 33 ff cc 00 33 ff ff 00 66 00 00 00 66 00 655 33 00 66 00 66 00 66 00 99 00 66 00 cc 00 66 00 656 ff 00 66 33 00 00 66 33 33 00 66 33 66 00 66 33 657 99 00 66 33 cc 00 66 33 ff 00 66 66 00 00 66 66 658 33 00 66 66 66 00 66 66 99 00 66 66 cc 00 66 99 354 659 00 00 66 99 33 00 66 99 66 00 66 99 99 00 66 99 355 660 cc 00 66 99 ff 00 66 cc 00 00 66 cc 33 00 66 cc 356 66 00 66 cc 99 00 66 cc cc 00 66 cc ff 00 66 ff 357 00 00 66 ff 33 00 66 ff 66 00 66 ff 99 00 66 ff 358 cc 00 66 ff ff 00 99 00 00 00 99 00 33 00 99 00 359 66 00 99 00 99 00 99 00 cc 00 99 00 ff 00 99 33 360 00 00 99 33 33 00 99 33 66 00 99 33 99 00 99 33 361 cc 00 99 33 ff 00 99 66 00 00 99 66 33 00 99 66 362 66 00 99 66 99 00 99 66 cc 00 99 66 ff 00 99 99 363 00 00 99 99 33 00 99 99 66 00 99 99 99 00 99 99 364 cc 00 99 99 ff 00 99 cc 00 00 99 cc 33 00 99 cc 365 66 00 99 cc 99 00 99 cc cc 00 99 cc ff 00 99 ff 366 00 00 99 ff 33 00 99 ff 66 00 99 ff 99 00 99 ff 367 cc 00 99 ff ff 00 cc 00 00 00 cc 00 33 00 cc 00 368 66 00 cc 00 99 00 cc 00 cc 00 cc 00 ff 00 cc 33 369 00 00 cc 33 33 00 cc 33 66 00 cc 33 99 00 cc 33 370 cc 00 cc 33 ff 00 cc 66 00 00 cc 66 33 00 cc 66 371 66 00 cc 66 99 00 cc 66 cc 00 cc 66 ff 00 cc 99 372 00 00 cc 99 33 00 cc 99 66 00 cc 99 99 00 cc 99 373 cc 00 cc 99 ff 00 cc cc 00 00 cc cc 33 00 cc cc 374 66 00 dc c0 b2 00 cc cc cc 00 cc cc ff 00 cc ff 375 00 00 cc ff 33 00 cc ff 66 00 cc ff 99 00 cc ff 376 cc 00 cc ff ff 00 ff 00 00 00 ff 00 33 00 ff 00 377 66 00 ff 00 99 00 ff 00 cc 00 ff 00 ff 00 ff 33 378 00 00 ff 33 33 00 ff 33 66 00 ff 33 99 00 ff 33 379 cc 00 ff 33 ff 00 ff 66 00 00 ff 66 33 00 ff 66 380 66 00 ff 66 99 00 ff 66 cc 00 ff 66 ff 00 ff 99 381 00 00 ff 99 33 00 ff 99 66 00 ff 99 99 00 ff 99 382 cc 00 ff 99 ff 00 ff cc 00 00 ff cc 33 00 ff cc 383 66 00 ff cc 99 00 ff cc cc 00 ff cc ff 00 ff ff 384 00 00 ff ff 33 00 ff ff 66 00 ff ff 99 00 ff ff 385 cc 00 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 386 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 387 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 388 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 389 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 391 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 392 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 393 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 394 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 395 00 00 00 00 00 00 ac ac ac ac ac ac ac ac ac ac 396 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 397 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 398 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 399 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 400 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 401 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 402 a5 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 403 56 56 ac ac ac ac ac ac ac ac ac ac ac ac ac 81 404 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 405 2b 2b ac ac ac ac ac ac ac ac ac ac ac ac ac d7 406 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 407 81 2b 56 56 81 ac ac ac 81 81 81 81 81 81 81 d7 408 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 409 81 2b 56 00 56 ac ac ac 2b 2b 2b 2b 2b 2b 56 81 410 81 81 56 56 56 56 57 56 57 56 81 81 56 ac d7 d7 411 81 56 d7 56 56 ac ac 81 56 56 56 56 56 56 56 56 412 56 56 56 56 56 56 56 56 2b 2b 81 ac ac d7 d7 d7 413 81 56 d7 56 56 ac ac ac d7 d7 d7 d7 d7 d7 d7 d7 414 d7 d7 d7 d7 d7 d7 d7 d7 81 2b 81 ac ac d7 d7 d7 415 81 56 d7 56 56 ac ac ac d7 d7 d7 d7 d7 d7 d7 d7 416 d7 d7 d7 d7 d7 d7 d7 d7 81 2b 56 56 56 ac d7 d7 417 81 56 d7 56 56 ac ac ac d7 d7 56 56 56 56 56 56 418 56 56 56 56 d7 d7 d7 d7 81 2b 56 56 56 81 d7 d7 419 81 56 d7 56 56 ac ac ac d7 d7 81 81 ac ac ac 88 420 88 88 ac ac 88 ac d7 d7 81 2b ac ac ac d7 d7 d7 421 81 56 d7 56 56 ac ac ac d7 d7 81 81 ac ac ac ac 422 ac ac ac ac ac ac d7 d7 81 2b ac ac ac d7 d7 d7 423 81 56 d7 56 56 ac ac ac d7 d7 56 81 56 56 56 56 424 56 81 56 81 56 56 d7 d7 81 00 56 56 56 81 d7 d7 425 81 56 d7 56 56 ac ac ac d7 d7 56 56 56 56 56 56 426 56 56 56 56 56 81 d7 d7 81 00 81 56 56 56 d7 d7 427 81 56 d7 56 56 ac ac ac d7 d7 81 ac ac 81 ac ac 428 ac 81 ad ac ac d7 d7 d7 81 2b 81 81 ac ac d7 d7 429 81 56 d7 56 56 ac ac ac d7 d7 81 ac ac 81 ac ac 430 ac 81 ad ac ac d7 d7 d7 81 2b 81 81 ac ac d7 d7 431 81 56 d7 56 56 ac ac ac d7 d7 56 56 56 56 81 56 432 56 56 81 56 56 82 d7 d7 81 2b 56 56 56 56 d7 d7 433 81 56 d7 56 56 ac ac ac d7 d7 56 81 56 56 56 56 434 56 81 56 81 56 56 d7 d7 81 00 81 56 56 82 d7 d7 435 81 56 d7 56 56 ac ac ac d7 d7 ac ac ac 81 ac ac 436 ac 81 ac 81 ac ac d7 d7 81 2b ac ac 81 ac d7 d7 437 81 56 d7 56 56 ac ac ac d7 d7 ac ac ac 81 ac ac 438 ac 81 ac 81 ac ac d7 d7 81 2b ac ac 81 ac d7 d7 439 81 56 d7 56 56 ac ac ac d7 d7 56 56 56 56 81 81 440 56 56 ac 56 a6 d7 d7 d7 81 00 56 56 56 81 d7 d7 441 81 55 d7 56 56 ac ac ac d7 d7 56 56 56 56 81 56 442 56 56 81 56 56 82 d7 d7 81 00 ac 56 a6 d7 d7 d7 443 81 55 d7 56 56 ac ac ac d7 d7 ac ac 81 81 ac 81 444 ac ac ac ac 81 ac d7 d7 81 2b d7 d7 d7 d7 d7 d7 445 81 55 d7 56 56 ac ac ac d7 d7 ac ac 81 81 ac 81 446 ac ac ac ac 81 ac d7 d7 81 2b d7 d7 d7 d7 d7 d7 447 81 81 d7 56 56 ac ac ac d7 d7 56 56 56 56 56 56 448 56 56 56 56 56 81 d7 d7 81 4f d7 ac ac ac ac ac 449 ac d7 d7 56 56 ac ac ac d7 d7 56 56 56 56 81 81 450 56 56 ac 56 a6 d7 d7 d7 81 2b d7 d7 d7 d7 d7 d7 451 d7 d7 d7 56 a5 ac ac ac d7 d7 d7 d7 d7 d7 d7 d7 452 d7 d7 d7 d7 d7 d7 d7 d7 81 80 ac ac ac ac ac ac 453 ac ac ac ac ac ac ac ac d7 d7 d7 d7 d7 d7 d7 d7 454 d7 d7 d7 d7 d7 d7 d7 d7 81 80 ac ac ac ac ac ac 455 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 456 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 457 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 458 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 459 ac ac ac ac ac ac 00 00 00 00 00 00 00 00 00 00 460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 461 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 462 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 463 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 464 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 465 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 466 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 467 00 00 00 00 00 00 468 '} 469 470 /* folder */ 471 3 ICON 472 {' 473 00 00 01 00 04 00 10 10 10 00 00 00 00 00 28 01 474 00 00 46 00 00 00 10 10 00 00 00 00 00 00 68 05 475 00 00 6e 01 00 00 20 20 10 00 00 00 00 00 e8 02 476 00 00 d6 06 00 00 20 20 00 00 00 00 00 00 a8 08 477 00 00 be 09 00 00 28 00 00 00 10 00 00 00 20 00 478 00 00 01 00 04 00 00 00 00 00 c0 00 00 00 00 00 479 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 480 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 481 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 80 80 661 99 00 66 cc cc 00 66 cc ff 00 66 ff 00 00 66 ff 662 33 00 66 ff 99 00 66 ff cc 00 cc 00 ff 00 ff 00 663 cc 00 99 99 00 00 99 33 99 00 99 00 99 00 99 00 664 cc 00 99 00 00 00 99 33 33 00 99 00 66 00 99 33 665 cc 00 99 00 ff 00 99 66 00 00 99 66 33 00 99 33 666 66 00 99 66 99 00 99 66 cc 00 99 33 ff 00 99 99 667 33 00 99 99 66 00 99 99 99 00 99 99 cc 00 99 99 668 ff 00 99 cc 00 00 99 cc 33 00 66 cc 66 00 99 cc 669 99 00 99 cc cc 00 99 cc ff 00 99 ff 00 00 99 ff 670 33 00 99 cc 66 00 99 ff 99 00 99 ff cc 00 99 ff 671 ff 00 cc 00 00 00 99 00 33 00 cc 00 66 00 cc 00 672 99 00 cc 00 cc 00 99 33 00 00 cc 33 33 00 cc 33 673 66 00 cc 33 99 00 cc 33 cc 00 cc 33 ff 00 cc 66 674 00 00 cc 66 33 00 99 66 66 00 cc 66 99 00 cc 66 675 cc 00 99 66 ff 00 cc 99 00 00 cc 99 33 00 cc 99 676 66 00 cc 99 99 00 cc 99 cc 00 cc 99 ff 00 cc cc 677 00 00 cc cc 33 00 cc cc 66 00 cc cc 99 00 cc cc 678 cc 00 cc cc ff 00 cc ff 00 00 cc ff 33 00 99 ff 679 66 00 cc ff 99 00 cc ff cc 00 cc ff ff 00 cc 00 680 33 00 ff 00 66 00 ff 00 99 00 cc 33 00 00 ff 33 681 33 00 ff 33 66 00 ff 33 99 00 ff 33 cc 00 ff 33 682 ff 00 ff 66 00 00 ff 66 33 00 cc 66 66 00 ff 66 683 99 00 ff 66 cc 00 cc 66 ff 00 ff 99 00 00 ff 99 684 33 00 ff 99 66 00 ff 99 99 00 ff 99 cc 00 ff 99 685 ff 00 ff cc 00 00 ff cc 33 00 ff cc 66 00 ff cc 686 99 00 ff cc cc 00 ff cc ff 00 ff ff 33 00 cc ff 687 66 00 ff ff 99 00 ff ff cc 00 66 66 ff 00 66 ff 688 66 00 66 ff ff 00 ff 66 66 00 ff 66 ff 00 ff ff 689 66 00 21 00 a5 00 5f 5f 5f 00 77 77 77 00 86 86 690 86 00 96 96 96 00 cb cb cb 00 b2 b2 b2 00 d7 d7 691 d7 00 dd dd dd 00 e3 e3 e3 00 ea ea ea 00 f1 f1 692 f1 00 f8 f8 f8 00 f0 fb ff 00 a4 a0 a0 00 80 80 482 693 80 00 00 00 ff 00 00 ff 00 00 00 ff ff 00 ff 00 483 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 ff ff 484 ff ff ff 80 08 ff ff ff ff ff 80 80 30 08 ff ff 485 ff 80 88 80 30 8f ff ff 80 88 88 80 3f ff ff 80 486 88 88 88 80 3f ff 80 87 77 88 88 80 3f ff 87 77 487 77 78 88 80 3f ff 87 77 77 77 88 80 3f ff 87 77 488 77 77 78 80 3f ff 8f 77 77 77 77 81 3f ff 8f f7 489 77 78 10 37 8f ff 8f ff 77 83 87 78 ff ff 8f ff 490 78 37 77 88 ff ff 8f 78 37 88 88 8f ff ff 88 37 491 88 ff ff ff ff ff f8 88 ff ff ff ff ff ff 00 00 492 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 493 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 494 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 495 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 28 00 694 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 00 00 695 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 696 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 697 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6d 6d 698 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 699 00 00 00 00 00 00 00 00 00 00 00 00 92 6d 00 6d 700 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 701 00 00 00 00 00 00 00 00 00 00 00 92 00 6d 6d 00 702 6d 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 703 00 00 00 00 00 00 00 00 00 6d 00 00 92 6d 6d 43 704 00 6d 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 705 00 00 00 00 00 00 00 00 00 6d 00 00 35 6d 6d 43 706 6d 00 6d 6d 00 00 00 00 00 00 00 00 00 00 00 00 707 00 00 00 00 00 00 00 00 00 6d 00 f9 92 6d 6d 43 708 6d 6d 00 6d 6d 00 00 00 00 00 00 00 00 00 00 00 709 00 00 92 00 00 00 00 00 00 6d 00 92 92 6d 6d 43 710 6d 6d 6d 00 6d 6d 00 00 00 00 00 00 00 00 00 00 711 00 00 92 00 00 00 00 00 00 6d 00 92 ff ff 6d 43 712 6d 6d 6d 6d 00 6d 6d 00 00 00 00 00 00 00 00 00 713 00 00 92 00 00 00 00 00 00 6d ff ff 92 92 92 43 714 6d 6d 6d 6d 6d 00 6d 6d 00 00 00 00 00 00 00 00 715 00 00 92 00 00 00 00 00 ff ff 92 92 ff ff ff 00 716 6d 6d 6d 6d 6d 6d 00 6d 6d 00 00 00 00 00 00 00 717 00 00 92 00 00 00 ff ff 92 ff ff ff 00 00 ff 00 718 00 6d 6d 6d 6d 6d 6d 00 6d 6d 00 00 00 00 00 00 719 00 00 92 00 ff ff ff ff ff 00 00 00 00 00 00 ff 720 00 00 6d 6d 6d 6d 6d 00 6d 6d 6d 00 00 00 00 00 721 00 00 ff ff ff ff ff 00 00 00 00 00 00 00 00 00 722 ff 00 00 6d 6d 6d 6d 00 6d 00 00 00 00 00 00 00 723 00 00 00 92 ff 00 00 00 00 00 00 00 00 00 00 00 724 00 ff 00 00 6d 6d 6d 00 00 00 00 00 00 00 00 00 725 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 726 00 00 00 00 00 6d 6d 00 00 00 00 00 00 00 00 00 727 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 728 00 00 00 00 00 00 6d 00 00 00 00 00 00 00 00 00 729 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 730 00 00 00 00 00 00 ff 00 00 00 00 00 00 00 00 00 731 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 732 00 00 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 733 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 734 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 735 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 736 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 737 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff 00 738 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 739 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 00 00 740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 741 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 742 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 743 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 744 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 745 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 746 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 747 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 748 00 00 43 00 00 00 00 00 00 00 00 00 00 00 00 00 749 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 750 00 00 00 43 43 00 00 00 00 00 00 00 00 00 00 00 751 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 752 00 00 00 43 6d 6d 00 00 00 00 00 00 00 00 00 00 753 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 754 00 00 00 00 6d 00 6d 00 00 00 00 00 00 00 00 00 755 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 756 00 00 00 00 00 6d 00 00 00 00 00 00 00 00 00 00 757 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 758 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 759 ff ff ff fc 3f ff ff f0 1f ff ff ca 0f ff ff 2c 760 07 ff fc ec 03 ff f3 e8 01 ff e7 e8 00 ff e7 e8 761 00 7f e7 e0 00 3f e7 c0 40 1f e7 03 60 0f e4 1f 762 b0 07 e0 7f d8 1f f1 ff ec 3f fb ff fe 3f fd ff 763 ff 3f fe ff ff 3f ff 7f fa 7f ff bf e0 7f ff df 764 06 7f ff ec 1c 7f ff f4 70 ff ff f9 c3 ff ff ff 765 cf ff ff ff c7 ff ff ff e3 ff ff ff f1 ff ff ff 766 f8 ff ff ff fd 7f ff ff fe ff ff ff ff ff 28 00 496 767 00 00 10 00 00 00 20 00 00 00 01 00 08 00 00 00 497 00 00 40 01 00 00 00 00 00 00 00 00 00 00 00 01 498 00 00 00 00 00 00 00 00 00 00 00 00 33 00 00 00 499 66 00 00 00 99 00 00 00 cc 00 00 00 ff 00 00 33 500 00 00 00 33 33 00 00 33 66 00 00 33 99 00 00 33 501 cc 00 00 33 ff 00 00 66 00 00 00 66 33 00 00 66 502 66 00 00 66 99 00 00 66 cc 00 00 66 ff 00 00 99 503 00 00 00 99 33 00 00 99 66 00 00 99 99 00 00 99 504 cc 00 00 99 ff 00 00 cc 00 00 00 cc 33 00 00 cc 505 66 00 00 cc 99 00 00 cc cc 00 00 cc ff 00 00 ff 506 00 00 00 ff 33 00 00 ff 66 00 00 ff 99 00 00 ff 507 cc 00 00 ff ff 00 33 00 00 00 33 00 33 00 33 00 768 00 00 40 01 00 00 00 00 00 00 00 00 00 00 00 00 769 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80 770 00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80 771 00 00 c0 c0 c0 00 c0 dc c0 00 f0 ca a6 00 04 04 772 04 00 08 08 08 00 0c 0c 0c 00 11 11 11 00 16 16 773 16 00 1c 1c 1c 00 22 22 22 00 29 29 29 00 55 55 774 55 00 4d 4d 4d 00 42 42 42 00 39 39 39 00 80 7c 775 ff 00 50 50 ff 00 93 00 d6 00 ff ec cc 00 c6 d6 776 ef 00 d6 e7 e7 00 90 a9 ad 00 00 00 33 00 00 00 777 66 00 00 00 99 00 00 00 cc 00 00 33 00 00 00 33 778 33 00 00 33 66 00 00 33 99 00 00 33 cc 00 00 33 779 ff 00 00 66 00 00 00 66 33 00 00 66 66 00 00 66 780 99 00 00 66 cc 00 00 66 ff 00 00 99 00 00 00 99 781 33 00 00 99 66 00 00 99 99 00 00 99 cc 00 00 99 782 ff 00 00 cc 00 00 00 cc 33 00 00 cc 66 00 00 cc 783 99 00 00 cc cc 00 00 cc ff 00 00 ff 66 00 00 ff 784 99 00 00 ff cc 00 33 00 00 00 33 00 33 00 33 00 508 785 66 00 33 00 99 00 33 00 cc 00 33 00 ff 00 33 33 509 786 00 00 33 33 33 00 33 33 66 00 33 33 99 00 33 33 … … 513 790 cc 00 33 99 ff 00 33 cc 00 00 33 cc 33 00 33 cc 514 791 66 00 33 cc 99 00 33 cc cc 00 33 cc ff 00 33 ff 515 00 00 33 ff 33 00 33 ff 66 00 33 ff 99 00 33 ff 516 cc 00 33 ff ff 00 66 00 00 00 66 00 33 00 66 00 517 66 00 66 00 99 00 66 00 cc 00 66 00 ff 00 66 33 518 00 00 66 33 33 00 66 33 66 00 66 33 99 00 66 33 519 cc 00 66 33 ff 00 66 66 00 00 66 66 33 00 66 66 520 66 00 66 66 99 00 66 66 cc 00 66 66 ff 00 66 99 521 00 00 66 99 33 00 66 99 66 00 66 99 99 00 66 99 522 cc 00 66 99 ff 00 66 cc 00 00 66 cc 33 00 66 cc 523 66 00 66 cc 99 00 66 cc cc 00 66 cc ff 00 66 ff 524 00 00 66 ff 33 00 66 ff 66 00 66 ff 99 00 66 ff 525 cc 00 66 ff ff 00 99 00 00 00 99 00 33 00 99 00 526 66 00 99 00 99 00 99 00 cc 00 99 00 ff 00 99 33 527 00 00 99 33 33 00 99 33 66 00 99 33 99 00 99 33 528 cc 00 99 33 ff 00 99 66 00 00 99 66 33 00 99 66 529 66 00 99 66 99 00 99 66 cc 00 99 66 ff 00 99 99 530 00 00 99 99 33 00 99 99 66 00 99 99 99 00 99 99 531 cc 00 99 99 ff 00 99 cc 00 00 99 cc 33 00 99 cc 532 66 00 99 cc 99 00 99 cc cc 00 99 cc ff 00 99 ff 533 00 00 99 ff 33 00 99 ff 66 00 99 ff 99 00 99 ff 534 cc 00 99 ff ff 00 cc 00 00 00 cc 00 33 00 cc 00 535 66 00 cc 00 99 00 cc 00 cc 00 cc 00 ff 00 cc 33 792 33 00 33 ff 66 00 33 ff 99 00 33 ff cc 00 33 ff 793 ff 00 66 00 00 00 66 00 33 00 66 00 66 00 66 00 794 99 00 66 00 cc 00 66 00 ff 00 66 33 00 00 66 33 795 33 00 66 33 66 00 66 33 99 00 66 33 cc 00 66 33 796 ff 00 66 66 00 00 66 66 33 00 66 66 66 00 66 66 797 99 00 66 66 cc 00 66 99 00 00 66 99 33 00 66 99 798 66 00 66 99 99 00 66 99 cc 00 66 99 ff 00 66 cc 799 00 00 66 cc 33 00 66 cc 99 00 66 cc cc 00 66 cc 800 ff 00 66 ff 00 00 66 ff 33 00 66 ff 99 00 66 ff 801 cc 00 cc 00 ff 00 ff 00 cc 00 99 99 00 00 99 33 802 99 00 99 00 99 00 99 00 cc 00 99 00 00 00 99 33 803 33 00 99 00 66 00 99 33 cc 00 99 00 ff 00 99 66 804 00 00 99 66 33 00 99 33 66 00 99 66 99 00 99 66 805 cc 00 99 33 ff 00 99 99 33 00 99 99 66 00 99 99 806 99 00 99 99 cc 00 99 99 ff 00 99 cc 00 00 99 cc 807 33 00 66 cc 66 00 99 cc 99 00 99 cc cc 00 99 cc 808 ff 00 99 ff 00 00 99 ff 33 00 99 cc 66 00 99 ff 809 99 00 99 ff cc 00 99 ff ff 00 cc 00 00 00 99 00 810 33 00 cc 00 66 00 cc 00 99 00 cc 00 cc 00 99 33 536 811 00 00 cc 33 33 00 cc 33 66 00 cc 33 99 00 cc 33 537 cc 00 cc 33 ff 00 cc 66 00 00 cc 66 33 00 cc66538 66 00 cc 66 99 00 cc 66 cc 00 cc66 ff 00 cc 99812 cc 00 cc 33 ff 00 cc 66 00 00 cc 66 33 00 99 66 813 66 00 cc 66 99 00 cc 66 cc 00 99 66 ff 00 cc 99 539 814 00 00 cc 99 33 00 cc 99 66 00 cc 99 99 00 cc 99 540 815 cc 00 cc 99 ff 00 cc cc 00 00 cc cc 33 00 cc cc 541 816 66 00 cc cc 99 00 cc cc cc 00 cc cc ff 00 cc ff 542 00 00 cc ff 33 00 cc ff 66 00 cc ff 99 00 cc ff 543 cc 00 cc ff ff 00 ff 00 00 00 ff 00 33 00 ff 00 544 66 00 ff 00 99 00 ff 00 cc 00 ff 00 ff 00 ff 33 545 00 00 ff 33 33 00 ff 33 66 00 ff 33 99 00 ff 33 546 cc 00 ff 33 ff 00 ff 66 00 00 ff 66 33 00 ff 66 547 66 00 ff 66 99 00 ff 66 cc 00 ff 66 ff 00 ff 99 548 00 00 ff 99 33 00 ff 99 66 00 ff 99 99 00 ff 99 549 cc 00 ff 99 ff 00 ff cc 00 00 ff cc 33 00 ff cc 550 66 00 ff cc 99 00 ff cc cc 00 ff cc ff 00 ff ff 551 00 00 ff ff 33 00 ff ff 66 00 ff ff 99 00 ff ff 552 cc 00 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 553 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 554 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 555 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 556 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 557 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 558 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 559 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 561 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 562 00 00 00 00 00 00 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 563 56 00 07 56 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 56 2b 564 56 2b 32 00 00 81 d7 d7 d7 d7 d7 d7 56 2b 56 81 565 81 2b 32 00 56 d7 d7 d7 d7 d7 56 2b 56 81 81 81 566 81 2b 32 d7 d7 d7 d7 d7 56 2b 56 81 81 81 81 81 567 81 2b 32 d7 d7 d7 81 2b 56 ac ac ac 81 81 81 81 568 81 2b 32 d7 d7 d7 56 ac ac ac ac ac ac 81 81 81 569 81 2b 32 d7 d7 d7 56 ac ac ac ac ac ac ac 81 81 570 81 2b 32 d7 d7 d7 56 ac ac ac ac ac ac ac ac 81 571 81 2b 32 d7 d7 d7 56 d7 ac ac ac ac ac ac ac ac 572 81 2c 32 d7 d7 d7 56 d7 d7 ac ac ac ac 56 2c 2b 573 32 89 56 d7 d7 d7 56 d7 d7 d7 ac ac 56 34 5f 89 574 89 56 d7 d7 d7 d7 56 d7 d7 d7 ac 56 32 89 89 89 575 5e 56 d7 d7 d7 d7 56 d7 ac 56 32 89 56 56 56 56 576 81 d7 d7 d7 d7 d7 56 56 32 89 56 56 d7 d7 d7 d7 577 d7 d7 d7 d7 d7 d7 d7 56 56 56 d7 d7 d7 d7 d7 d7 578 d7 d7 d7 d7 d7 d7 00 00 ff ff 00 00 ff ff 00 00 579 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 580 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 581 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 582 ff ff 00 00 ff ff 28 00 00 00 20 00 00 00 40 00 583 00 00 01 00 04 00 00 00 00 00 80 02 00 00 00 00 584 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 817 00 00 cc ff 33 00 99 ff 66 00 cc ff 99 00 cc ff 818 cc 00 cc ff ff 00 cc 00 33 00 ff 00 66 00 ff 00 819 99 00 cc 33 00 00 ff 33 33 00 ff 33 66 00 ff 33 820 99 00 ff 33 cc 00 ff 33 ff 00 ff 66 00 00 ff 66 821 33 00 cc 66 66 00 ff 66 99 00 ff 66 cc 00 cc 66 822 ff 00 ff 99 00 00 ff 99 33 00 ff 99 66 00 ff 99 823 99 00 ff 99 cc 00 ff 99 ff 00 ff cc 00 00 ff cc 824 33 00 ff cc 66 00 ff cc 99 00 ff cc cc 00 ff cc 825 ff 00 ff ff 33 00 cc ff 66 00 ff ff 99 00 ff ff 826 cc 00 66 66 ff 00 66 ff 66 00 66 ff ff 00 ff 66 827 66 00 ff 66 ff 00 ff ff 66 00 21 00 a5 00 5f 5f 828 5f 00 77 77 77 00 86 86 86 00 96 96 96 00 cb cb 829 cb 00 b2 b2 b2 00 d7 d7 d7 00 dd dd dd 00 e3 e3 830 e3 00 ea ea ea 00 f1 f1 f1 00 f8 f8 f8 00 f0 fb 831 ff 00 a4 a0 a0 00 80 80 80 00 00 00 ff 00 00 ff 832 00 00 00 ff ff 00 ff 00 00 00 ff 00 ff 00 ff ff 833 00 00 ff ff ff 00 00 00 00 00 00 00 00 6d 6d 00 834 00 00 00 00 00 00 00 00 00 00 00 92 6d 00 6d 6d 835 00 00 00 00 00 00 00 00 00 00 92 35 6d 6d 00 6d 836 6d 00 00 00 00 00 00 92 6d 00 f9 92 6d 6d 43 00 837 6d 6d 00 00 00 00 00 92 6d 00 92 92 6d 6d 43 6d 838 00 6d 6d 00 00 00 00 92 6d 00 92 ff ff 6d 43 6d 839 6d 00 6d 6d 00 00 00 92 6d ff ff 92 92 92 43 6d 840 6d 6d 00 6d 6d 00 00 ff ff 92 92 ff ff ff 00 6d 841 6d 6d 00 6d 6d 6d 00 00 92 ff ff 00 00 00 00 00 842 6d 6d 00 6d 00 00 00 00 00 00 00 00 00 00 00 00 843 00 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 844 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 845 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 00 846 00 00 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 847 00 6d 00 6d 00 00 00 00 00 00 00 00 00 00 00 00 848 00 00 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 849 00 00 00 00 00 00 f8 7f 00 00 e0 3f 00 00 90 1f 850 00 00 10 0f 00 00 10 07 00 00 10 03 00 00 00 01 851 00 00 00 80 00 00 87 c3 00 00 df e3 00 00 ef e1 852 00 00 f7 4d 00 00 fa 31 00 00 fc e3 00 00 ff e7 853 00 00 ff f7 00 00 854 '} 855 856 /* mycomputer */ 857 15 ICON 858 {' 859 00 00 01 00 02 00 20 20 00 00 00 00 00 00 a8 08 860 00 00 26 00 00 00 10 10 00 00 00 00 00 00 68 05 861 00 00 ce 08 00 00 28 00 00 00 20 00 00 00 40 00 862 00 00 01 00 08 00 00 00 00 00 80 04 00 00 00 00 863 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 585 864 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 586 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 80 80 865 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 c0 dc 866 c0 00 f0 ca a6 00 04 04 04 00 08 08 08 00 0c 0c 867 0c 00 11 11 11 00 16 16 16 00 1c 1c 1c 00 22 22 868 22 00 29 29 29 00 55 55 55 00 4d 4d 4d 00 42 42 869 42 00 39 39 39 00 80 7c ff 00 50 50 ff 00 93 00 870 d6 00 ff ec cc 00 c6 d6 ef 00 d6 e7 e7 00 90 a9 871 ad 00 00 00 33 00 00 00 66 00 00 00 99 00 00 00 872 cc 00 00 33 00 00 00 33 33 00 00 33 66 00 00 33 873 99 00 00 33 cc 00 00 33 ff 00 00 66 00 00 00 66 874 33 00 00 66 66 00 00 66 99 00 00 66 cc 00 00 66 875 ff 00 00 99 00 00 00 99 33 00 00 99 66 00 00 99 876 99 00 00 99 cc 00 00 99 ff 00 00 cc 00 00 00 cc 877 33 00 00 cc 66 00 00 cc 99 00 00 cc cc 00 00 cc 878 ff 00 00 ff 66 00 00 ff 99 00 00 ff cc 00 33 00 879 00 00 33 00 33 00 33 00 66 00 33 00 99 00 33 00 880 cc 00 33 00 ff 00 33 33 00 00 33 33 33 00 33 33 881 66 00 33 33 99 00 33 33 cc 00 33 33 ff 00 33 66 882 00 00 33 66 33 00 33 66 66 00 33 66 99 00 33 66 883 cc 00 33 66 ff 00 33 99 00 00 33 99 33 00 33 99 884 66 00 33 99 99 00 33 99 cc 00 33 99 ff 00 33 cc 885 00 00 33 cc 33 00 33 cc 66 00 33 cc 99 00 33 cc 886 cc 00 33 cc ff 00 33 ff 33 00 33 ff 66 00 33 ff 887 99 00 33 ff cc 00 33 ff ff 00 66 00 00 00 66 00 888 33 00 66 00 66 00 66 00 99 00 66 00 cc 00 66 00 889 ff 00 66 33 00 00 66 33 33 00 66 33 66 00 66 33 890 99 00 66 33 cc 00 66 33 ff 00 66 66 00 00 66 66 891 33 00 66 66 66 00 66 66 99 00 66 66 cc 00 66 99 892 00 00 66 99 33 00 66 99 66 00 66 99 99 00 66 99 893 cc 00 66 99 ff 00 66 cc 00 00 66 cc 33 00 66 cc 894 99 00 66 cc cc 00 66 cc ff 00 66 ff 00 00 66 ff 895 33 00 66 ff 99 00 66 ff cc 00 cc 00 ff 00 ff 00 896 cc 00 99 99 00 00 99 33 99 00 99 00 99 00 99 00 897 cc 00 99 00 00 00 99 33 33 00 99 00 66 00 99 33 898 cc 00 99 00 ff 00 99 66 00 00 99 66 33 00 99 33 899 66 00 99 66 99 00 99 66 cc 00 99 33 ff 00 99 99 900 33 00 99 99 66 00 99 99 99 00 99 99 cc 00 99 99 901 ff 00 99 cc 00 00 99 cc 33 00 66 cc 66 00 99 cc 902 99 00 99 cc cc 00 99 cc ff 00 99 ff 00 00 99 ff 903 33 00 99 cc 66 00 99 ff 99 00 99 ff cc 00 99 ff 904 ff 00 cc 00 00 00 99 00 33 00 cc 00 66 00 cc 00 905 99 00 cc 00 cc 00 99 33 00 00 cc 33 33 00 cc 33 906 66 00 cc 33 99 00 cc 33 cc 00 cc 33 ff 00 cc 66 907 00 00 cc 66 33 00 99 66 66 00 cc 66 99 00 cc 66 908 cc 00 99 66 ff 00 cc 99 00 00 cc 99 33 00 cc 99 909 66 00 cc 99 99 00 cc 99 cc 00 cc 99 ff 00 cc cc 910 00 00 cc cc 33 00 cc cc 66 00 cc cc 99 00 cc cc 911 cc 00 cc cc ff 00 cc ff 00 00 cc ff 33 00 99 ff 912 66 00 cc ff 99 00 cc ff cc 00 cc ff ff 00 cc 00 913 33 00 ff 00 66 00 ff 00 99 00 cc 33 00 00 ff 33 914 33 00 ff 33 66 00 ff 33 99 00 ff 33 cc 00 ff 33 915 ff 00 ff 66 00 00 ff 66 33 00 cc 66 66 00 ff 66 916 99 00 ff 66 cc 00 cc 66 ff 00 ff 99 00 00 ff 99 917 33 00 ff 99 66 00 ff 99 99 00 ff 99 cc 00 ff 99 918 ff 00 ff cc 00 00 ff cc 33 00 ff cc 66 00 ff cc 919 99 00 ff cc cc 00 ff cc ff 00 ff ff 33 00 cc ff 920 66 00 ff ff 99 00 ff ff cc 00 66 66 ff 00 66 ff 921 66 00 66 ff ff 00 ff 66 66 00 ff 66 ff 00 ff ff 922 66 00 21 00 a5 00 5f 5f 5f 00 77 77 77 00 86 86 923 86 00 96 96 96 00 cb cb cb 00 b2 b2 b2 00 d7 d7 924 d7 00 dd dd dd 00 e3 e3 e3 00 ea ea ea 00 f1 f1 925 f1 00 f8 f8 f8 00 f0 fb ff 00 a4 a0 a0 00 80 80 587 926 80 00 00 00 ff 00 00 ff 00 00 00 ff ff 00 ff 00 588 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 ff ff 589 ff ff ff ff ff ff ff ff ff 00 00 ff ff ff ff ff 590 ff ff ff ff ff ff ff ff 00 80 b0 00 ff ff ff ff 591 ff ff ff ff ff ff ff 00 88 80 b0 00 00 ff ff ff 592 ff ff ff ff ff ff 00 88 77 80 b0 00 00 0f ff ff 593 ff ff ff ff ff 00 88 77 77 80 b0 00 00 ff ff ff 594 ff ff ff ff 00 88 77 77 77 80 b0 00 ff ff ff ff 595 ff ff ff 00 88 77 77 77 77 80 b0 ff ff ff ff ff 596 ff ff 00 88 77 77 77 77 77 80 b0 ff ff ff ff ff 597 ff 00 88 77 77 77 77 77 77 80 b0 ff ff ff ff ff 598 00 88 77 77 77 77 77 77 77 80 b0 ff ff ff ff 00 599 88 77 77 77 77 77 77 77 77 80 b0 ff ff ff f0 88 600 77 77 77 77 77 77 77 77 77 80 b0 ff ff ff f0 77 601 77 77 77 77 77 77 77 77 77 80 b0 ff ff ff f0 77 602 77 77 77 77 77 77 77 77 77 80 b0 ff ff ff f0 77 603 77 77 77 77 77 77 77 77 77 80 b0 ff ff ff f0 f7 604 f7 77 77 77 77 77 77 77 77 80 b0 ff ff ff f0 7f 605 77 77 77 77 77 77 77 77 77 80 b0 ff ff ff f0 f7 606 f7 f7 77 77 77 77 77 77 77 80 b0 ff ff ff f0 ff 607 7f 77 77 77 77 77 77 77 77 80 b0 ff ff ff f0 f7 608 f7 f7 f7 77 77 77 77 77 78 0b b0 ff ff ff f0 ff 609 ff 7f 77 77 77 77 80 88 00 bf 0f ff ff ff f0 ff 610 f7 f7 f7 f7 77 80 0b 00 bb bf 0f ff ff ff f0 ff 611 ff ff 7f 77 78 0b bb bb bf f0 ff ff ff ff f0 ff 612 ff f7 f7 77 70 bb bb ff ff f0 ff ff ff ff f0 ff 613 ff ff ff f8 00 bf ff ff ff 0f ff ff ff ff f0 ff 614 ff ff f8 00 bf ff ff ff f0 0f ff ff ff ff f0 ff 615 ff f8 00 bf ff 00 ff f0 0f ff ff ff ff ff f0 ff 616 f8 00 bf ff 00 ff 00 0f ff ff ff ff ff ff f0 f8 617 00 bf ff 00 ff ff ff ff ff ff ff ff ff ff f0 00 618 bf ff 00 ff ff ff ff ff ff ff ff ff ff ff ff f0 619 ff 00 ff ff ff ff ff ff ff ff ff ff ff ff ff f0 620 00 ff ff ff ff ff ff ff ff ff ff ff ff ff 00 00 621 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 622 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 623 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 624 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 625 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 626 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 627 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 628 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 629 00 00 20 00 00 00 40 00 00 00 01 00 08 00 00 00 630 00 00 80 04 00 00 00 00 00 00 00 00 00 00 00 01 631 00 00 00 00 00 00 ff ff ff 00 a8 dc ff 00 58 a8 632 ff 00 c0 c0 c0 00 a4 a0 a0 00 58 58 58 00 30 30 633 30 00 00 00 40 00 00 00 00 00 dc c0 b2 00 00 00 634 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 635 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 636 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 637 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 638 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 639 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 641 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 642 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 643 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 644 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 645 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 646 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 647 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 648 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 649 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 650 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 651 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 652 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 653 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 654 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 655 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 656 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 657 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 658 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 659 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 661 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 662 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 663 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 664 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 665 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 666 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 667 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 668 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 669 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 671 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 672 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 673 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 674 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 675 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 676 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 677 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 678 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 679 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 681 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 682 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 683 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 684 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 685 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 686 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 687 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 688 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 689 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 690 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 691 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 692 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 693 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 694 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 695 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 696 00 00 00 00 00 00 00 00 00 00 00 00 08 08 08 08 697 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 698 00 00 00 00 00 00 00 00 00 00 08 08 05 08 02 08 699 08 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 700 00 00 00 00 00 00 00 00 08 08 05 05 05 08 02 08 701 08 08 08 08 00 00 00 00 00 00 00 00 00 00 00 00 702 00 00 00 00 00 00 08 08 05 05 04 04 05 08 02 08 703 08 08 08 08 08 00 00 00 00 00 00 00 00 00 00 00 704 00 00 00 00 08 08 05 05 04 04 04 04 05 08 02 08 705 08 08 08 08 00 00 00 00 00 00 00 00 00 00 00 00 706 00 00 08 08 05 05 04 04 04 04 04 04 05 08 02 08 707 08 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 708 08 08 05 05 04 04 04 04 04 04 04 04 05 08 02 08 709 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 08 710 05 05 04 04 04 04 04 04 04 04 04 04 05 08 02 08 711 00 00 00 00 00 00 00 00 00 00 00 00 08 08 05 05 712 04 04 04 04 04 04 04 04 04 04 04 04 05 08 02 08 713 00 00 00 00 00 00 00 00 00 00 08 08 05 05 04 04 714 04 03 04 04 04 04 04 04 04 04 04 04 05 08 02 08 715 00 00 00 00 00 00 00 00 08 08 05 05 04 04 03 04 716 03 04 04 04 04 04 04 04 04 04 04 04 05 08 02 08 717 00 00 00 00 00 00 00 08 05 05 04 04 03 03 03 03 718 04 03 04 03 04 04 04 04 04 04 04 04 05 08 02 08 719 00 00 00 00 00 00 00 08 04 04 03 03 03 03 03 04 720 03 04 03 04 04 04 04 04 04 04 04 04 05 08 02 08 721 00 00 00 00 00 00 00 08 03 03 03 03 03 03 03 03 722 03 03 04 03 04 03 04 04 04 04 04 04 05 08 02 08 723 00 00 00 00 00 00 00 08 03 03 03 03 03 03 03 03 724 03 04 03 04 03 04 04 04 04 04 04 04 05 07 02 08 725 00 00 00 00 00 00 00 08 00 03 00 03 03 03 03 03 726 03 03 03 03 04 03 04 03 04 04 04 04 05 08 02 08 727 00 00 00 00 00 00 00 08 03 00 03 03 03 03 03 03 728 03 03 03 04 03 04 03 04 04 04 04 04 05 08 02 08 729 00 00 00 00 00 00 00 08 00 03 00 03 00 03 03 03 730 03 03 03 03 03 03 04 03 04 03 04 04 05 08 02 08 731 00 00 00 00 00 00 00 08 00 00 03 00 03 03 03 03 732 03 03 03 03 03 04 03 04 03 04 03 04 05 08 02 08 733 00 00 00 00 00 00 00 08 00 03 00 03 00 03 00 03 734 03 03 03 03 03 03 03 03 04 03 04 05 08 02 02 08 735 00 00 00 00 00 00 00 08 00 00 00 00 03 00 03 03 736 03 03 03 03 03 04 05 08 05 05 08 08 02 01 08 00 737 00 00 00 00 00 00 00 08 00 00 00 03 00 03 00 03 738 00 03 03 04 05 08 08 02 07 08 02 02 02 01 08 00 739 00 00 00 00 00 00 00 08 00 00 00 00 00 00 03 00 740 03 03 03 05 08 02 02 02 02 02 02 01 01 08 00 00 741 00 00 00 00 00 00 00 08 00 00 00 00 00 03 00 03 742 03 04 04 08 02 02 02 02 01 01 01 01 01 08 00 00 743 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 744 00 05 08 08 02 01 01 01 01 01 01 01 08 00 00 00 745 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 05 746 08 08 02 01 01 01 01 01 01 01 01 08 08 00 00 00 747 00 00 00 00 00 00 00 08 00 00 00 00 00 05 08 08 748 02 01 01 01 08 08 01 01 01 08 08 00 00 00 00 00 749 00 00 00 00 00 00 00 08 00 00 00 05 08 08 02 01 750 01 01 08 08 00 00 08 08 06 00 00 00 00 00 00 00 751 00 00 00 00 00 00 00 08 00 05 08 08 02 01 01 01 752 08 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 753 00 00 00 00 00 00 00 08 08 08 02 01 01 01 08 08 754 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 755 00 00 00 00 00 00 00 00 00 08 01 01 08 08 00 00 756 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 757 00 00 00 00 00 00 00 00 00 08 08 08 00 00 00 00 758 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 759 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 761 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 762 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 763 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 764 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 765 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 766 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 767 00 00 00 00 00 00 768 '} 769 770 /* drive */ 771 8 ICON 772 {' 773 00 00 01 00 04 00 10 10 10 00 00 00 00 00 28 01 774 00 00 46 00 00 00 10 10 00 00 00 00 00 00 68 05 775 00 00 6e 01 00 00 20 20 10 00 00 00 00 00 e8 02 776 00 00 d6 06 00 00 20 20 00 00 00 00 00 00 a8 08 777 00 00 be 09 00 00 28 00 00 00 10 00 00 00 20 00 778 00 00 01 00 04 00 00 00 00 00 c0 00 00 00 00 00 779 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 780 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 781 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 80 80 782 80 00 00 00 ff 00 00 ff 00 00 00 ff ff 00 ff 00 783 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 ff ff 784 ff ff ff ff ff ff ff ff 78 88 ff ff ff ff ff 86 785 07 78 8f ff ff ff f8 88 88 77 88 ff ff ff 88 88 786 87 77 78 8f ff ff 88 88 77 77 77 88 ff ff 87 88 787 87 77 77 78 8f ff f8 88 88 77 77 77 88 ff ff 88 788 88 87 77 77 78 ff ff f8 88 87 77 77 78 ff ff ff 789 87 77 77 77 88 ff ff ff f8 77 77 88 88 ff ff ff 790 ff 87 80 88 88 ff ff ff ff f8 f8 88 88 ff ff ff 791 ff ff ff ff 88 ff ff ff ff ff ff ff 78 ff 00 00 792 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 793 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 794 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 795 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 28 00 927 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 00 00 928 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 6d 929 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 930 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 92 00 931 6d 6d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 932 00 00 00 00 00 00 00 00 00 00 ff ff 92 00 ff 92 933 00 6d 6d 6d 00 00 00 00 00 00 00 00 00 00 00 00 934 00 00 00 00 00 00 00 00 ff ff 92 00 ff 92 00 ff 935 92 00 6d 6d 6d 00 00 00 00 00 00 00 00 00 00 00 936 00 00 00 00 00 00 ff ff 92 00 ff 92 00 ff 92 00 937 ff 92 00 6d 6d 00 00 00 00 00 00 00 00 00 00 00 938 00 00 00 00 ff ff 92 00 ff 92 00 ff 92 00 ff 92 939 00 ff ff 00 00 ff 00 00 6d 6d 00 00 00 00 00 00 940 00 00 ff ff 92 00 ff 92 00 ff 92 00 ff 92 00 ff 941 ff 00 00 ff 00 00 92 6d 00 6d 6d 00 00 00 00 00 942 ff ff 92 00 ff 92 00 ff 92 00 ff 92 00 ff ff 00 943 00 ff 00 00 00 00 92 6d 6d 00 6d 6d 00 00 6d ff 944 92 00 ff 92 00 ff 92 00 ff 92 00 ff ff 00 00 ff 945 00 00 00 00 ff ff 92 6d 6d 6d 00 6d 6d 00 00 6d 946 ff 92 00 ff 92 00 ff 92 00 ff ff 00 00 ff 00 00 947 00 00 ff ff 85 ff 92 6d 6d 6d 00 6d 6d 6d 00 00 948 6d ff 92 00 ff 92 00 ff ff 00 00 ff 00 00 00 00 949 ff ff 85 92 92 ff 92 6d 6d 6d 00 6d 6d 6d 00 00 950 00 6d ff 92 00 ff ff 00 00 ff 00 00 00 00 ff ff 951 86 92 92 ff 92 ff 92 6d 6d 6d 00 6d 6d 6d 00 00 952 00 00 6d ff ff 00 00 ff 00 00 00 00 ff ff 86 92 953 92 ff ff ff 92 ff 92 6d 6d 6d 00 6d 6d 00 00 00 954 00 00 00 6d 00 00 00 00 00 00 ff ff 86 86 92 ff 955 ff ff ff ff 92 ff 92 6d 6d 6d 00 00 00 00 00 00 956 00 00 00 00 00 00 00 00 ff ff ae ae 86 00 92 ff 957 ff ff ff ff 92 ff 92 6d 6d 6d 00 00 00 00 00 00 958 00 00 00 00 00 43 6d 00 cf cf ae 00 00 ff 92 ff 959 ff ff ff ff 85 ff 92 6d 6d 6d 00 00 00 00 00 00 960 00 00 00 00 00 43 6d 6d cf 00 00 ff ff ff 92 ff 961 ff ff 85 85 86 ff 92 6d 6d 6d 00 00 00 00 00 00 962 00 00 00 00 00 43 6d 6d cf 00 ff ff ff ff 92 ff 963 85 85 ff 00 86 ff 92 6d 6d 6d 00 00 00 00 00 00 964 00 00 00 00 00 43 6d 6d b5 00 ff ff ff ff 85 85 965 ff ff ff 85 86 ff 92 6d 6d 6d 00 00 00 00 00 00 966 00 00 00 00 00 43 6d 6d b5 00 ff ff ff ff ff ff 967 ff 85 85 86 86 ff 92 6d 6d 6d 00 00 00 00 00 00 968 00 00 00 00 00 43 6d 6d b5 00 ff ff ff ff ff 85 969 85 ae ae 92 92 ff 00 92 6d 6d 00 00 00 00 00 00 970 00 00 00 00 00 43 6d 6d b5 00 ff ff ff 85 85 cf 971 cf 92 92 ff ff 00 ff 00 92 6d 00 00 00 00 00 00 972 00 00 00 00 00 43 6d 6d b5 00 ff 85 85 b5 cf 92 973 92 ff ff ff 00 ff 00 ff 00 92 00 00 00 00 00 00 974 00 00 00 00 00 43 6d 6d b5 85 85 b5 b5 92 92 ff 975 ff 00 ff 00 ff 00 ff 00 00 00 00 00 00 00 00 00 976 00 00 00 00 00 43 6d 6d b5 b5 b5 92 92 ff ff ff 977 00 ff 00 ff 00 ff 00 00 00 00 00 00 00 00 00 00 978 00 00 00 00 00 43 6d 6d 6d 92 92 ff ff 00 ff 00 979 ff 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 980 00 00 00 00 00 43 6d 6d 92 ff ff ff 00 ff 00 ff 981 00 ff 00 00 ff 00 ff 00 00 00 00 00 00 00 00 00 982 00 00 00 00 00 43 6d ff ff 00 ff 00 ff 00 ff 00 983 00 00 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 984 00 00 00 00 00 43 ff 00 00 ff 00 ff 00 ff 00 00 985 ff 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 986 00 00 00 00 00 00 00 00 ff 00 ff 00 00 00 00 ff 987 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 988 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 989 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 991 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff fc 992 0f ff ff f0 03 ff ff c0 00 ff ff 00 00 ff fc 00 993 00 ff f0 00 00 0f c0 00 00 07 00 00 03 03 00 00 994 0c 01 80 00 30 00 c0 00 c0 00 e0 03 00 00 f0 0c 995 00 01 f8 30 00 07 fe 41 00 07 fe 46 00 07 fe 18 996 00 07 fe 10 04 07 fe 10 00 07 fe 10 00 07 fe 10 997 00 87 fe 10 01 47 fe 10 02 a7 fe 00 15 4f fe 00 998 2a 3f fe 01 54 bf fe 02 a1 3f fe 15 4a 7f fe 6a 999 11 ff ff 54 a7 ff ff 83 1f ff ff ff ff ff 28 00 796 1000 00 00 10 00 00 00 20 00 00 00 01 00 08 00 00 00 797 00 00 40 01 00 00 00 00 00 00 00 00 00 00 00 01 798 00 00 00 00 00 00 00 00 00 00 00 00 33 00 00 00 799 66 00 00 00 99 00 00 00 cc 00 00 00 ff 00 00 33 800 00 00 00 33 33 00 00 33 66 00 00 33 99 00 00 33 801 cc 00 00 33 ff 00 00 66 00 00 00 66 33 00 00 66 802 66 00 00 66 99 00 00 66 cc 00 00 66 ff 00 00 99 803 00 00 00 99 33 00 00 99 66 00 00 99 99 00 00 99 804 cc 00 00 99 ff 00 00 cc 00 00 00 cc 33 00 00 cc 805 66 00 00 cc 99 00 00 cc cc 00 00 cc ff 00 00 ff 806 00 00 00 ff 33 00 00 ff 66 00 00 ff 99 00 00 ff 807 cc 00 00 ff ff 00 33 00 00 00 33 00 33 00 33 00 1001 00 00 40 01 00 00 00 00 00 00 00 00 00 00 00 00 1002 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80 1003 00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80 1004 00 00 c0 c0 c0 00 c0 dc c0 00 f0 ca a6 00 04 04 1005 04 00 08 08 08 00 0c 0c 0c 00 11 11 11 00 16 16 1006 16 00 1c 1c 1c 00 22 22 22 00 29 29 29 00 55 55 1007 55 00 4d 4d 4d 00 42 42 42 00 39 39 39 00 80 7c 1008 ff 00 50 50 ff 00 93 00 d6 00 ff ec cc 00 c6 d6 1009 ef 00 d6 e7 e7 00 90 a9 ad 00 00 00 33 00 00 00 1010 66 00 00 00 99 00 00 00 cc 00 00 33 00 00 00 33 1011 33 00 00 33 66 00 00 33 99 00 00 33 cc 00 00 33 1012 ff 00 00 66 00 00 00 66 33 00 00 66 66 00 00 66 1013 99 00 00 66 cc 00 00 66 ff 00 00 99 00 00 00 99 1014 33 00 00 99 66 00 00 99 99 00 00 99 cc 00 00 99 1015 ff 00 00 cc 00 00 00 cc 33 00 00 cc 66 00 00 cc 1016 99 00 00 cc cc 00 00 cc ff 00 00 ff 66 00 00 ff 1017 99 00 00 ff cc 00 33 00 00 00 33 00 33 00 33 00 808 1018 66 00 33 00 99 00 33 00 cc 00 33 00 ff 00 33 33 809 1019 00 00 33 33 33 00 33 33 66 00 33 33 99 00 33 33 … … 813 1023 cc 00 33 99 ff 00 33 cc 00 00 33 cc 33 00 33 cc 814 1024 66 00 33 cc 99 00 33 cc cc 00 33 cc ff 00 33 ff 815 00 00 33 ff 33 00 33 ff 66 00 33 ff 99 00 33 ff 816 cc 00 33 ff ff 00 66 00 00 00 66 00 33 00 66 00 817 66 00 66 00 99 00 66 00 cc 00 66 00 ff 00 66 33 818 00 00 66 33 33 00 66 33 66 00 66 33 99 00 66 33 819 cc 00 66 33 ff 00 66 66 00 00 66 66 33 00 66 66 820 66 00 66 66 99 00 66 66 cc 00 66 66 ff 00 66 99 821 00 00 66 99 33 00 66 99 66 00 66 99 99 00 66 99 822 cc 00 66 99 ff 00 66 cc 00 00 66 cc 33 00 66 cc 823 66 00 66 cc 99 00 66 cc cc 00 66 cc ff 00 66 ff 824 00 00 66 ff 33 00 66 ff 66 00 66 ff 99 00 66 ff 825 cc 00 66 ff ff 00 99 00 00 00 99 00 33 00 99 00 826 66 00 99 00 99 00 99 00 cc 00 99 00 ff 00 99 33 827 00 00 99 33 33 00 99 33 66 00 99 33 99 00 99 33 828 cc 00 99 33 ff 00 99 66 00 00 99 66 33 00 99 66 829 66 00 99 66 99 00 99 66 cc 00 99 66 ff 00 99 99 830 00 00 99 99 33 00 99 99 66 00 99 99 99 00 99 99 831 cc 00 99 99 ff 00 99 cc 00 00 99 cc 33 00 99 cc 832 66 00 99 cc 99 00 99 cc cc 00 99 cc ff 00 99 ff 833 00 00 99 ff 33 00 99 ff 66 00 99 ff 99 00 99 ff 834 cc 00 99 ff ff 00 cc 00 00 00 cc 00 33 00 cc 00 835 66 00 cc 00 99 00 cc 00 cc 00 cc 00 ff 00 cc 33 1025 33 00 33 ff 66 00 33 ff 99 00 33 ff cc 00 33 ff 1026 ff 00 66 00 00 00 66 00 33 00 66 00 66 00 66 00 1027 99 00 66 00 cc 00 66 00 ff 00 66 33 00 00 66 33 1028 33 00 66 33 66 00 66 33 99 00 66 33 cc 00 66 33 1029 ff 00 66 66 00 00 66 66 33 00 66 66 66 00 66 66 1030 99 00 66 66 cc 00 66 99 00 00 66 99 33 00 66 99 1031 66 00 66 99 99 00 66 99 cc 00 66 99 ff 00 66 cc 1032 00 00 66 cc 33 00 66 cc 99 00 66 cc cc 00 66 cc 1033 ff 00 66 ff 00 00 66 ff 33 00 66 ff 99 00 66 ff 1034 cc 00 cc 00 ff 00 ff 00 cc 00 99 99 00 00 99 33 1035 99 00 99 00 99 00 99 00 cc 00 99 00 00 00 99 33 1036 33 00 99 00 66 00 99 33 cc 00 99 00 ff 00 99 66 1037 00 00 99 66 33 00 99 33 66 00 99 66 99 00 99 66 1038 cc 00 99 33 ff 00 99 99 33 00 99 99 66 00 99 99 1039 99 00 99 99 cc 00 99 99 ff 00 99 cc 00 00 99 cc 1040 33 00 66 cc 66 00 99 cc 99 00 99 cc cc 00 99 cc 1041 ff 00 99 ff 00 00 99 ff 33 00 99 cc 66 00 99 ff 1042 99 00 99 ff cc 00 99 ff ff 00 cc 00 00 00 99 00 1043 33 00 cc 00 66 00 cc 00 99 00 cc 00 cc 00 99 33 836 1044 00 00 cc 33 33 00 cc 33 66 00 cc 33 99 00 cc 33 837 cc 00 cc 33 ff 00 cc 66 00 00 cc 66 33 00 cc66838 66 00 cc 66 99 00 cc 66 cc 00 cc66 ff 00 cc 991045 cc 00 cc 33 ff 00 cc 66 00 00 cc 66 33 00 99 66 1046 66 00 cc 66 99 00 cc 66 cc 00 99 66 ff 00 cc 99 839 1047 00 00 cc 99 33 00 cc 99 66 00 cc 99 99 00 cc 99 840 1048 cc 00 cc 99 ff 00 cc cc 00 00 cc cc 33 00 cc cc 841 1049 66 00 cc cc 99 00 cc cc cc 00 cc cc ff 00 cc ff 842 00 00 cc ff 33 00 cc ff 66 00 cc ff 99 00 cc ff 843 cc 00 cc ff ff 00 ff 00 00 00 ff 00 33 00 ff 00 844 66 00 ff 00 99 00 ff 00 cc 00 ff 00 ff 00 ff 33 845 00 00 ff 33 33 00 ff 33 66 00 ff 33 99 00 ff 33 846 cc 00 ff 33 ff 00 ff 66 00 00 ff 66 33 00 ff 66 847 66 00 ff 66 99 00 ff 66 cc 00 ff 66 ff 00 ff 99 848 00 00 ff 99 33 00 ff 99 66 00 ff 99 99 00 ff 99 849 cc 00 ff 99 ff 00 ff cc 00 00 ff cc 33 00 ff cc 850 66 00 ff cc 99 00 ff cc cc 00 ff cc ff 00 ff ff 851 00 00 ff ff 33 00 ff ff 66 00 ff ff 99 00 ff ff 852 cc 00 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 853 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 854 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 855 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 856 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 857 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 858 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 859 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 861 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 862 00 00 00 00 00 00 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 863 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 a5 56 56 81 d7 d7 864 d7 d7 d7 d7 d7 d7 d7 d7 81 55 2b ac ac 81 81 d7 865 d7 d7 d7 d7 d7 d7 d7 56 56 81 56 58 ac ac 81 81 866 d7 d7 d7 d7 d7 d7 56 81 81 81 81 ac ac ac ac 81 867 81 d7 d7 d7 d7 d7 56 81 81 81 ac ac ac ac ac ac 868 81 81 d7 d7 d7 d7 56 ac 81 81 81 ac ac ac ac ac 869 ac 81 81 d7 d7 d7 d7 56 81 81 81 81 ac ac ac ac 870 ac ac 81 81 d7 d7 d7 d7 56 81 81 81 81 ac ac ac 871 ac ac ac 56 d7 d7 d7 d7 d7 56 81 81 81 ac ac ac 872 ac ac ac 56 d7 d7 d7 d7 d7 d7 56 ac ac ac ac ac 873 ac ac 56 81 d7 d7 d7 d7 d7 d7 d7 56 ac ac ac ac 874 56 56 56 81 d7 d7 d7 d7 d7 d7 d7 d7 56 ac 56 2b 875 81 81 56 81 d7 d7 d7 d7 d7 d7 d7 d7 d7 56 d7 81 876 56 56 56 81 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 877 d7 d7 56 56 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 d7 878 d7 d7 a5 56 d7 d7 00 00 ff ff 00 00 ff ff 00 00 879 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 880 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 881 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 882 ff ff 00 00 ff ff 28 00 00 00 20 00 00 00 40 00 883 00 00 01 00 04 00 00 00 00 00 80 02 00 00 00 00 884 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 885 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 886 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 80 80 887 80 00 00 00 ff 00 00 ff 00 00 00 ff ff 00 ff 00 888 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 ff ff 889 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 890 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 891 ff ff ff f0 00 ff ff ff ff ff ff ff ff ff ff ff 892 ff ff f8 07 7f 0f ff ff ff ff ff ff ff ff ff ff 893 ff f0 08 77 7f 70 ff ff ff ff ff ff ff ff ff ff 894 f0 08 88 77 7f 77 0f ff ff ff ff ff ff ff ff f0 895 07 88 88 79 7f 77 70 ff ff ff ff ff ff ff ff 07 896 77 88 88 79 7f 77 77 0f ff ff ff ff ff ff f0 77 897 77 88 88 7f f7 f7 77 70 ff ff ff ff ff ff f0 77 898 77 88 87 77 77 7f 77 77 0f ff ff ff ff ff f0 77 899 77 87 77 77 77 77 f7 77 70 ff ff ff ff ff f0 77 900 77 77 77 77 77 77 7f 77 77 0f ff ff ff ff f0 77 901 77 77 77 77 77 77 77 f7 77 70 ff ff ff ff f0 77 902 77 77 77 77 77 77 77 7f 77 77 0f ff ff ff ff 07 903 77 77 77 77 77 77 77 77 f7 77 70 ff ff ff ff f0 904 77 77 77 77 77 77 77 77 7f 77 77 0f ff ff ff ff 905 07 77 77 77 77 77 77 77 77 f7 77 0f ff ff ff ff 906 f0 77 77 77 77 77 77 77 77 7f 77 0f ff ff ff ff 907 ff 07 77 77 77 77 77 77 77 77 f7 0f ff ff ff ff 908 ff f0 77 77 77 ff 77 77 77 77 7f 0f ff ff ff ff 909 ff ff 07 77 ff 77 77 77 77 77 77 0f ff ff ff ff 910 ff ff f0 7f 77 77 77 77 77 77 00 ff ff ff ff ff 911 ff ff ff 07 77 77 77 77 77 00 70 ff ff ff ff ff 912 ff ff ff f0 77 77 77 77 00 7f 77 0f ff ff ff ff 913 ff ff ff ff 07 77 77 00 77 77 f7 0f ff ff ff ff 914 ff ff ff ff f0 77 00 07 77 77 00 ff ff ff ff ff 915 ff ff ff ff ff 00 ff f0 77 00 70 ff ff ff ff ff 916 ff ff ff ff ff ff ff ff 00 ff 07 0f ff ff ff ff 917 ff ff ff ff ff ff ff ff ff ff f0 70 ff ff ff ff 918 ff ff ff ff ff ff ff ff ff ff f0 70 ff ff ff ff 919 ff ff ff ff ff ff ff ff ff ff f8 70 ff ff ff ff 920 ff ff ff ff ff ff ff ff ff ff ff 8f ff ff 00 00 921 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 922 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 923 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 924 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 925 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 926 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 927 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 928 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 929 00 00 20 00 00 00 40 00 00 00 01 00 08 00 00 00 930 00 00 80 04 00 00 00 00 00 00 00 00 00 00 00 01 931 00 00 00 00 00 00 00 00 00 00 ff ff ff 00 80 80 932 80 00 c0 c0 c0 00 a4 a0 a0 00 58 58 58 00 00 00 933 ff 00 dc c0 b2 00 00 00 00 00 00 00 00 00 00 00 934 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 935 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 936 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 937 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 938 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 939 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 941 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 942 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 943 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 944 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 945 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 946 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 947 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 948 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 949 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 950 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 951 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 952 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 953 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 954 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 955 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 956 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 957 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 958 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 959 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 961 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 962 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 963 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 964 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 965 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 966 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 967 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 968 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 969 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 970 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 971 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 972 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 973 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 974 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 975 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 976 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 977 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 978 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 979 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 981 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 982 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 983 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 984 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 985 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 986 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 987 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 988 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 989 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 991 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 992 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 993 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 994 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 995 00 00 00 00 00 00 01 01 01 01 01 01 01 01 01 01 996 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 997 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 998 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 999 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1000 01 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 1001 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 05 1002 00 03 03 01 00 01 01 01 01 01 01 01 01 01 01 01 1003 01 01 01 01 01 01 01 01 01 01 01 01 01 00 00 05 1004 03 03 03 01 03 00 01 01 01 01 01 01 01 01 01 01 1005 01 01 01 01 01 01 01 01 01 01 01 00 00 02 02 05 1006 03 03 03 01 03 03 00 01 01 01 01 01 01 01 01 01 1007 01 01 01 01 01 01 01 01 01 00 00 04 02 02 02 05 1008 03 06 03 01 03 03 03 00 01 01 01 01 01 01 01 01 1009 01 01 01 01 01 01 01 01 00 04 04 04 02 02 02 05 1010 03 06 03 01 03 03 03 03 00 01 01 01 01 01 01 01 1011 01 01 01 01 01 01 01 00 04 04 04 04 02 02 02 05 1012 03 01 01 03 01 03 03 03 03 00 01 01 01 01 01 01 1013 01 01 01 01 01 01 01 00 04 04 04 04 02 02 02 03 1014 03 03 03 03 03 01 03 03 03 03 00 01 01 01 01 01 1015 01 01 01 01 01 01 01 00 04 04 04 04 02 03 03 03 1016 03 03 03 03 03 03 01 03 03 03 03 00 01 01 01 01 1017 01 01 01 01 01 01 01 00 04 04 04 03 03 04 04 03 1018 03 03 03 03 03 03 03 01 03 03 03 03 00 01 01 01 1019 01 01 01 01 01 01 01 00 04 03 03 04 04 04 04 04 1020 03 03 03 03 03 03 03 03 01 03 03 03 03 00 01 01 1021 01 01 01 01 01 01 01 00 03 04 04 04 04 04 04 04 1022 04 03 03 03 03 03 03 03 03 01 03 03 03 03 00 01 1023 01 01 01 01 01 01 01 01 00 04 04 04 04 04 04 04 1024 04 04 03 03 03 03 03 03 03 03 01 03 03 03 03 00 1025 01 01 01 01 01 01 01 01 01 00 04 04 04 04 04 04 1026 04 04 04 03 03 03 03 03 03 03 03 01 03 03 03 03 1027 00 01 01 01 01 01 01 01 01 01 00 04 04 04 04 04 1028 04 04 04 04 03 03 03 03 03 03 03 03 01 03 03 03 1029 00 01 01 01 01 01 01 01 01 01 01 00 04 04 04 04 1030 04 04 04 04 04 03 03 03 03 03 03 03 03 01 03 03 1031 00 01 01 01 01 01 01 01 01 01 01 01 00 04 04 04 1032 04 04 04 04 04 04 03 03 03 03 03 03 03 03 01 03 1033 00 01 01 01 01 01 01 01 01 01 01 01 01 00 04 04 1034 04 04 04 04 01 01 03 03 03 03 03 03 03 03 03 01 1035 00 01 01 01 01 01 01 01 01 01 01 01 01 01 00 04 1036 04 04 01 01 03 03 03 03 03 03 03 03 03 03 03 03 1037 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 00 1038 03 01 03 03 03 03 03 03 03 03 03 03 03 03 00 00 1039 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1040 00 03 03 03 03 03 03 03 03 03 03 03 00 00 04 00 1041 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1042 01 00 03 03 03 03 03 03 03 03 00 00 04 01 04 04 1043 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1044 01 01 00 03 03 03 03 03 00 00 04 04 04 04 01 04 1045 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1046 01 01 01 00 03 03 00 00 00 04 04 04 04 04 00 00 1047 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1048 01 01 01 01 00 00 01 01 01 00 04 04 00 00 04 00 1049 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1050 01 01 01 01 01 01 01 01 01 01 00 00 01 01 00 04 1051 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1052 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 00 1053 04 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1054 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 00 1055 04 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1056 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 05 1057 04 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1058 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 1059 05 01 01 01 01 01 00 00 00 00 00 00 00 00 00 00 1060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1061 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1062 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1063 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1064 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1065 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1066 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1067 00 00 00 00 00 00 1068 '} 1069 1070 /* mycomputer */ 1071 15 ICON 1072 {' 1073 00 00 01 00 02 00 10 10 10 00 00 00 00 00 28 01 1074 00 00 26 00 00 00 20 20 10 00 00 00 00 00 e8 02 1075 00 00 4e 01 00 00 28 00 00 00 10 00 00 00 20 00 1076 00 00 01 00 04 00 00 00 00 00 c0 00 00 00 00 00 1077 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 1078 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 1079 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 80 80 1080 80 00 00 00 ff 00 00 ff 00 00 00 ff ff 00 ff 00 1081 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 00 00 1082 00 00 00 00 00 00 07 77 77 77 77 77 77 70 07 77 1083 77 77 77 77 77 70 00 00 00 00 00 00 00 00 f0 00 1084 00 00 00 00 00 0f f0 77 77 77 77 77 77 0f f0 70 1085 00 00 00 00 07 0f f0 70 cc cc cc cc 07 0f f0 70 1086 cc cc cc cc 07 0f f0 70 cc cc cc cc 07 0f f0 70 1087 cc cc cc cc 07 0f f0 70 cc cc cc cc 07 0f f0 70 1088 cc cc cc cc 07 0f f0 70 00 00 00 00 07 0f f0 77 1089 77 77 77 77 77 0f f0 00 00 00 00 00 00 0f 00 00 1090 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 1091 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 1092 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 1093 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 28 00 1094 00 00 20 00 00 00 40 00 00 00 01 00 04 00 00 00 1095 00 00 80 02 00 00 00 00 00 00 00 00 00 00 10 00 1096 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80 1097 00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80 1098 00 00 c0 c0 c0 00 80 80 80 00 00 00 ff 00 00 ff 1050 00 00 cc ff 33 00 99 ff 66 00 cc ff 99 00 cc ff 1051 cc 00 cc ff ff 00 cc 00 33 00 ff 00 66 00 ff 00 1052 99 00 cc 33 00 00 ff 33 33 00 ff 33 66 00 ff 33 1053 99 00 ff 33 cc 00 ff 33 ff 00 ff 66 00 00 ff 66 1054 33 00 cc 66 66 00 ff 66 99 00 ff 66 cc 00 cc 66 1055 ff 00 ff 99 00 00 ff 99 33 00 ff 99 66 00 ff 99 1056 99 00 ff 99 cc 00 ff 99 ff 00 ff cc 00 00 ff cc 1057 33 00 ff cc 66 00 ff cc 99 00 ff cc cc 00 ff cc 1058 ff 00 ff ff 33 00 cc ff 66 00 ff ff 99 00 ff ff 1059 cc 00 66 66 ff 00 66 ff 66 00 66 ff ff 00 ff 66 1060 66 00 ff 66 ff 00 ff ff 66 00 21 00 a5 00 5f 5f 1061 5f 00 77 77 77 00 86 86 86 00 96 96 96 00 cb cb 1062 cb 00 b2 b2 b2 00 d7 d7 d7 00 dd dd dd 00 e3 e3 1063 e3 00 ea ea ea 00 f1 f1 f1 00 f8 f8 f8 00 f0 fb 1064 ff 00 a4 a0 a0 00 80 80 80 00 00 00 ff 00 00 ff 1099 1065 00 00 00 ff ff 00 ff 00 00 00 ff 00 ff 00 ff ff 1100 00 00 ff ff ff 00 ff ff ff ff ff ff ff ff ff ff 1101 ff ff ff ff ff ff f0 00 00 00 00 00 00 00 00 00 1102 00 00 00 00 00 0f f0 77 77 77 77 77 77 77 77 77 1103 77 77 77 77 77 0f f0 77 77 77 77 77 77 77 77 77 1104 77 77 77 77 77 0f f0 77 77 77 77 77 77 77 77 77 1105 77 77 77 77 77 0f f0 77 77 77 77 77 77 77 77 77 1106 77 77 77 77 77 0f f0 77 77 77 77 77 77 77 77 77 1107 77 77 77 77 77 0f f0 00 00 00 00 00 00 00 00 00 1108 00 00 00 00 00 0f ff f0 00 00 00 00 00 00 00 00 1109 00 00 00 00 0f ff ff f0 77 77 77 77 77 77 77 77 1110 77 77 77 77 0f ff ff f0 77 77 77 77 77 77 77 77 1111 77 77 77 77 0f ff ff f0 77 00 00 00 00 00 00 00 1112 00 00 00 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1113 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1114 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1115 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1116 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1117 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1118 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1119 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1120 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1121 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1122 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1123 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1124 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1125 cc cc c0 77 0f ff ff f0 77 0c cc cc cc cc cc cc 1126 cc cc c0 77 0f ff ff f0 77 00 00 00 00 00 00 00 1127 00 00 00 77 0f ff ff f0 77 77 77 77 77 77 77 77 1128 77 77 77 77 0f ff ff f0 77 77 77 77 77 77 77 77 1129 77 77 77 77 0f ff ff f0 00 00 00 00 00 00 00 00 1130 00 00 00 00 0f ff ff ff ff ff ff ff ff ff ff ff 1131 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 1132 ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 1133 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1134 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1135 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1136 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1137 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1138 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1139 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1140 00 00 00 00 00 00 1066 00 00 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 1067 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6d 1068 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 6d 00 1069 6d 00 00 00 00 00 00 00 00 00 00 ff 6d 00 ff 6d 1070 00 00 00 00 00 00 00 00 00 ff 6d 00 ff 6d 00 00 1071 92 00 6d 00 00 00 6d ff 6d 00 ff 6d 00 00 92 00 1072 86 86 6d 6d 00 00 00 6d ff 6d 00 00 92 00 86 86 1073 ff 86 6d 6d 6d 00 00 00 6d 00 00 00 86 86 ff ff 1074 ff 86 6d 6d 6d 00 00 00 00 6d 92 86 86 ff ff ff 1075 ff 86 6d 6d 6d 00 00 00 00 6d 92 86 ff ff ff ff 1076 86 86 6d 6d 6d 00 00 00 00 6d 92 86 ff ff 86 86 1077 86 ff 92 6d 6d 00 00 00 00 6d 92 86 86 86 86 ff 1078 00 00 ff 00 6d 00 00 00 00 6d 92 86 86 ff 00 00 1079 ff 00 92 92 6d 00 00 00 00 6d 92 ff 00 00 ff 00 1080 92 92 6d 6d 00 00 00 00 00 6d 00 00 ff 00 92 92 1081 6d 6d 00 00 00 00 00 00 00 00 6d 6d 6d 6d 6d 6d 1082 00 00 00 00 00 00 fe 3f 00 00 f9 9f 00 00 e6 4f 1083 00 00 99 07 00 00 64 13 00 00 10 40 00 00 81 00 1084 00 00 c4 01 00 00 e0 01 00 00 e0 01 00 00 e0 01 1085 00 00 e0 35 00 00 e0 d1 00 00 e3 43 00 00 ed 0f 1086 00 00 f0 3f 00 00 1141 1087 '} 1142 1088 … … 1144 1090 34 ICON 1145 1091 {' 1146 00 00 01 00 02 00 10 10 10 00 00 00 00 00 28 011147 00 00 26 00 00 00 20 20 10 00 00 00 00 00 e8 021148 00 00 4e 01 00 00 28 00 00 00 10 00 00 00 20 001149 00 00 01 00 0 4 00 00 00 00 00 c0 0000 00 00 001150 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 001092 00 00 01 00 02 00 20 20 00 00 00 00 00 00 a8 08 1093 00 00 26 00 00 00 10 10 00 00 00 00 00 00 68 05 1094 00 00 ce 08 00 00 28 00 00 00 20 00 00 00 40 00 1095 00 00 01 00 08 00 00 00 00 00 80 04 00 00 00 00 1096 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1151 1097 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 1152 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 80 80 1098 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00 c0 dc 1099 c0 00 f0 ca a6 00 04 04 04 00 08 08 08 00 0c 0c 1100 0c 00 11 11 11 00 16 16 16 00 1c 1c 1c 00 22 22 1101 22 00 29 29 29 00 55 55 55 00 4d 4d 4d 00 42 42 1102 42 00 39 39 39 00 80 7c ff 00 50 50 ff 00 93 00 1103 d6 00 ff ec cc 00 c6 d6 ef 00 d6 e7 e7 00 90 a9 1104 ad 00 00 00 33 00 00 00 66 00 00 00 99 00 00 00 1105 cc 00 00 33 00 00 00 33 33 00 00 33 66 00 00 33 1106 99 00 00 33 cc 00 00 33 ff 00 00 66 00 00 00 66 1107 33 00 00 66 66 00 00 66 99 00 00 66 cc 00 00 66 1108 ff 00 00 99 00 00 00 99 33 00 00 99 66 00 00 99 1109 99 00 00 99 cc 00 00 99 ff 00 00 cc 00 00 00 cc 1110 33 00 00 cc 66 00 00 cc 99 00 00 cc cc 00 00 cc 1111 ff 00 00 ff 66 00 00 ff 99 00 00 ff cc 00 33 00 1112 00 00 33 00 33 00 33 00 66 00 33 00 99 00 33 00 1113 cc 00 33 00 ff 00 33 33 00 00 33 33 33 00 33 33 1114 66 00 33 33 99 00 33 33 cc 00 33 33 ff 00 33 66 1115 00 00 33 66 33 00 33 66 66 00 33 66 99 00 33 66 1116 cc 00 33 66 ff 00 33 99 00 00 33 99 33 00 33 99 1117 66 00 33 99 99 00 33 99 cc 00 33 99 ff 00 33 cc 1118 00 00 33 cc 33 00 33 cc 66 00 33 cc 99 00 33 cc 1119 cc 00 33 cc ff 00 33 ff 33 00 33 ff 66 00 33 ff 1120 99 00 33 ff cc 00 33 ff ff 00 66 00 00 00 66 00 1121 33 00 66 00 66 00 66 00 99 00 66 00 cc 00 66 00 1122 ff 00 66 33 00 00 66 33 33 00 66 33 66 00 66 33 1123 99 00 66 33 cc 00 66 33 ff 00 66 66 00 00 66 66 1124 33 00 66 66 66 00 66 66 99 00 66 66 cc 00 66 99 1125 00 00 66 99 33 00 66 99 66 00 66 99 99 00 66 99 1126 cc 00 66 99 ff 00 66 cc 00 00 66 cc 33 00 66 cc 1127 99 00 66 cc cc 00 66 cc ff 00 66 ff 00 00 66 ff 1128 33 00 66 ff 99 00 66 ff cc 00 cc 00 ff 00 ff 00 1129 cc 00 99 99 00 00 99 33 99 00 99 00 99 00 99 00 1130 cc 00 99 00 00 00 99 33 33 00 99 00 66 00 99 33 1131 cc 00 99 00 ff 00 99 66 00 00 99 66 33 00 99 33 1132 66 00 99 66 99 00 99 66 cc 00 99 33 ff 00 99 99 1133 33 00 99 99 66 00 99 99 99 00 99 99 cc 00 99 99 1134 ff 00 99 cc 00 00 99 cc 33 00 66 cc 66 00 99 cc 1135 99 00 99 cc cc 00 99 cc ff 00 99 ff 00 00 99 ff 1136 33 00 99 cc 66 00 99 ff 99 00 99 ff cc 00 99 ff 1137 ff 00 cc 00 00 00 99 00 33 00 cc 00 66 00 cc 00 1138 99 00 cc 00 cc 00 99 33 00 00 cc 33 33 00 cc 33 1139 66 00 cc 33 99 00 cc 33 cc 00 cc 33 ff 00 cc 66 1140 00 00 cc 66 33 00 99 66 66 00 cc 66 99 00 cc 66 1141 cc 00 99 66 ff 00 cc 99 00 00 cc 99 33 00 cc 99 1142 66 00 cc 99 99 00 cc 99 cc 00 cc 99 ff 00 cc cc 1143 00 00 cc cc 33 00 cc cc 66 00 cc cc 99 00 cc cc 1144 cc 00 cc cc ff 00 cc ff 00 00 cc ff 33 00 99 ff 1145 66 00 cc ff 99 00 cc ff cc 00 cc ff ff 00 cc 00 1146 33 00 ff 00 66 00 ff 00 99 00 cc 33 00 00 ff 33 1147 33 00 ff 33 66 00 ff 33 99 00 ff 33 cc 00 ff 33 1148 ff 00 ff 66 00 00 ff 66 33 00 cc 66 66 00 ff 66 1149 99 00 ff 66 cc 00 cc 66 ff 00 ff 99 00 00 ff 99 1150 33 00 ff 99 66 00 ff 99 99 00 ff 99 cc 00 ff 99 1151 ff 00 ff cc 00 00 ff cc 33 00 ff cc 66 00 ff cc 1152 99 00 ff cc cc 00 ff cc ff 00 ff ff 33 00 cc ff 1153 66 00 ff ff 99 00 ff ff cc 00 66 66 ff 00 66 ff 1154 66 00 66 ff ff 00 ff 66 66 00 ff 66 ff 00 ff ff 1155 66 00 21 00 a5 00 5f 5f 5f 00 77 77 77 00 86 86 1156 86 00 96 96 96 00 cb cb cb 00 b2 b2 b2 00 d7 d7 1157 d7 00 dd dd dd 00 e3 e3 e3 00 ea ea ea 00 f1 f1 1158 f1 00 f8 f8 f8 00 f0 fb ff 00 a4 a0 a0 00 80 80 1153 1159 80 00 00 00 ff 00 00 ff 00 00 00 ff ff 00 ff 00 1154 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 ff ff 1155 ff ff ff ff ff ff ff ff ff ff ff ff ff ff f0 00 1156 00 00 00 00 00 00 f0 99 00 aa 00 cc 0b b0 f0 99 1157 00 aa 00 cc 0b b0 f0 99 00 aa 00 cc 0b b0 f0 99 1158 00 aa 00 cc 0b b0 f0 99 00 aa 00 cc 0b b0 f0 99 1159 00 aa 00 cc 0b b0 f0 99 00 aa 00 cc 0b b0 f0 99 1160 00 00 00 cc 0b b0 f0 99 0f ff f0 cc 0b b0 f0 99 1161 0f ff f0 cc 00 00 f0 00 0f ff f0 cc 0f ff ff ff 1162 ff ff f0 cc 0f ff ff ff ff ff f0 00 0f ff 00 00 1163 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 1164 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 1165 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 1166 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff 28 00 1167 00 00 20 00 00 00 40 00 00 00 01 00 04 00 00 00 1168 00 00 80 02 00 00 00 00 00 00 00 00 00 00 10 00 1160 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00 00 00 1161 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1162 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1163 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1164 00 9a 4b 00 00 00 00 00 00 00 00 00 00 00 00 00 1165 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 74 1166 4c 9a 4b 4b 4b 4b 4b 00 00 00 00 00 00 00 00 00 1167 00 00 00 00 00 00 00 00 00 00 00 00 93 9a 74 74 1168 4c bd 4b 4b 4b 4b 4b 4b 4b 4c 00 00 00 00 00 00 1169 00 00 00 00 00 00 00 00 00 00 74 4c 74 93 74 52 1170 4b 9a 4c 4b 4b 4b 4b 4b 4b 4c 00 00 00 00 00 00 1171 00 00 00 00 00 00 00 00 00 00 4b 00 22 44 4b 44 1172 23 9a 4c 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1173 00 00 3d 00 00 00 00 00 00 3d 4b 00 00 00 1d 00 1174 00 bd 4c 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1175 00 00 00 00 00 00 00 00 00 3d 4b 00 00 1d 1d 1d 1176 1d bd 52 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1177 00 00 22 23 23 00 00 00 00 3d 4b 00 00 1d 1d 1d 1178 1d bd 52 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1179 00 00 23 23 23 23 23 23 1d 22 4c 1d 1d 1d 1d 00 1180 00 c3 52 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1181 00 00 23 23 23 23 23 23 23 4b 4c 1d 1d 1d 1d 00 1182 00 c3 52 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1183 00 00 23 23 23 23 23 23 23 4a 4c 1d 1d 1d 1d 00 1184 00 c3 52 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1185 00 00 23 23 23 23 23 23 23 44 4c 1d 00 00 00 00 1186 00 c3 52 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1187 00 00 23 23 23 23 23 23 23 44 4c 1d 00 00 00 00 1188 23 c3 4c 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1189 00 00 23 23 23 23 23 23 23 44 4c 00 22 4b 4b 4a 1190 44 93 4b 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1191 00 00 23 23 23 23 23 23 23 23 93 4a 4b 4b 93 c3 1192 74 74 4b 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1193 00 00 23 23 23 23 23 23 23 23 4b c3 c3 c3 bd bd 1194 4b 74 4b 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1195 00 00 23 23 23 23 23 23 23 22 4b c3 bd 9a 9a 4c 1196 00 75 4a 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1197 00 00 22 23 23 23 23 22 22 1d 44 44 44 43 44 74 1198 9a c3 4b 4b 4b 4b 4b 4b 4c 4c 00 00 00 00 00 00 1199 00 00 00 22 22 22 1d 1d 22 44 bd bd bd bd bd bd 1200 9a 93 52 4b 4b 4b 4b 4b 4b 4b 00 00 00 00 00 00 1201 00 00 00 23 4b 74 99 c3 ff ff ff c3 bd bd 9a 7a 1202 74 74 74 74 74 4c 44 22 00 00 00 00 00 00 00 00 1203 00 00 ff ff ff ff ff 9a 74 74 74 52 4c 4c 4c 4c 1204 4b 44 1d 00 00 00 61 00 00 00 00 00 00 00 00 00 1205 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1206 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1207 00 00 00 00 00 00 00 6d 6d 92 43 00 00 00 00 00 1208 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1209 00 00 00 00 00 00 6d 6d 6d 6d 43 6d 6d 00 00 00 1210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1211 00 00 00 00 00 00 43 00 43 00 6d 6d 6d 43 00 00 1212 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1213 00 00 00 00 00 00 00 00 00 00 92 92 6d 43 00 00 1214 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1215 00 00 00 00 00 00 92 ff 00 00 92 92 6d 43 00 00 1216 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1217 00 00 00 00 00 00 92 92 00 00 92 00 00 00 00 00 1218 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1219 00 00 00 00 00 3d 92 92 92 43 43 00 00 00 00 00 1220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1221 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1222 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1223 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1224 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 1225 c3 ff ff ff 00 3f ff fc 00 07 ff e0 00 07 ff e0 1226 00 07 ff e0 00 07 e7 e0 00 07 e0 e0 00 07 e0 20 1227 00 07 e0 00 00 07 e0 00 00 07 e0 00 00 07 e0 00 1228 00 07 e0 00 00 07 e0 00 00 07 e0 00 00 07 e0 00 1229 00 07 e0 00 00 07 e0 00 00 07 e0 00 00 07 e0 00 1230 00 07 e0 00 00 7f e0 00 0f ff fe 00 ff ff fe 00 1231 7f ff fe 00 7f ff fe e0 7f ff fe 20 7f ff fe 24 1232 7f ff fe 01 ff ff fe 07 ff ff ff ff ff ff 28 00 1233 00 00 10 00 00 00 20 00 00 00 01 00 08 00 00 00 1234 00 00 40 01 00 00 00 00 00 00 00 00 00 00 00 00 1169 1235 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80 1170 1236 00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80 1171 00 00 c0 c0 c0 00 80 80 80 00 00 00 ff 00 00 ff 1237 00 00 c0 c0 c0 00 c0 dc c0 00 f0 ca a6 00 04 04 1238 04 00 08 08 08 00 0c 0c 0c 00 11 11 11 00 16 16 1239 16 00 1c 1c 1c 00 22 22 22 00 29 29 29 00 55 55 1240 55 00 4d 4d 4d 00 42 42 42 00 39 39 39 00 80 7c 1241 ff 00 50 50 ff 00 93 00 d6 00 ff ec cc 00 c6 d6 1242 ef 00 d6 e7 e7 00 90 a9 ad 00 00 00 33 00 00 00 1243 66 00 00 00 99 00 00 00 cc 00 00 33 00 00 00 33 1244 33 00 00 33 66 00 00 33 99 00 00 33 cc 00 00 33 1245 ff 00 00 66 00 00 00 66 33 00 00 66 66 00 00 66 1246 99 00 00 66 cc 00 00 66 ff 00 00 99 00 00 00 99 1247 33 00 00 99 66 00 00 99 99 00 00 99 cc 00 00 99 1248 ff 00 00 cc 00 00 00 cc 33 00 00 cc 66 00 00 cc 1249 99 00 00 cc cc 00 00 cc ff 00 00 ff 66 00 00 ff 1250 99 00 00 ff cc 00 33 00 00 00 33 00 33 00 33 00 1251 66 00 33 00 99 00 33 00 cc 00 33 00 ff 00 33 33 1252 00 00 33 33 33 00 33 33 66 00 33 33 99 00 33 33 1253 cc 00 33 33 ff 00 33 66 00 00 33 66 33 00 33 66 1254 66 00 33 66 99 00 33 66 cc 00 33 66 ff 00 33 99 1255 00 00 33 99 33 00 33 99 66 00 33 99 99 00 33 99 1256 cc 00 33 99 ff 00 33 cc 00 00 33 cc 33 00 33 cc 1257 66 00 33 cc 99 00 33 cc cc 00 33 cc ff 00 33 ff 1258 33 00 33 ff 66 00 33 ff 99 00 33 ff cc 00 33 ff 1259 ff 00 66 00 00 00 66 00 33 00 66 00 66 00 66 00 1260 99 00 66 00 cc 00 66 00 ff 00 66 33 00 00 66 33 1261 33 00 66 33 66 00 66 33 99 00 66 33 cc 00 66 33 1262 ff 00 66 66 00 00 66 66 33 00 66 66 66 00 66 66 1263 99 00 66 66 cc 00 66 99 00 00 66 99 33 00 66 99 1264 66 00 66 99 99 00 66 99 cc 00 66 99 ff 00 66 cc 1265 00 00 66 cc 33 00 66 cc 99 00 66 cc cc 00 66 cc 1266 ff 00 66 ff 00 00 66 ff 33 00 66 ff 99 00 66 ff 1267 cc 00 cc 00 ff 00 ff 00 cc 00 99 99 00 00 99 33 1268 99 00 99 00 99 00 99 00 cc 00 99 00 00 00 99 33 1269 33 00 99 00 66 00 99 33 cc 00 99 00 ff 00 99 66 1270 00 00 99 66 33 00 99 33 66 00 99 66 99 00 99 66 1271 cc 00 99 33 ff 00 99 99 33 00 99 99 66 00 99 99 1272 99 00 99 99 cc 00 99 99 ff 00 99 cc 00 00 99 cc 1273 33 00 66 cc 66 00 99 cc 99 00 99 cc cc 00 99 cc 1274 ff 00 99 ff 00 00 99 ff 33 00 99 cc 66 00 99 ff 1275 99 00 99 ff cc 00 99 ff ff 00 cc 00 00 00 99 00 1276 33 00 cc 00 66 00 cc 00 99 00 cc 00 cc 00 99 33 1277 00 00 cc 33 33 00 cc 33 66 00 cc 33 99 00 cc 33 1278 cc 00 cc 33 ff 00 cc 66 00 00 cc 66 33 00 99 66 1279 66 00 cc 66 99 00 cc 66 cc 00 99 66 ff 00 cc 99 1280 00 00 cc 99 33 00 cc 99 66 00 cc 99 99 00 cc 99 1281 cc 00 cc 99 ff 00 cc cc 00 00 cc cc 33 00 cc cc 1282 66 00 cc cc 99 00 cc cc cc 00 cc cc ff 00 cc ff 1283 00 00 cc ff 33 00 99 ff 66 00 cc ff 99 00 cc ff 1284 cc 00 cc ff ff 00 cc 00 33 00 ff 00 66 00 ff 00 1285 99 00 cc 33 00 00 ff 33 33 00 ff 33 66 00 ff 33 1286 99 00 ff 33 cc 00 ff 33 ff 00 ff 66 00 00 ff 66 1287 33 00 cc 66 66 00 ff 66 99 00 ff 66 cc 00 cc 66 1288 ff 00 ff 99 00 00 ff 99 33 00 ff 99 66 00 ff 99 1289 99 00 ff 99 cc 00 ff 99 ff 00 ff cc 00 00 ff cc 1290 33 00 ff cc 66 00 ff cc 99 00 ff cc cc 00 ff cc 1291 ff 00 ff ff 33 00 cc ff 66 00 ff ff 99 00 ff ff 1292 cc 00 66 66 ff 00 66 ff 66 00 66 ff ff 00 ff 66 1293 66 00 ff 66 ff 00 ff ff 66 00 21 00 a5 00 5f 5f 1294 5f 00 77 77 77 00 86 86 86 00 96 96 96 00 cb cb 1295 cb 00 b2 b2 b2 00 d7 d7 d7 00 dd dd dd 00 e3 e3 1296 e3 00 ea ea ea 00 f1 f1 f1 00 f8 f8 f8 00 f0 fb 1297 ff 00 a4 a0 a0 00 80 80 80 00 00 00 ff 00 00 ff 1172 1298 00 00 00 ff ff 00 ff 00 00 00 ff 00 ff 00 ff ff 1173 00 00 ff ff ff 00 ff ff ff ff ff ff ff ff ff ff 1174 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 1175 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 1176 ff ff ff ff ff ff ff ff f0 00 00 00 00 00 00 00 1177 00 00 00 ff ff ff ff ff f0 cc c0 02 20 0b b0 0d 1178 d0 0a a0 ff ff ff ff ff f0 c0 c0 02 20 0b b0 0d 1179 d0 0a a0 ff ff ff ff ff f0 c0 c0 02 20 0b b0 0d 1180 d0 0a a0 ff ff ff ff ff f0 c0 c0 02 20 0b b0 0d 1181 d0 0a a0 ff ff ff ff ff f0 c0 c0 02 20 0b b0 0d 1182 d0 0a a0 ff ff ff ff ff f0 c0 c0 02 20 0b b0 0d 1183 d0 0a a0 ff ff ff ff ff f0 c0 c0 02 20 0b b0 0d 1184 d0 0a a0 ff ff ff ff ff f0 c0 c0 02 20 0b b0 0d 1185 d0 0a a0 ff ff ff ff ff f0 c0 c0 02 20 0b b0 0d 1186 d0 0a a0 ff ff ff ff ff f0 cc c0 02 20 0b b0 0d 1187 d0 0a a0 ff ff ff ff ff f0 cc c0 02 20 0b b0 0d 1188 d0 0a a0 ff ff ff ff ff f0 cc c0 02 20 0b b0 0d 1189 d0 0a a0 ff ff ff ff ff f0 cc c0 02 20 0b b0 0d 1190 d0 0a a0 ff ff ff ff ff f0 cc c0 02 20 0b b0 0d 1191 d0 0a a0 ff ff ff ff ff f0 cc c0 02 20 0b b0 0d 1192 d0 00 00 ff ff ff ff ff f0 cc c0 02 20 0b b0 0d 1193 d0 ff ff ff ff ff ff ff f0 cc c0 02 20 0b b0 0d 1194 d0 ff ff ff ff ff ff ff f0 cc c0 02 20 0b b0 0d 1195 d0 ff ff ff ff ff ff ff f0 cc c0 00 00 0b b0 0d 1196 d0 ff ff ff ff ff ff ff f0 cc c0 ff ff 0b b0 0d 1197 d0 ff ff ff ff ff ff ff f0 cc c0 ff ff 00 00 0d 1198 d0 ff ff ff ff ff ff ff f0 00 00 ff ff ff ff 0d 1199 d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff 0d 1200 d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 1201 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 1202 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 1203 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 1204 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 1205 ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 1206 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1207 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1208 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1209 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1211 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1212 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1213 00 00 00 00 00 00 1299 00 00 ff ff ff 00 00 00 00 00 00 00 43 22 43 22 1300 22 22 22 22 00 00 00 00 00 00 00 44 74 bd 74 93 1301 4b 4c 52 22 00 00 00 00 00 00 44 93 22 4b 00 9a 1302 4a 4b 4b 22 00 00 00 00 00 00 22 93 22 4b 44 bd 1303 4a 4b 4b 22 00 00 00 00 24 00 22 93 22 44 23 bd 1304 4a 4b 4b 22 00 00 00 00 4b 23 22 93 00 22 44 bd 1305 4a 4b 4c 22 00 00 00 00 4b 4b 22 93 00 22 44 99 1306 4b 4b 4c 22 00 00 00 00 4b 4b 22 93 1d 23 9a 9a 1307 4b 4b 4b 22 00 00 00 00 00 1d 1d 93 9a 00 9a 93 1308 44 4b 52 22 00 00 00 00 6e 00 99 9a 6e 74 74 74 1309 74 4b 22 00 00 00 00 43 00 92 4a 22 22 22 1d 3d 1310 3d 61 00 00 00 00 00 00 00 00 6d 43 43 00 00 00 1311 00 00 00 00 00 00 00 00 00 43 6d 43 92 00 00 00 1312 00 00 00 00 00 00 00 00 00 43 ff 43 92 00 00 00 1313 00 00 00 00 00 00 00 00 00 67 43 00 00 00 00 00 1314 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1315 00 00 00 00 00 00 fc 03 00 00 f8 03 00 00 f0 03 1316 00 00 90 03 00 00 80 03 00 00 80 03 00 00 80 03 1317 00 00 80 03 00 00 81 03 00 00 90 03 00 00 a0 0f 1318 00 00 c0 ff 00 00 e0 ff 00 00 e0 ff 00 00 e1 ff 1319 00 00 ff ff 00 00 1214 1320 '} 1215 1321 … … 1232 1338 */ 1233 1339 #include "shell32_En.orc" 1340 1341 /* CB: the new about dialog isn't implemented for these languages */ 1342 1234 1343 //#include "shell32_Ca.orc" 1235 1344 //#include "shell32_Cs.orc" -
trunk/src/shell32/shresdef.h
r3217 r3243 1 /* $Id: shresdef.h,v 1. 3 2000-03-24 17:17:30cbratschi Exp $ */1 /* $Id: shresdef.h,v 1.4 2000-03-26 16:34:56 cbratschi Exp $ */ 2 2 3 3 /* … … 30 30 #define IDS_SHV_COLUMN4DV 13 31 31 32 #define IDS_DESKTOP 2033 #define IDS_MYCOMPUTER 2134 35 32 #define IDS_SELECT 22 36 33 #define IDS_OPEN 23 … … 40 37 #define IDS_VIEW_DETAILS 27 41 38 39 #define IDS_SHV_INVALID_FILENAME_TITLE 28 40 #define IDS_SHV_INVALID_FILENAME 29 41 #define IDS_SHV_INVALID_MOVE_TITLE 30 42 #define IDS_SHV_INVALID_MOVE 31 43 44 #define ID_LISTVIEW 2000 45 #define ID_NEWFOLDER 0x7053 46 47 #define IDS_ABOUTBOX 101 48 #define IDS_DOCUMENTFOLDERS 102 49 #define IDS_PERSONAL 103 50 #define IDS_FAVORITES 104 51 #define IDS_PATH 105 52 #define IDS_DESKTOP 106 53 54 #define IDS_FONTS 108 55 #define IDS_MYCOMPUTER 110 56 #define IDS_SYSTEMFOLDERS 112 57 #define IDS_LOCALHARDRIVES 113 58 #define IDS_FILENOTFOUND 114 42 59 43 60 #endif /* __WINE_SHELL_RES_H */ -
trunk/src/shell32/shv_bg_cmenu.cpp
r1558 r3243 1 /* $Id: shv_bg_cmenu.cpp,v 1. 2 1999-11-02 20:38:48 phallerExp $ */1 /* $Id: shv_bg_cmenu.cpp,v 1.3 2000-03-26 16:34:56 cbratschi Exp $ */ 2 2 3 3 /* … … 5 5 * Win32 SHELL32 Subsystem for OS/2 6 6 * 1998/05/19 PH Patrick Haller (haller@zebra.fh-weingarten.de) 7 * 8 * Corel WINE 20000324 level 7 9 */ 8 10
Note:
See TracChangeset
for help on using the changeset viewer.