428 lines
7.6 KiB
C++
428 lines
7.6 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// 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 PWSTR pszPath,
|
|
IN BOOL bDialog // called as a dialog, not a property page?
|
|
);
|
|
|
|
virtual ~CShareBase();
|
|
|
|
virtual HRESULT
|
|
InitInstance(
|
|
VOID
|
|
);
|
|
|
|
|
|
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 PWSTR pszPath,
|
|
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__
|