第二部分:OLE 数据传送(Data Transfer)

这一部分讲一讲OLE数据传输相关知识,多数来自于MSDN和网上其同志们的观点,加以总结而成。1.OLE数据描述 typedef struct tagFORMATETC{CLIPFORMAT cfFormat;// 数据格式,如CF_TEXTDVTARGETDEVICE *ptd;// 一般为NULL,目标设备DWORD dwAspect;// DV_CONTENT rendering详细信息LONG lindex;// 一般为-1DWORD tymed;// 用于数据传输的存储媒体(HGLOBAL,,IStream)} FORMATETC, *LPFORMATETC;2.OLE数据存储STGMEDIUM(STORAGE MEDIUMtypedef struct{ DWORD tymed; // TYEMD_HGLOBAL、TYPED_ISTREAM等。 union { HBITMAP hBitmap; HMETAFILEPICT hMetaFilePict; HENHMETAFILE hEnhMetaFile; HGLOBAL hGlobal; LPWSTR lpszFileName; IStream *pstm; IStorage *pstg; }; IUnknown *pUnkForRelease;} STGMEDIUM;3.IDataObject成员4.用IDataObject来访问剪切板(Clipboard)void TestGetDataFromClipboard(){ OleInitialize(NULL); IDataObject *pDataObject = NULL; HRESULT hr = OleGetClipboard(&pDataObject); if (SUCCEEDED(hr)) { FORMATETC fmtetc = { CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; STGMEDIUM stgmed; hr = pDataObject->GetData(&fmtetc, &stgmed); if (SUCCEEDED(hr)) { PVOID pData = GlobalLock(stgmed.hGlobal); CHAR *pText = (CHAR*)pData; MessageBoxA(NULL, pText, "GetDataFromClipboard", 0); GlobalUnlock(stgmed.hGlobal); ReleaseStgMedium(&stgmed); } SAFE_RELEASE(pDataObject); } OleUninitialize();}

一个人行走,若是寂寞了,寻一座霓虹灯迷离闪烁,

第二部分:OLE 数据传送(Data Transfer)

相关文章:

你感兴趣的文章:

标签云: