windows-nt/Source/XPSP1/NT/shell/ext/docpropv3/summarypage.h
2020-09-26 16:20:57 +08:00

100 lines
3.2 KiB
C++

//
// Copyright 2001 - Microsoft Corporation
//
//
// Created By:
// Geoff Pease (GPease) 23-JAN-2001
//
// Maintained By:
// Geoff Pease (GPease) 23-JAN-2001
//
#pragma once
class
CSummaryPage
: public IShellExtInit
, public IShellPropSheetExt
{
private: // data
ULONG _cRef; // reference counter
HWND _hdlg; // dialog handle
LPIDA _pida; //
BOOL _fReadOnly:1; // TRUE if the storage is read-only
BOOL _fNeedLicensePage:1; // TRUE if we need to add the license page
BOOL _fAdvanced; // Show the Advanced Dialog == TRUE -- hast be be a complete BOOL!
CAdvancedDlg * _pAdvancedDlg; // Advanced Dialog
CSimpleDlg * _pSimpleDlg; // Simple Dialog
DWORD _dwCurrentBindMode; // what mode the storage was openned with.
ULONG _cSources; // number of sources - sizeof the arrays _rgpss and rgpPropertyCache
DWORD * _rgdwDocType; // array of DWORDs indicating file type (see PTSFTYPE flags)
IPropertySetStorage ** _rgpss; // array of IPropertySetStorages representing the PIDLs
CPropertyCache * _pPropertyCache; // Property Cache
private: // methods
explicit CSummaryPage( void );
~CSummaryPage( void );
HRESULT
Init( void );
HRESULT
Item( UINT idxIn, LPITEMIDLIST * ppidlOut );
HRESULT
EnsureAdvancedDlg( void );
HRESULT
EnsureSimpleDlg( void );
HRESULT
PersistMode( void );
HRESULT
RecallMode( void );
HRESULT
RetrieveProperties( void );
HRESULT
PersistProperties( void );
HRESULT
BindToStorage( void );
HRESULT
ReleaseStorage( void );
void
CollateMultipleProperties( CPropertyCache ** rgpPropertyCaches );
void
ChangeGatheredPropertiesToReadOnly( CPropertyCache * pCacheIn );
HRESULT
CheckForCopyProtection( CPropertyCache * pCacheIn );
//
// Message Handlers
//
static INT_PTR CALLBACK
DlgProc( HWND hDlgIn, UINT uMsgIn, WPARAM wParam, LPARAM lParam );
static UINT CALLBACK
PageCallback( HWND hwndIn, UINT uMsgIn, LPPROPSHEETPAGE ppspIn );
LRESULT
OnInitDialog( void );
LRESULT
OnNotify( int iCtlIdIn, LPNMHDR pnmhIn );
LRESULT
OnToggle( void );
LRESULT
OnDestroy( void );
public: // methods
static HRESULT
CreateInstance( IUnknown ** ppunkOut );
// IUnknown
STDMETHOD( QueryInterface )( REFIID riid, LPVOID *ppv );
STDMETHOD_( ULONG, AddRef )( void );
STDMETHOD_( ULONG, Release )( void );
// IShellExtInit
STDMETHOD( Initialize )( LPCITEMIDLIST pidlFolder, LPDATAOBJECT lpdobj, HKEY hkeyProgID );
// IShellPropSheetExt
STDMETHOD( AddPages )( LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam);
STDMETHOD( ReplacePage )( UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplacePage, LPARAM lParam );
};