博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC如何复制多个文件到剪贴板
阅读量:4179 次
发布时间:2019-05-26

本文共 1707 字,大约阅读时间需要 5 分钟。

BOOL CopyFilesToClipboard( std::vector
const & vecFiles ){ RETURN_IF_FALSE_EX( FALSE, vecFiles.size() ); UINT uDropEffect = RegisterClipboardFormat(_T("Preferred DropEffect")); HGLOBAL hGblEffect = GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE, sizeof(DWORD)); DWORD *pDWDropEffect = (DWORD*)GlobalLock(hGblEffect); *pDWDropEffect = DROPEFFECT_COPY; GlobalUnlock(hGblEffect); DROPFILES dropFiles; dropFiles.pFiles = sizeof(DROPFILES); dropFiles.pt.x = 0; dropFiles.pt.y = 0; dropFiles.fNC = FALSE; dropFiles.fWide = TRUE; UINT uFileListLen = 0; for (std::vector
::const_iterator it = vecFiles.begin(); it != vecFiles.end(); ++it) { uFileListLen += (it->GetLength() + 1);//尾部一个\0结束符 } UINT uGblLen = sizeof(DROPFILES) + sizeof(TCHAR)* (uFileListLen + 1); HGLOBAL hGblFiles = GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE, uGblLen); BYTE * pData = (BYTE*)GlobalLock(hGblFiles); memcpy(pData, (LPVOID)(&dropFiles), sizeof(DROPFILES)); BYTE *pFileList = pData + sizeof(DROPFILES); for (std::vector
::const_iterator it = vecFiles.begin(); it != vecFiles.end(); ++it) { UINT uLen = (it->GetLength() + 1) * sizeof(TCHAR); memcpy(pFileList, (BYTE*)(LPCTSTR)(*it), uLen); pFileList += uLen; } GlobalUnlock(hGblFiles); if( OpenClipboard(NULL) ) { EmptyClipboard(); SetClipboardData( CF_HDROP, hGblFiles ); SetClipboardData(uDropEffect,hGblEffect); CloseClipboard(); return TRUE; } else { ::GlobalFree(hGblEffect); ::GlobalFree(hGblFiles); } return FALSE;}

 

转载地址:http://xwmai.baihongyu.com/

你可能感兴趣的文章
android ArrayList<String> 转 String[]
查看>>
RecyclerView baseadapter
查看>>
Android中应用程序如何获得系统签名权限
查看>>
MPAndroidChart 动态更新
查看>>
Recycler表格(excelPanel)
查看>>
android一行代码实现沉浸式布局效果
查看>>
json, recyclerView问题
查看>>
cmake处理多源文件目录的方法
查看>>
Service Intent must be explicit
查看>>
android studio SDK开发
查看>>
studio 统计代码的行数
查看>>
字符数组和16进制互换
查看>>
PHP项目中出现致命错误: Class 'Redis' not found
查看>>
There is no tracking information for the current branch.
查看>>
fatal: refusing to merge unrelated histories
查看>>
Git命令还原未提交的变更
查看>>
Linux系统中环境变量的配置
查看>>
Linux系统中配置脚本程序开机启动
查看>>
让Linux系统上的nginx支持php程序
查看>>
源码编译安装LNMP环境之Nginx篇
查看>>