// IClassFactory IFACEMETHODIMP CreateInstance(IUnknown *punkOuter, REFIID riid, void **ppv) { *ppv = NULL; if (punkOuter) return CLASS_E_NOAGGREGATION; ScopedComPtr<IInitializeWithStream> pObject; CLSID clsid; if (SUCCEEDED(CLSIDFromString(SZ_PDF_PREVIEW_CLSID, &clsid)) && IsEqualCLSID(m_clsid, clsid)) pObject = new CPdfPreview(&g_lRefCount); #ifdef BUILD_XPS_PREVIEW else if (SUCCEEDED(CLSIDFromString(SZ_XPS_PREVIEW_CLSID, &clsid)) && IsEqualCLSID(m_clsid, clsid)) pObject = new CXpsPreview(&g_lRefCount); #endif #ifdef BUILD_CBZ_PREVIEW else if (SUCCEEDED(CLSIDFromString(SZ_CBZ_PREVIEW_CLSID, &clsid)) && IsEqualCLSID(m_clsid, clsid)) pObject = new CCbzPreview(&g_lRefCount); #endif #ifdef BUILD_TGA_PREVIEW else if (SUCCEEDED(CLSIDFromString(SZ_TGA_PREVIEW_CLSID, &clsid)) && IsEqualCLSID(m_clsid, clsid)) pObject = new CTgaPreview(&g_lRefCount); #endif else return E_NOINTERFACE; if (!pObject) return E_OUTOFMEMORY; return pObject->QueryInterface(riid, ppv); }
// IClassFactory IFACEMETHODIMP CreateInstance(IUnknown *punkOuter, REFIID riid, void **ppv) { *ppv = NULL; if (punkOuter) return CLASS_E_NOAGGREGATION; ScopedComPtr<IFilter> pFilter; CLSID clsid; if (SUCCEEDED(CLSIDFromString(SZ_PDF_FILTER_CLSID, &clsid)) && IsEqualCLSID(m_clsid, clsid)) pFilter = new CPdfFilter(&g_lRefCount); #ifdef BUILD_TEX_IFILTER else if (SUCCEEDED(CLSIDFromString(SZ_TEX_FILTER_CLSID, &clsid)) && IsEqualCLSID(m_clsid, clsid)) pFilter = new CTeXFilter(&g_lRefCount); #endif else return E_NOINTERFACE; if (!pFilter) return E_OUTOFMEMORY; return pFilter->QueryInterface(riid, ppv); }