#include "headers.hxx" #pragma hdrstop //+---------------------------------------------------------------------------- // // File: // utils.cpp // // Contents: // Utility functions for the cache unit test // // History: // // 04-Sep-94 davepl Created // //----------------------------------------------------------------------------- //+---------------------------------------------------------------------------- // // Member: TestInstance::AddXXXCacheNode // // Synopsis: Adds an empty cache node for various formats // // Arguments: [inst] -- ptr to test instance // [pdwCon] -- ptr to connection ID (out) // // Returns: HRESULT // // Notes: // // History: 23-Aug-94 Davepl Created // //----------------------------------------------------------------------------- HRESULT TestInstance::AddMFCacheNode(DWORD *pdwCon) { HRESULT hr; TraceLog Log(this, "TestInstance::AddMFCacheNode", GS_CACHE, VB_MAXIMUM); Log.OnEntry (" ( %p ) \n", pdwCon); Log.OnExit (" ( %X ) [ %p ]\n", &hr, pdwCon); FORMATETC fetcMF = { CF_METAFILEPICT, // Clipformat NULL, // DVTargetDevice DVASPECT_CONTENT, // Aspect -1, // Index TYMED_MFPICT // TYMED }; // // Cache a METAFILE node // hr = m_pOleCache->Cache(&fetcMF, ADVF_PRIMEFIRST, pdwCon); return hr; } HRESULT TestInstance::AddEMFCacheNode(DWORD *pdwCon) { HRESULT hr; TraceLog Log(this, "TestInstance::AddEMFCacheNode", GS_CACHE, VB_MAXIMUM); Log.OnEntry (" ( %p ) \n", pdwCon); Log.OnExit (" ( %X ) [ %p ]\n", &hr, pdwCon); FORMATETC fetcEMF = { CF_ENHMETAFILE, // Clipformat NULL, // DVTargetDevice DVASPECT_CONTENT, // Aspect -1, // Index TYMED_ENHMF // TYMED }; // // Cache an ENH METAFILE node // hr = m_pOleCache->Cache(&fetcEMF, ADVF_PRIMEFIRST, pdwCon); return hr; } HRESULT TestInstance::AddDIBCacheNode(DWORD *pdwCon) { HRESULT hr; TraceLog Log(this, "TestInstance::AddDIBCacheNode", GS_CACHE, VB_MAXIMUM); Log.OnEntry (" ( %p ) \n", pdwCon); Log.OnExit (" ( %X ) [ %p ]\n", &hr, pdwCon); FORMATETC fetcDIB = { CF_DIB, // Clipformat NULL, // DVTargetDevice DVASPECT_CONTENT, // Aspect -1, // Index TYMED_HGLOBAL // TYMED }; // // Cache a DIB node // hr = m_pOleCache->Cache(&fetcDIB, ADVF_PRIMEFIRST, pdwCon); return hr; } HRESULT TestInstance::AddBITMAPCacheNode(DWORD *pdwCon) { HRESULT hr; TraceLog Log(this, "TestInstance::AddMFCacheNode", GS_CACHE, VB_MAXIMUM); Log.OnEntry (" ( %p ) \n", pdwCon); Log.OnExit (" ( %X ) [ %p ]\n", &hr, pdwCon); FORMATETC fetcBITMAP = { CF_BITMAP, // Clipformat NULL, // DVTargetDevice DVASPECT_CONTENT, // Aspect -1, // Index TYMED_GDI // TYMED }; // // Cache a BITMAP node // hr = m_pOleCache->Cache(&fetcBITMAP, ADVF_PRIMEFIRST, pdwCon); return hr; } //+---------------------------------------------------------------------------- // // Function: EltIsInArray // // Synopsis: Checks to see if a STATDATA search item is in // a STATDATA array. Checks clipformat and connection // ID only. // // Arguments: [sdToFind] STATDATA we are looking for // [rgStat] Array of STATDATAs to look in // [cCount] Count of STATDATAs in rgStat // // Returns: S_OK if found, S_FALSE if not // // Notes: // // History: 23-Aug-94 Davepl Created // //----------------------------------------------------------------------------- HRESULT EltIsInArray(STATDATA sdToFind, STATDATA rgStat[], DWORD cCount) { HRESULT hr = S_FALSE; TraceLog Log(NULL, "EltIsInArray", GS_CACHE, VB_MAXIMUM); Log.OnEntry (" ( %p, %p, %d )\n", &sdToFind, rgStat, cCount); Log.OnExit (" ( %X )\n", &hr); for (DWORD a=0; aEnumCache(&pEsd); if (S_OK == hr) { // // Loop until a failure or until we have removed all of // the nodes that we thought should exist // STATDATA stat; while (S_OK == hr && FALSE == fFound) { hr = pEsd->Next(1, &stat, NULL); if (S_OK == hr && stat.formatetc.cfFormat == cf) { hr = m_pOleCache->Uncache(stat.dwConnection); if (S_OK == hr) { fFound = TRUE; } } } } return hr; }