windows-nt/Source/XPSP1/NT/admin/snapin/dfsadmin/dfsshlex/dfsshell.h
2020-09-26 16:20:57 +08:00

120 lines
2.4 KiB
C++

/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
DfsShell.h
Abstract:
This is the header file for Dfs Shell Extension object which implements
IShellIExtInit and IShellPropSheetExt.
Author:
Constancio Fernandes (ferns@qspl.stpp.soft.net) 12-Jan-1998
Environment:
NT only.
--*/
#ifndef __DFSSHELL_H_
#define __DFSSHELL_H_
#include "resource.h" // main symbols
#include "DfsShPrp.h"
#include "DfsPath.h"
/////////////////////////////////////////////////////////////////////////////
// CDfsShell
class ATL_NO_VTABLE CDfsShell :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CDfsShell, &CLSID_DfsShell>,
public IShellExtInit,
public IShellPropSheetExt
{
public:
CDfsShell()
{
m_lpszFile = NULL;
m_ppDfsAlternates = NULL;
m_lpszEntryPath = NULL;
}
~CDfsShell()
{
if (m_ppDfsAlternates)
{
for (int i = 0; NULL != m_ppDfsAlternates[i] ; i++)
{
delete m_ppDfsAlternates[i];
}
delete[] m_ppDfsAlternates;
m_ppDfsAlternates = NULL;
}
if (m_lpszEntryPath)
{
delete [] m_lpszEntryPath;
m_lpszEntryPath = NULL;
}
if (m_lpszFile)
{
delete [] m_lpszFile;
m_lpszFile = NULL;
}
}
DECLARE_REGISTRY_RESOURCEID(IDR_DFSSHELL)
BEGIN_COM_MAP(CDfsShell)
COM_INTERFACE_ENTRY(IShellExtInit)
COM_INTERFACE_ENTRY(IShellPropSheetExt)
END_COM_MAP()
// IDfsShell
public:
// IShellExtInit Methods
STDMETHOD (Initialize)
(
IN LPCITEMIDLIST pidlFolder, // Points to an ITEMIDLIST structure
IN LPDATAOBJECT lpdobj, // Points to an IDataObject interface
IN HKEY hkeyProgID // Registry key for the file object or folder type
);
//IShellPropSheetExt methods
STDMETHODIMP AddPages
(
IN LPFNADDPROPSHEETPAGE lpfnAddPage,
IN LPARAM lParam
);
STDMETHODIMP ReplacePage
(
IN UINT uPageID,
IN LPFNADDPROPSHEETPAGE lpfnReplaceWith,
IN LPARAM lParam
);
private:
friend class CDfsShellExtProp;
LPTSTR m_lpszFile;
LPTSTR m_lpszEntryPath;
CDfsShellExtProp m_psDfsShellExtProp;
LPDFS_ALTERNATES* m_ppDfsAlternates;
};
#endif //__DFSSHELL_H_