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

Method CopyDIBV5Data

Explorer++/Helper/DropHandler.cpp:755–850  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

753}
754
755HRESULT DropHandler::CopyDIBV5Data(IDataObject *pDataObject,
756 std::list<std::wstring> &PastedFileList)
757{
758 STGMEDIUM stg;
759 HRESULT hr;
760
761 hr = pDataObject->GetData(&m_ftcDIBV5,&stg);
762
763 if(hr == S_OK)
764 {
765 auto *pbmp = static_cast<BITMAPINFO *>(GlobalLock(stg.hGlobal));
766
767 if(pbmp != NULL)
768 {
769 SYSTEMTIME st;
770 FILETIME ft;
771 FILETIME lft;
772 TCHAR szTime[512];
773
774 GetLocalTime(&st);
775 SystemTimeToFileTime(&st,&ft);
776 LocalFileTimeToFileTime(&ft,&lft);
777 CreateFileTimeString(&lft,szTime,SIZEOF_ARRAY(szTime),FALSE);
778
779 for(int i = 0;i < lstrlen(szTime);i++)
780 {
781 if(szTime[i] == '/')
782 {
783 szTime[i] = '-';
784 }
785 else if(szTime[i] == ':')
786 {
787 szTime[i] = '.';
788 }
789 }
790
791 TCHAR szFullFileName[MAX_PATH];
792 TCHAR szFileName[MAX_PATH];
793
794 /* TODO: Move text into string table. */
795 StringCchPrintf(szFileName,SIZEOF_ARRAY(szFileName),
796 _T("Clipboard Image (%s).bmp"),szTime);
797
798 PathCombine(szFullFileName,m_szDestDirectory,
799 szFileName);
800
801 HANDLE hFile = CreateFile(szFullFileName,
802 GENERIC_WRITE,0,NULL,CREATE_NEW,
803 FILE_ATTRIBUTE_NORMAL,NULL);
804
805 if(hFile != INVALID_HANDLE_VALUE)
806 {
807 auto dwSize = static_cast<DWORD>(sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + (GlobalSize(stg.hGlobal) - sizeof(BITMAPINFOHEADER)));
808
809 auto pData = new BYTE[dwSize];
810
811 auto *pbfh = (BITMAPFILEHEADER *)pData;
812

Callers

nothing calls this directly

Calls 2

CreateFileTimeStringFunction · 0.85
GetDataMethod · 0.80

Tested by

no test coverage detected