-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathShellPreviewExt.h
More file actions
108 lines (90 loc) · 3.14 KB
/
ShellPreviewExt.h
File metadata and controls
108 lines (90 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#ifndef __SHELLPREVIEWEXT_H_
#define __SHELLPREVIEWEXT_H_
#include "Thumbnailer.h"
#include "defines.h"
#include "exstream.h"
#include "Thumbcache.h"
#include "Propsys.h"
#include "Propkey.h"
#include "propvarutil.h"
void Log(TCHAR *mask,...);
class ATL_NO_VTABLE CShellPreviewExt :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CShellPreviewExt, &CLSID_ShellPreviewExt>,
public IPropertyStore,
public IPropertyStoreCapabilities,
#ifdef MOUSEOVER_HINTS
public IQueryInfo,
#endif
#ifdef THUMB_METHOD_ITHUMBPROVIDER
public IThumbnailProvider,
#endif
#ifdef THUMB_METHOD_IEXTRACTICON
public IExtractIcon,
#endif
public IPersistFile,
public IInitializeWithStream
{
public:
CShellPreviewExt();
~CShellPreviewExt();
BEGIN_COM_MAP(CShellPreviewExt)
COM_INTERFACE_ENTRY(IPropertyStore)
COM_INTERFACE_ENTRY(IPropertyStoreCapabilities)
#ifdef MOUSEOVER_HINTS
COM_INTERFACE_ENTRY(IQueryInfo)
#endif
#ifdef THUMB_METHOD_ITHUMBPROVIDER
COM_INTERFACE_ENTRY(IThumbnailProvider)
#endif
#ifdef THUMB_METHOD_IEXTRACTICON
COM_INTERFACE_ENTRY(IExtractIcon)
#endif
COM_INTERFACE_ENTRY(IPersistFile)
COM_INTERFACE_ENTRY(IInitializeWithStream)
END_COM_MAP()
DECLARE_REGISTRY(0,_T(""),_T(""),0u,THREADFLAGS_APARTMENT)
public:
// IPersistFile
STDMETHODIMP GetClassID( CLSID* ) { return E_NOTIMPL; }
STDMETHODIMP IsDirty() { return E_NOTIMPL; }
STDMETHODIMP Save( LPCOLESTR, BOOL ) { return E_NOTIMPL; }
STDMETHODIMP SaveCompleted( LPCOLESTR ) { return E_NOTIMPL; }
STDMETHODIMP GetCurFile( LPOLESTR* ) { return E_NOTIMPL; }
STDMETHODIMP Initialize(IStream *pstream,DWORD grfMode);
STDMETHODIMP Load( LPCOLESTR wszFile, DWORD );
// IQueryInfo
STDMETHODIMP GetInfoFlags(DWORD*) { return E_NOTIMPL; }
STDMETHODIMP GetInfoTip(DWORD, LPWSTR*);
#ifdef THUMB_METHOD_IEXTRACTICON
STDMETHODIMP GetIconLocation( UINT uFlags, LPTSTR szIconFile, UINT cchMax,
int* piIndex, UINT* pwFlags );
STDMETHODIMP Extract( LPCTSTR pszFile, UINT nIconIndex, HICON* phiconLarge,
HICON* phiconSmall, UINT nIconSize );
#endif
#ifdef THUMB_METHOD_ITHUMBPROVIDER
STDMETHODIMP GetThumbnail(UINT cx,HBITMAP *phbmp,WTS_ALPHATYPE *pdwAlpha);
#endif
// IPropertyStore
IFACEMETHODIMP GetCount(DWORD *pcProps);
IFACEMETHODIMP GetAt(DWORD iProp, PROPERTYKEY *pkey);
IFACEMETHODIMP GetValue(REFPROPERTYKEY key, PROPVARIANT *pPropVar);
IFACEMETHODIMP SetValue(REFPROPERTYKEY key, REFPROPVARIANT propVar);
IFACEMETHODIMP Commit();
// IPropertyStoreCapabilities
IFACEMETHODIMP IsPropertyWritable(REFPROPERTYKEY key);
protected:
// TCHAR m_szFilename[MAX_PATH]; // Full path to the file in question.
Thumb *thumb;
bool processed;
Stream *stream;
void process(int task);
int taskFinished[0x10];
CRITICAL_SECTION creationCriticalSection;
};
#ifdef THUMB_METHOD_IEXTRACTICON
#ifdef THUMB_METHOD_ITHUMBPROVIDER
#error You can not define both THUMB_METHOD_IEXTRACTICON and THUMB_METHOD_ITHUMBPROVIDER
#endif
#endif
#endif