COleDataSource 类中的 CacheGlobalData 方法用于在数据源对象中缓存全局内存中的数据,以便在拖放操作或其他剪贴板操作中使用。其声明可能如下:
BOOL CacheGlobalData(CLIPFORMAT cfFormat, HGLOBAL hGlobal);

  •  cfFormat 参数表示要缓存的数据的格式,它是一个 CLIPFORMAT 类型的标识符。

  •  hGlobal 参数是一个全局内存句柄,包含了要缓存的数据。


使用这个方法,你可以将不同格式的全局内存数据缓存到 COleDataSource 对象中。例如:
COleDataSource* pDataSource = new COleDataSource;

CString strData = _T("Hello, World!");
HGLOBAL hGlobal = ::GlobalAlloc(GHND | GMEM_SHARE, (strData.GetLength() + 1) * sizeof(TCHAR));
LPTSTR pGlobalData = static_cast<LPTSTR>(::GlobalLock(hGlobal));
_tcscpy_s(pGlobalData, strData.GetLength() + 1, strData);
::GlobalUnlock(hGlobal);

pDataSource->CacheGlobalData(CF_TEXT, hGlobal);

// 在这里可以继续添加其他格式的数据

// 开始拖放操作
DROPEFFECT dropEffect = pDataSource->DoDragDrop(DROPEFFECT_COPY | DROPEFFECT_MOVE);

// 处理拖放操作的结果

// 释放数据源对象
delete pDataSource;

在这个例子中,COleDataSource 对象通过 new 运算符创建,然后使用 CacheGlobalData 方法将文本数据的全局内存句柄缓存到数据源中。在实际应用中,你可能需要根据需要多次调用 CacheGlobalData 方法,缓存不同格式的数据。在拖放操作完成后,通过 delete 运算符释放数据源对象。


转载请注明出处:http://www.zyzy.cn/article/detail/21323/MFC/COleDataSource