MCPcopy Create free account
hub / github.com/derceg/explorerplusplus / CopyFileDescriptorData

Method CopyFileDescriptorData

Explorer++/Helper/DropHandler.cpp:417–670  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

415}
416
417HRESULT DropHandler::CopyFileDescriptorData(IDataObject *pDataObject,
418 FILEGROUPDESCRIPTORW *pfgd,std::list<std::wstring> &PastedFileList)
419{
420 FILETIME *pftCreationTime = NULL;
421 FILETIME *pftLastAccessTime = NULL;
422 FILETIME *pftLastWriteTime = NULL;
423 DWORD dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
424 DWORD nBytesToWrite = 0;
425
426 HRESULT hr = E_FAIL;
427
428 for(unsigned int i = 0;i < pfgd->cItems;i++)
429 {
430 if(pfgd->fgd[i].dwFlags & FD_ATTRIBUTES)
431 {
432 dwFileAttributes = pfgd->fgd[i].dwFileAttributes;
433 }
434
435 if(pfgd->fgd[i].dwFlags & FD_FILESIZE)
436 {
437 nBytesToWrite = pfgd->fgd[i].nFileSizeLow;
438 }
439
440 if(pfgd->fgd[i].dwFlags & FD_LINKUI)
441 {
442 /* TODO: Complete. */
443 }
444
445 if(pfgd->fgd[i].dwFlags & FD_CREATETIME)
446 {
447 pftCreationTime = &pfgd->fgd[i].ftCreationTime;
448 }
449
450 if(pfgd->fgd[i].dwFlags & FD_ACCESSTIME)
451 {
452 pftLastAccessTime = &pfgd->fgd[i].ftLastAccessTime;
453 }
454
455 if(pfgd->fgd[i].dwFlags & FD_WRITESTIME)
456 {
457 pftLastWriteTime = &pfgd->fgd[i].ftLastWriteTime;
458 }
459
460 /*if(pfgd->fgd[i].dwFlags & FD_UNICODE)
461 {
462 }*/
463
464 FORMATETC ftcfchg;
465 FORMATETC ftcfcis;
466 FORMATETC ftcfcstg;
467 STGMEDIUM stgFileContents = {0};
468 BOOL bDataCopied = FALSE;
469 BOOL bDataRetrieved = FALSE;
470 LPBYTE pBuffer = NULL;
471
472 SetFORMATETC(&ftcfchg,(CLIPFORMAT)RegisterClipboardFormat(CFSTR_FILECONTENTS),
473 NULL,DVASPECT_CONTENT,i,TYMED_HGLOBAL);
474 SetFORMATETC(&ftcfcis,(CLIPFORMAT)RegisterClipboardFormat(CFSTR_FILECONTENTS),

Callers

nothing calls this directly

Calls 4

SetFORMATETCFunction · 0.85
GetDataMethod · 0.80
SetDataMethod · 0.80
ReleaseMethod · 0.45

Tested by

no test coverage detected