COleDataSource::DelayRenderFileData 的声明可能如下:
BOOL DelayRenderFileData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
- lpFormatEtc 参数是一个指向 FORMATETC 结构的指针,用于指定渲染的格式。
- lpStgMedium 参数是一个指向 STGMEDIUM 结构的指针,用于指定存储介质的信息。
使用这个方法时,你可以在数据源对象中延迟渲染文件数据。例如:
COleDataSource* pDataSource = new COleDataSource;
FORMATETC formatEtc = { CF_HDROP, nullptr, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
STGMEDIUM stgMedium;
// 设置 stgMedium 的相关信息,例如使用 GlobalAlloc 分配 HGLOBAL 内存
if (pDataSource->DelayRenderFileData(&formatEtc, &stgMedium)) {
// 在需要的时候进行实际的数据渲染,可以在这里设置 stgMedium 中的数据
}
// 在这里可以继续添加其他格式的数据
// 开始拖放操作
DROPEFFECT dropEffect = pDataSource->DoDragDrop(DROPEFFECT_COPY | DROPEFFECT_MOVE);
// 处理拖放操作的结果
// 释放数据源对象
delete pDataSource;
这个例子中,COleDataSource 对象通过 new 运算符创建,然后使用 DelayRenderFileData 方法延迟渲染文件数据。在实际需要使用数据时,你可以在适当的时机设置 stgMedium 中的数据。在拖放操作完成后,通过 delete 运算符释放数据源对象。
转载请注明出处:http://www.zyzy.cn/article/detail/21314/MFC/COleDataSource