|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1995 - 1995.
//
// File: shrpage.hxx
//
// Contents: "Sharing" shell property page extension
//
// History: 6-Apr-95 BruceFo Created
// 12-Jul-00 JonN fixed 140878, MSG_MULTIDEL debounce
// 06-Oct-00 jeffreys Split CShareBase out of CSharingPropertyPage
//
//--------------------------------------------------------------------------
#ifndef __SHRPAGE_HXX__
#define __SHRPAGE_HXX__
class CShareInfo;
void _MyShow( HWND hwndParent, INT idControl, BOOL fShow );
class CShareBase : public IOleWindow { DECLARE_SIG;
public:
// IUnknown
STDMETHODIMP QueryInterface(REFIID riid, void **ppv); STDMETHODIMP_(ULONG) AddRef(void) ; STDMETHODIMP_(ULONG) Release(void);
// IOleWindow
STDMETHODIMP GetWindow(HWND *phwnd); STDMETHODIMP ContextSensitiveHelp(BOOL fEnterMode);
//
// Page callback function for delete
//
static UINT CALLBACK PageCallback( IN HWND hwnd, IN UINT uMsg, IN LPPROPSHEETPAGE ppsp );
//
// Main page dialog procedure: static
//
static INT_PTR CALLBACK DlgProcPage( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
//
// constructor, destructor, 2nd phase constructor
//
CShareBase( IN BOOL bDialog // called as a dialog, not a property page?
);
virtual ~CShareBase();
virtual HRESULT InitInstance( IN PCWSTR pszPath );
protected:
//
// Main page dialog procedure: non-static
//
virtual BOOL _PageProc( IN HWND hWnd, IN UINT msg, IN WPARAM wParam, IN LPARAM lParam );
//
// Window messages and notifications
//
virtual BOOL _OnInitDialog( IN HWND /*hwnd*/, IN HWND /*hwndFocus*/, IN LPARAM /*lInitParam*/ ) { return TRUE; }
virtual BOOL _OnCommand( IN HWND hwnd, IN WORD wNotifyCode, IN WORD wID, IN HWND hwndCtl );
virtual BOOL _OnNotify( IN HWND hwnd, IN int idCtrl, IN LPNMHDR phdr );
virtual BOOL _OnPropertySheetNotify( IN HWND hwnd, IN LPNMHDR phdr );
virtual BOOL _OnHelp( IN HWND /*hwnd*/, IN LPHELPINFO /*lphi*/ ) { return FALSE; }
virtual BOOL _OnContextMenu( IN HWND /*hwnd*/, IN HWND /*hwndCtl*/, IN int /*xPos*/, IN int /*yPos*/ ) { return FALSE; }
//
// Other helper methods
//
virtual BOOL _ValidatePage( IN HWND /*hwnd*/ ) { return TRUE; }
virtual BOOL _DoApply( IN HWND hwnd, IN BOOL bClose );
virtual BOOL _DoCancel( IN HWND hwnd );
VOID _MarkPageDirty( VOID );
HRESULT _ConstructShareList( VOID );
HRESULT _ConstructNewShareInfo( VOID );
HWND _GetFrameWindow( VOID ) { return GetParent(_hwndPage); }
BOOL _ValidateNewShareName( VOID );
VOID _CommitShares( IN BOOL bNotShared );
//
// Protected class variables
//
LONG _cRef; PWSTR _pszPath; HWND _hwndPage; // HWND to the property page
BOOL _bDialog; // called as a dialog, not a property page?
BOOL _bDirty; // Dirty flag: anything changed?
// JonN 7/12/00 140878
// I changed this from BOOL to ULONG, and started accessing it with
// increment/decrement rather than set, to prevent it from being
// cleared prematurely.
ULONG _fInitializingPage; // JonN 7/11/00 140878
BOOL _bNewShare; CShareInfo* _pInfoList; // doubly-linked circular w/dummy head node
CShareInfo* _pReplaceList; // list of shares to delete: share names replaced with new shares.
CShareInfo* _pCurInfo; ULONG _cShares; // count of shares, not incl. removed shares
};
class CSharingPropertyPage : public CShareBase { DECLARE_SIG;
public:
static LRESULT CALLBACK SizeWndProc( IN HWND hwnd, IN UINT wMsg, IN WPARAM wParam, IN LPARAM lParam );
//
// constructor, destructor
//
CSharingPropertyPage( IN BOOL bDialog // called as a dialog, not a property page?
);
~CSharingPropertyPage();
private:
// Does the operating system support caching on this share?
// This method initializes _bIsCachingSupported, if it is not already true
bool IsCachingSupported( VOID );
//
// Main page dialog procedure: non-static
//
virtual BOOL _PageProc( IN HWND hWnd, IN UINT msg, IN WPARAM wParam, IN LPARAM lParam );
//
// Window messages and notifications
//
virtual BOOL _OnInitDialog( IN HWND hwnd, IN HWND hwndFocus, IN LPARAM lInitParam );
virtual BOOL _OnCommand( IN HWND hwnd, IN WORD wNotifyCode, IN WORD wID, IN HWND hwndCtl );
virtual BOOL _OnHelp( IN HWND hwnd, IN LPHELPINFO lphi );
virtual BOOL _OnContextMenu( IN HWND hwnd, IN HWND hwndCtl, IN int xPos, IN int yPos );
BOOL _OnPermissions( IN HWND hwnd );
BOOL _OnRemove( IN HWND hwnd );
BOOL _OnNewShare( IN HWND hwnd );
BOOL _OnCaching( IN HWND hwnd );
//
// Other helper methods
//
VOID _InitializeControls( IN HWND hwnd );
VOID _SetControlsToDefaults( IN HWND hwnd );
VOID _SetFieldsFromCurrent( IN HWND hwnd );
VOID _CacheMaxUses( IN HWND hwnd );
VOID _HideControls( IN HWND hwnd, IN int cShares );
VOID _EnableControls( IN HWND hwnd, IN BOOL bEnable );
BOOL _ReadControls( IN HWND hwnd );
VOID _SetControlsFromData( IN HWND hwnd, IN PWSTR pszPreferredSelection );
virtual BOOL _ValidatePage( IN HWND hwnd );
virtual BOOL _DoApply( IN HWND hwnd, IN BOOL bClose );
virtual BOOL _DoCancel( IN HWND hwnd );
VOID _MarkItemDirty( VOID );
#if DBG == 1
VOID Dump( IN PWSTR pszCaption ); #endif // DBG == 1
//
// Private class variables
//
// JonN 7/12/00 140878
// This is the ID of the radio button last selected,
// so that we can "debounce" the MSG_MULTIDEL dialog.
WORD _wIDSelected; // JonN 7/12/00 140878
BOOL _bItemDirty; // Dirty flag: this item changed
BOOL _bShareNameChanged; BOOL _bCommentChanged; BOOL _bUserLimitChanged;
WORD _wMaxUsers;
WNDPROC _pfnAllowProc;
bool _bIsCachingSupported; // Does the operating system support caching on this share?
};
#endif // __SHRPAGE_HXX__
|