1,508
社区成员
发帖
与我相关
我的任务
分享
class ATL_NO_VTABLE COverlayIcon :
public CComObjectRootEx<CComSingleThreadModel>,
public IShellIconOverlayIdentifier
{
public:
COverlayIcon()
{
}
CRefPtr<CShellFolder> m_spFolder;
BEGIN_COM_MAP(COverlayIcon)
COM_INTERFACE_ENTRY(IShellIconOverlayIdentifier)
END_COM_MAP()
HRESULT Init(CShellFolder* pFolder);
// IShellIconOverlayIdentifier Methods
STDMETHOD(GetOverlayInfo)(LPWSTR pwszIconFile,int cchMax,int *pIndex,DWORD* pdwFlags);
STDMETHOD(GetPriority)(int* pPriority);
STDMETHOD(IsMemberOf)(LPCWSTR pwszPath,DWORD dwAttrib);
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
public:
};
STDMETHODIMP COverlayIcon::GetOverlayInfo(
LPWSTR pwszIconFile,
int cchMax,int* pIndex,
DWORD* pdwFlags)
{
return S_OK;
}
// IShellIconOverlayIdentifier Method Implementation
// returns the priority of this overlay 0 being the highest.
// this overlay is always selected do to its high priority
STDMETHODIMP COverlayIcon::GetPriority(int* pPriority)
{
// highest priority
*pPriority=0;
return S_OK;
}
// IShellIconOverlayIdentifier Method Implementation
// IShellIconOverlayIdentifier::IsMemberOf
// Returns Whether the object should have this overlay or not
STDMETHODIMP COverlayIcon::IsMemberOf(LPCWSTR pwszPath, DWORD dwAttrib)
{
return S_OK;
}
if (riid == IID_IShellIconOverlayIdentifier)
{
DMMessageBox(NULL,L"1",L"2",0);
CComObject<COverlayIcon>* pOverlayIcon = NULL;
HR( CComObject<COverlayIcon>::CreateInstance(&pOverlayIcon) );
CComPtr<IUnknown> spKeepAlive = pOverlayIcon->GetUnknown();
HR( pOverlayIcon->Init(this) );
return pOverlayIcon->QueryInterface(riid, ppRetVal);
}
if (riid == IID_IShellIconOverlayIdentifier)
{
DMMessageBox(NULL,L"1",L"2",0);
CComObject<COverlayIcon>* pOverlayIcon = NULL;
HR( CComObject<COverlayIcon>::CreateInstance(&pOverlayIcon) );
CComPtr<IUnknown> spKeepAlive = pOverlayIcon->GetUnknown();
HR( pOverlayIcon->Init(this) );
return pOverlayIcon->QueryInterface(riid, ppRetVal);
}
里面,请问有谁知道怎么回事么