commoniker、udt、control内容摘要:
(fe).ptd=NULL, \ (fe).tymed=med, \ (fe).lindex=1) 数据结构 STGMEDIUM typedef struct tagSTGMEDIUM { DWORD tymed。 // 存储介质的类型 union { HBITMAP hBitmap。 HMETAFILEPICT hMetaFilePict。 HENHMETAFILE hEnhMetaFile。 HGLOBAL hGlobal。 LPOLESTR lpszFileName。 IStream *pstm。 IStorage *pstg。 } u。 // 数据真正的位置 IUnknown *pUnkForRelease。 // 控制介质资源的释放 } STGMEDIUM。 资源释放 — ReleaseStgMedium 函数 如果 pmedium pUnkForRelease为非 NULL,那么分两步: – 对于 TYMED_FILE介质类型,它用标准内存管理器释放文件名字符串,对于 TYMED_ISTREAM和 TYMED_ISTORAGE介质类型,调用IStream::Release或 IStorage::Release,其它类型跳过这一步; – 调用 pmedium pUnkForReleaseRelease。 如果 pmedium pUnkForRelease为 NULL,那么按不同的介质类型执行不同的释放处理: – 对于 TYMED_HGLOBAL类型调用 GlobalFree函数释放; – 对于 TYMED_GDI类型调用 DeleteObject函数释放; – 对于 TYMED_ENHMF类型删除增强的图元文件; – 对于 TYMED_MFPICT类型删除图元文件; – 对于 TYMED_FILE类型先删除文件,再用标准内存管理器释放文件名字符串; – 对于 TYMED_ISTREAM调用 IStream::Release成员函数释放; – 对于 TYMED_ISTORAGE调用 IStorage::Release成员函数释放。 数据对象 IDataObject接口 IDataObject接口的成员 (一 ) GetData( FORMATETC *, STGMEDIUM *) GetDataHere( FORMATETC *, STGMEDIUM *) QueryGetData( FORMATETC *) GetCanonicalFormatEtc(FORMATETC *pformatectIn, FORMATETC *pformatetcOut) IDataObject接口的成员 (二 ) SetData( FORMATETC *pformatetc, STGMEDIUM *pmedium, BOOL fRelease) EnumFormatEtc( DWORD dwDirection, IEnumFORMATETC **) DAdvise(FORMATETC *, DWORD advf, IAdviseSink *, DWORD *) DUnadvise( DWORD ) EnumDAdvise( IEnumSTATDATA **) 通报连接 (advisory connection)机制 客户通过 IData Ob jec t: :DA d v is e函数把接收器传给对象客户程序通报连接接收器对象数据对象事件发生时数据对象调用 On Data Ch a n g e 成员IA d v ise S in kIData Ob jec t剪贴板传输数据机理 (一 ) 常用的 7个 Win32 API函数 BOOL WINAPI OpenClipboard( HWND hWndNewOwner)。 BOOL WINAPI CloseClipboard( VOID)。 BOOL WINAPI EmptyClipboard(VOID)。 HANDLE WINAPI SetClipboardData( UINT uFormat, HANDLE hMem)。 HANDLE WINAPI GetClipboardData( UINT uFormat)。 BOOL WINAPI IsClipboardFormatAvailable( UINT format)。 UINT WINAPI EnumClipboardFormats( UINT format)。 剪贴板是系统全局共享,进程独占方式 存储介质仅限于全局内存 剪贴板传输数据机理 (二 ) 剪贴板所有者为一个 Windows窗口 – 调用 EmptyClipboard时被 OpenClipboard指定的窗口 延迟供应 (delayed rendering): – (1)SetClipboardData的参数 hMem可以是 NULL – (2) 客户需要数据时,所有者窗口处理WM_RENDERFORMAT消息 – (3)所有者窗口被删除之前处理WM_RENDERALLFORMATS消息 OLE剪贴板 (一 ) OLE API函数 WINOLEAPI OleSetClipboard(IDataObject *pDataObj)。 WINOLEAPI OleGetClipboard(IDataObject ** ppDataObj)。 WINOLEAPI OleFlushClipboard(void)。 WINOLEAPI OleIsCurrentClipboard(IDataObject *pDataObj)。 OleSetClipboard内部把所有权交给 OLE内部隐藏窗口 针对以全局内存作为存储介质的数据格式, OleSetClipboard使用 “ 延迟供应 ” 方式调用SetClipboardData放到剪贴板上 清空剪贴板,可调用 OleSetClipboard(NULL) OLE剪贴板 (二 ) 客户方调用 GetClipboardData只能访问到以全局内存作为存储介质的数据格式 使用 OleGetClipboard函数可以访问到源数据对象的所有格式 OleGetClipboard函数返回不同的数据对象 – (1)源数据对象仍在运行,则直接返回 (有可能是代理对象 ) – (2)源程序调用了 OleFlushClipboard函数, OLE创建一个缺省的数据对象,供客户使用 – (3)剪贴板上的数据非数据对象,返回一个缺省数据对象,但数据格式受限制 MFC对剪贴板的支持示意图 源程序COle D a ta S o u rc e对象 ID a ta O b je c t原始数据格式 1格式 2......调用 Ca c h e G lo b a lDa ta或 Ca c h e D a ta客户程序COle D a ta O b je c t对象目标数据m _ lp D a ta O b je c t剪贴板复制S e tCli p b o a rd粘帖A ttac h Clip b o a rd调用 G e tD a ta 或者G e t G lo b a lDa ta拖 放数据传输协议 O L E源程序数据对象IDa taO b jec t拖源对象I Dro p S o u rce源程序放目标对象I Dro p T a r g e tD o Dra g Dro p Re g isterD ro p T a r g e t拖 放数据传输协议:源 实现数据对象和 “ 拖源 ” 对象, “ 拖源 ” 对象实现了接口 IDropSource class IDropSource : public IUnknown { virtual HRESULT QueryContinueDrag( BOOL fEscapePressed, DWORD grfKeyState) = 0。 virtual HRESULT GiveFeedback( DWORD dwEffect) = 0。 }。 WM_LBUTTONDOWN消息控制函数中调用OLE函数: DoDragDrop 拖 放数据传输协议:目标 实现 “ 放目标 ” 对象, “ 放目标 ” 对象实现了接口IDropTarget: class IDropTarget : public IUnknown { virtual HRESULT DragEnter(IDataObject *pDataObj, D。commoniker、udt、control
相关推荐
nce, NTU SCI Journal papers 理學院各領域與亞太地區各校之比較與世界排名 College of Science, NTU 化學 地球科學 數學 物理 SCI 篇數 世界 排名 SCI 篇數 世界 排名 SCI 篇數 世界 排名 SCI 篇數 世界 排名 臺灣大學 3,186 47 602 139 2,734 102 東京大學 7,959 5 2,502 11 760
skirt 裙子 • dress 连衣裙 • Tshirt T恤衫 • red 红色的 • blue 蓝色的 • yellow 黄色的 • green 绿色的 • white 白色的 • no 不;不是 • not 不;不是的 • colour 颜色 Unit3 • warm 暖和的 • cold 寒冷的 • cool 凉爽的 • today 今天 • jeans 牛仔裤(复数
Beijing so many seats. is not only good at languages, but also at history and geography. Not only good at languages, but also at history and geography. will you see is she have never read such an
Scholarships are about more than just money How do you find scholarships? How do you apply for scholarships? How do you apply for needbased aid? Pitfalls: Beware of scholarship scams! 13
後的點源或擴散源之排放 ISO/CNS 14041 29 ‧消極性-化解對產品之質疑 ‧積極性-提供策略性產品之定位 (優勢 ) ‧先導性-針對敏感之條件/問題深入瞭解 ‧預防性-避免錯誤數據被引用 ‧主動性-提供下游 (廠商/消費者 )評估之需求 LCA數據用於溝通之條件 ISO/CNS 14041 30 • 鑑別那些投入與產出須被追蹤至環境是一個反覆的程序。 在作業的過程中
AJVIEWER 电子加工平台 ETP 引擎 相关技术 • 概念关系词典 • 相似文献分析技术 • 全文句法检索 • 网格共享技术 • 学术搜索引擎技术 • 知网节出版技术 • 统一导航统一检索技术 • 引文链接识别分析技术 • 蚁群挖掘技术 引文链接接分析技术 引文连接是 CNKI出版平台基础之一 • 引文条目切分、引文元数据项分析 • 引文链接分析 – 链接准确率达到 98% •