128 lines
3.3 KiB
C++
128 lines
3.3 KiB
C++
//
|
|
// dsctx.h : Declaration of ds context menu class
|
|
//
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1999
|
|
//
|
|
// File: dsctx.h
|
|
//
|
|
// Contents: context menu extension for DS classes
|
|
//
|
|
// History: 08-dec-97 jimharr Created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef __DSCTX_H_
|
|
#define __DSCTX_H_
|
|
|
|
|
|
#include "dssnap.h"
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
// CDSContextMenu
|
|
|
|
class CContextMenuMultipleDeleteHandler;
|
|
class CContextMenuSingleDeleteHandler;
|
|
|
|
class CDSContextMenu:
|
|
IShellExtInit,
|
|
IContextMenu,
|
|
public CComObjectRootEx<CComSingleThreadModel>,
|
|
public CComCoClass<CDSContextMenu, &CLSID_DSContextMenu>
|
|
{
|
|
BEGIN_COM_MAP(CDSContextMenu)
|
|
COM_INTERFACE_ENTRY(IShellExtInit)
|
|
COM_INTERFACE_ENTRY(IContextMenu)
|
|
END_COM_MAP()
|
|
|
|
public:
|
|
DECLARE_REGISTRY_CLSID()
|
|
|
|
CDSContextMenu();
|
|
~CDSContextMenu();
|
|
|
|
|
|
// IShellExtInit
|
|
STDMETHODIMP Initialize(LPCITEMIDLIST pIDFolder,
|
|
LPDATAOBJECT pDataObj,
|
|
HKEY hKeyID );
|
|
|
|
// IContextMenu
|
|
STDMETHODIMP QueryContextMenu(HMENU hShellMenu,
|
|
UINT indexMenu,
|
|
UINT idCmdFirst,
|
|
UINT idCmdLast,
|
|
UINT uFlags );
|
|
STDMETHODIMP InvokeCommand( LPCMINVOKECOMMANDINFO lpcmi );
|
|
STDMETHODIMP GetCommandString( UINT_PTR idCmd,
|
|
UINT uFlags,
|
|
UINT FAR* reserved,
|
|
LPSTR pszName,
|
|
UINT ccMax );
|
|
|
|
private:
|
|
// internal command handlers
|
|
|
|
// misc entry points
|
|
void DisableAccount(BOOL bDisable);
|
|
void ModifyPassword();
|
|
void ReplicateNow();
|
|
void AddToGroup();
|
|
void CopyObject();
|
|
|
|
// MOVE entry point and helper functions
|
|
void MoveObject();
|
|
|
|
|
|
// DELETE entry point and helper functions
|
|
void DeleteObject();
|
|
|
|
HRESULT _Delete(LPCWSTR lpszPath,
|
|
LPCWSTR lpszClass,
|
|
CString * csName);
|
|
HRESULT _DeleteSubtree(LPCWSTR lpszPath,
|
|
CString * csName);
|
|
|
|
// RENAME entry point
|
|
void Rename();
|
|
|
|
// internal helper functions
|
|
void _GetExtraInfo(LPDATAOBJECT pDataObj);
|
|
void _ToggleDisabledIcon(UINT index, BOOL bDisable);
|
|
BOOL _WarningOnSheetsUp();
|
|
void _NotifyDsFind(LPCWSTR* lpszNameDelArr,
|
|
LPCWSTR* lpszClassDelArr,
|
|
DWORD* dwFlagsDelArr,
|
|
DWORD* dwProviderFlagsDelArr,
|
|
UINT nDeletedCount);
|
|
|
|
// member variables
|
|
|
|
// data members to store info from data object
|
|
CInternalFormatCracker m_internalFormat;
|
|
CObjectNamesFormatCracker m_objectNamesFormat;
|
|
CComPtr<IDataObject> m_spDataObject;
|
|
|
|
// context information
|
|
HWND m_hwnd;
|
|
CDSComponentData* m_pCD;
|
|
GUID m_CallerSnapin;
|
|
|
|
|
|
IADsUser * m_pDsObject;
|
|
DWORD m_UserAccountState;
|
|
UINT m_fClasses; // flag to makr which classes we have in the multiple sel
|
|
|
|
BOOL m_Advanced; // from the provider flags
|
|
|
|
friend class CContextMenuMultipleDeleteHandler; // _Delete*() functions
|
|
friend class CContextMenuSingleDeleteHandler;
|
|
|
|
};
|
|
|
|
#endif
|