1 // TortoiseOverlays - an overlay handler for Tortoise clients
\r
2 // Copyright (C) 2007 - TortoiseSVN
\r
7 #include "resource.h"
\r
9 extern UINT g_cRefThisDll; // Reference count of this DLL.
\r
10 extern HINSTANCE g_hmodThisDll; // Instance handle for this DLL
\r
12 using namespace std;
\r
24 FileStateUnversioned,
\r
31 DLLPointers() : hDll(NULL)
\r
32 , pDllGetClassObject(NULL)
\r
33 , pDllCanUnloadNow(NULL)
\r
34 , pShellIconOverlayIdentifier(NULL)
\r
39 LPFNGETCLASSOBJECT pDllGetClassObject;
\r
40 LPFNCANUNLOADNOW pDllCanUnloadNow;
\r
41 IShellIconOverlayIdentifier * pShellIconOverlayIdentifier;
\r
44 // The actual OLE Shell context menu handler
\r
46 * The main class of our COM object / Shell Extension.
\r
47 * It contains all Interfaces we implement for the shell to use.
\r
49 class CShellExt : public IShellIconOverlayIdentifier
\r
55 vector<DLLPointers> m_dllpointers;
\r
58 int GetInstalledOverlays(void); ///< returns the maximum number of overlays TSVN shall use
\r
59 void LoadRealLibrary(LPCTSTR ModuleName, LPCTSTR clsid, LPWSTR pwszIconFile, int cchMax, int *pIndex, DWORD *pdwFlags);
\r
60 void LoadHandlers(LPWSTR pwszIconFile, int cchMax, int *pIndex, DWORD *pdwFlags);
\r
62 CShellExt(FileState state);
\r
63 virtual ~CShellExt();
\r
69 STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
\r
70 STDMETHODIMP_(ULONG) AddRef();
\r
71 STDMETHODIMP_(ULONG) Release();
\r
75 /** \name IShellIconOverlayIdentifier
\r
76 * IShellIconOverlayIdentifier methods
\r
79 STDMETHODIMP GetOverlayInfo(LPWSTR pwszIconFile, int cchMax, int *pIndex, DWORD *pdwFlags);
\r
80 STDMETHODIMP GetPriority(int *pPriority);
\r
81 STDMETHODIMP IsMemberOf(LPCWSTR pwszPath, DWORD dwAttrib);
\r