COleDataSource m_oleDataSource;
UINT uBufferSize =0;//测试只用一个文件
{
uBufferSize += lstrlen ( _T("d://1111111.rar") ) + 1;//测试一个文件
}
uBufferSize= sizeof(DROPFILES) + sizeof(TCHAR) * (uBufferSize + 1);
HGLOBAL hMemData = GlobalAlloc(GPTR,uBufferSize);
ASSERT(hMemData != NULL);
LPDROPFILES lpDropFiles = (LPDROPFILES)GlobalLock(hMemData); //锁定之,并设置相关成员
ASSERT(lpDropFiles != NULL);
lpDropFiles->pFiles = sizeof(DROPFILES);
#ifdef _UNICODE
lpDropFiles->fWide = TRUE;
#else
lpDropFiles->fWide = FALSE;
#endif
TCHAR *pszStart = (TCHAR*)((LPBYTE)lpDropFiles + sizeof(DROPFILES));
{
lstrcpy(pszStart, _T("d://1111111.rar"));
pszStart= 1 + _tcschr ( pszStart, '/0' );//下次的起始位置是上一次结尾+1
}
m_oleDataSource.Empty();
m_oleDataSource.CacheGlobalData(CF_HDROP, hMemData);//即时方式,适合少量数据
CRect m_Rect;
GetClientRect(&m_Rect);
ClientToScreen(&m_Rect);//在此范围内拖动无效
DROPEFFECT DropResult = m_oleDataSource.DoDragDrop(DROPEFFECT_MOVE | DROPEFFECT_COPY,&m_Rect);