| 753 | } |
| 754 | |
| 755 | HRESULT 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 |
nothing calls this directly
no test coverage detected