You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
4.3 KiB
118 lines
4.3 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1994.
|
|
//
|
|
// File: urlmk.hxx
|
|
//
|
|
// Contents:
|
|
//
|
|
// Classes:
|
|
//
|
|
// Functions:
|
|
//
|
|
// History: 12-12-95 JohannP (Johann Posch) Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#ifndef URLMK_HXX
|
|
#define URLMK_HXX
|
|
|
|
|
|
// These two structures are used to pass data from the inloader callbacks
|
|
// to the wndproc of the hidden window in the main thread.
|
|
|
|
|
|
class CUrlMon;
|
|
|
|
// Declaration of CUrlMon. This class implements IMoniker.
|
|
// class declaration of CUrlMon. This class derives from IMoniker.
|
|
class CUrlMon : public IMoniker, public IROTData, public IMarshal
|
|
{
|
|
public:
|
|
CUrlMon(LPWSTR szUrl);
|
|
~CUrlMon();
|
|
|
|
LPWSTR GetUrl() { return _pwzUrl; }
|
|
|
|
|
|
private:
|
|
void DeleteUrl();
|
|
HRESULT SetUrl(LPWSTR pwzUrl, LPWSTR pwzExtra = NULL);
|
|
|
|
HRESULT IsRunningROT(IBindCtx *pbc, IMoniker *pmkToLeft,LPRUNNINGOBJECTTABLE *ppROT);
|
|
BOOL IsUrlMoniker(IMoniker *pMk);
|
|
STDMETHODIMP StartBinding(BOOL fBindToObject, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, void **ppvObj);
|
|
|
|
|
|
public:
|
|
// *** IUnknown methods ***
|
|
STDMETHODIMP QueryInterface(REFIID iid, void **ppvObj);
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
// *** IPerist methods ***
|
|
STDMETHODIMP GetClassID(CLSID *pClassID);
|
|
|
|
// *** IPeristStream methods ***
|
|
STDMETHODIMP IsDirty();
|
|
STDMETHODIMP Load(IStream *pistm);
|
|
STDMETHODIMP Save(IStream *pistm, BOOL fClearDirty);
|
|
STDMETHODIMP GetSizeMax(ULARGE_INTEGER *pcbSize);
|
|
|
|
// *** IMoniker methods ***
|
|
STDMETHODIMP BindToObject(IBindCtx *pbc, IMoniker *pmkToLeft,
|
|
REFIID riidResult, void **ppvResult);
|
|
STDMETHODIMP BindToStorage(IBindCtx *pbc, IMoniker *pmkToLeft,
|
|
REFIID riid, void **ppvObj);
|
|
STDMETHODIMP Reduce(IBindCtx *pbc, DWORD dwReduceHowFar,
|
|
IMoniker **ppmkToLeft, IMoniker **ppmkReduced);
|
|
STDMETHODIMP ComposeWith(IMoniker *pmkRight, BOOL fOnlyIfNotGeneric,
|
|
IMoniker **ppmkComposite);
|
|
STDMETHODIMP Enum(BOOL fForward, IEnumMoniker **ppenumMoniker);
|
|
STDMETHODIMP IsEqual(IMoniker *pmkOtherMoniker);
|
|
STDMETHODIMP Hash(DWORD *pdwHash);
|
|
STDMETHODIMP IsRunning(IBindCtx *pbc, IMoniker *pmkToLeft,
|
|
IMoniker *pmkNewlyRunning);
|
|
STDMETHODIMP GetTimeOfLastChange(IBindCtx *pbc, IMoniker *pmkToLeft,
|
|
FILETIME *pFileTime);
|
|
STDMETHODIMP Inverse(IMoniker **ppmk);
|
|
STDMETHODIMP CommonPrefixWith(IMoniker *pmkOther, IMoniker **ppmkPrefix);
|
|
STDMETHODIMP RelativePathTo(IMoniker *pmkOther, IMoniker **ppmkRelPath);
|
|
STDMETHODIMP GetDisplayName(IBindCtx *pbc, IMoniker *pmkToLeft,
|
|
LPOLESTR *ppszDisplayName);
|
|
STDMETHODIMP ParseDisplayName(IBindCtx *pbc, IMoniker *pmkToLeft,
|
|
LPOLESTR pszDisplayName, ULONG *pchEaten,
|
|
IMoniker **ppmkOut);
|
|
STDMETHODIMP IsSystemMoniker(DWORD *pdwMksys);
|
|
|
|
public:
|
|
//
|
|
// *** IMarshal methods ***
|
|
STDMETHODIMP GetUnmarshalClass(REFIID riid, void *pvInterface, DWORD dwDestContext,
|
|
void *pvDestContext, DWORD mshlflags, CLSID *pCid);
|
|
STDMETHODIMP GetMarshalSizeMax(REFIID riid, void *pvInterface, DWORD dwDestContext,
|
|
void *pvDestContext, DWORD mshlflags, DWORD *pSize);
|
|
STDMETHODIMP MarshalInterface(IStream *pStm, REFIID riid, void *pvInteface, DWORD dwDestContext,
|
|
void *pvDestContext, DWORD mshlflags);
|
|
STDMETHODIMP UnmarshalInterface(IStream *pStm, REFIID riid, void **ppv);
|
|
STDMETHODIMP ReleaseMarshalData(IStream *pStm);
|
|
STDMETHODIMP DisconnectObject(DWORD dwReserved);
|
|
|
|
private:
|
|
inline BOOL CanMarshalIID(REFIID riid);
|
|
HRESULT ValidateMarshalParams(REFIID riid, void *pvInterface, DWORD dwDestContext,
|
|
void *pvDestContext,DWORD mshlflags);
|
|
|
|
public:
|
|
// *** IROTData methods ***
|
|
STDMETHODIMP GetComparisonData(byte *pbData, ULONG cbMax, ULONG *pcbData);
|
|
|
|
private:
|
|
CRefCount _CRefs; // refcount class
|
|
LPWSTR _pwzUrl; // the url string
|
|
};
|
|
|
|
|
|
|
|
#endif // URLMK_HXX
|