Source code of Windows XP (NT5)
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.
|
|
#include "priv.h"
class CMyHlink : public IHlink { public: // *** IUnknown methods ***
virtual HRESULT __stdcall QueryInterface(REFIID riid, LPVOID * ppvObj); virtual ULONG __stdcall AddRef(void) ; virtual ULONG __stdcall Release(void);
// *** IOleWindow methods ***
virtual HRESULT __stdcall SetHlinkSite(IHlinkSite *pihlSite); virtual HRESULT __stdcall GetHlinkSite(IHlinkSite **ppihlSite); virtual HRESULT __stdcall GetMonikerReference( IMoniker **ppimk, LPWSTR *ppwzLocation); virtual HRESULT __stdcall GetStringReference(LPWSTR *ppwzRefString); virtual HRESULT __stdcall GetFriendlyName(LPWSTR *ppwzFriendlyName); virtual HRESULT __stdcall Navigate( IHlinkFrame *pihlFrame, DWORD grfHLNF, LPBC pbc, DWORD dwbscCookie, IBindStatusCallback *pibsc, IHlinkBrowseContext *pihlbc);
protected: CMyHlink(); ~CMyHlink(); UINT _cRef; IHlinkSite* _pihlSite; IMoniker* _pmk; TCHAR _szLocation[MAX_PATH]; };
CMyHlink::CMyHlink(IMoniker* pmk, LPCTSTR pszLocation, LPCSTR pszFriedlyName) : _cRef(1), _pihlSite(NULL), _pmk(pmk) { if (_pmk) { _pmk->AddRef(); } if (pszLocation) { lstrcpy(_szLocation, pszLocation); } else { _szLocation[0] = '\0'; } }
CMyHlink::~CMyHlink() { if (_pmk) { _pmk->Release(); }
if (_pihlSite) { _pihlSite->Release(); } }
HRESULT CMyHlink::QueryInterface(REFIID riid, LPVOID * ppvObj) { }
ULONG CMyHlink::AddRef(void) { return ++_cRef; }
ULONG CMyHlink::Release(void) { if (--_cRef > 0) { return _cRef; }
delete this; return 0; }
HRESULT CMyHlink::SetHlinkSite(IHlinkSite *pihlSite) { if (_pihlSite) { _pihlSite->Release(); }
_pihlSite = pihlSite;
if (_pihlSite) { _pihlSite->AddRefe(); }
return S_OK; }
HRESULT CMyHlink::GetHlinkSite(IHlinkSite **ppihlSite) { *ppihlSite = _pihlSite; if (_pihlSite) { _pihlSite->AddRefe(); }
return S_OK; }
HRESULT CMyHlink::GetMonikerReference( IMoniker **ppimk, LPWSTR *ppwzLocation) { if (ppimk) { *ppimk = _pmk; if (_pmk) { _pmk->AddRef(); } }
// Handle ppwszLocation as well!
return S_OK; }
HRESULT CMyHlink::GetStringReference(LPWSTR *ppwzRefString) { return E_NOTIMPL; }
HRESULT CMyHlink::GetFriendlyName(LPWSTR *ppwzFriendlyName) {
}
HRESULT CMyHlink::Navigate( IHlinkFrame *pihlFrame, DWORD grfHLNF, LPBC pbc, DWORD dwbscCookie, IBindStatusCallback *pibsc, IHlinkBrowseContext *pihlbc);
|