NO CODE CHANGES. Replaced all tab characters with spaces.

git-svn-id: svn://10.0.0.236/trunk@98179 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
locka%iol.ie 2001-06-28 13:01:52 +00:00
parent 5491b3db14
commit a3d0196ebe
29 changed files with 5487 additions and 5488 deletions

View File

@ -31,230 +31,230 @@
CActiveScriptSite::CActiveScriptSite()
{
m_ssScriptState = SCRIPTSTATE_UNINITIALIZED;
m_ssScriptState = SCRIPTSTATE_UNINITIALIZED;
}
CActiveScriptSite::~CActiveScriptSite()
{
Detach();
Detach();
}
HRESULT CActiveScriptSite::Attach(CLSID clsidScriptEngine)
{
// Detach to anything already attached to
Detach();
// Detach to anything already attached to
Detach();
// Create the new script engine
HRESULT hr = m_spIActiveScript.CoCreateInstance(clsidScriptEngine);
if (FAILED(hr))
{
return hr;
}
// Create the new script engine
HRESULT hr = m_spIActiveScript.CoCreateInstance(clsidScriptEngine);
if (FAILED(hr))
{
return hr;
}
// Attach the script engine to this site
m_spIActiveScript->SetScriptSite(this);
// Attach the script engine to this site
m_spIActiveScript->SetScriptSite(this);
// Initialise the script engine
CIPtr(IActiveScriptParse) spActiveScriptParse = m_spIActiveScript;
if (spActiveScriptParse)
{
spActiveScriptParse->InitNew();
}
else
{
}
// Initialise the script engine
CIPtr(IActiveScriptParse) spActiveScriptParse = m_spIActiveScript;
if (spActiveScriptParse)
{
spActiveScriptParse->InitNew();
}
else
{
}
return S_OK;
return S_OK;
}
HRESULT CActiveScriptSite::Detach()
{
if (m_spIActiveScript)
{
StopScript();
m_spIActiveScript->Close();
m_spIActiveScript.Release();
}
if (m_spIActiveScript)
{
StopScript();
m_spIActiveScript->Close();
m_spIActiveScript.Release();
}
return S_OK;
return S_OK;
}
HRESULT CActiveScriptSite::AttachVBScript()
{
static const CLSID CLSID_VBScript =
{ 0xB54F3741, 0x5B07, 0x11CF, { 0xA4, 0xB0, 0x00, 0xAA, 0x00, 0x4A, 0x55, 0xE8} };
return Attach(CLSID_VBScript);
static const CLSID CLSID_VBScript =
{ 0xB54F3741, 0x5B07, 0x11CF, { 0xA4, 0xB0, 0x00, 0xAA, 0x00, 0x4A, 0x55, 0xE8} };
return Attach(CLSID_VBScript);
}
HRESULT CActiveScriptSite::AttachJScript()
{
static const CLSID CLSID_JScript =
{ 0xF414C260, 0x6AC0, 0x11CF, { 0xB6, 0xD1, 0x00, 0xAA, 0x00, 0xBB, 0xBB, 0x58} };
static const CLSID CLSID_JScript =
{ 0xF414C260, 0x6AC0, 0x11CF, { 0xB6, 0xD1, 0x00, 0xAA, 0x00, 0xBB, 0xBB, 0x58} };
return Attach(CLSID_JScript);
return Attach(CLSID_JScript);
}
HRESULT CActiveScriptSite::AddNamedObject(const TCHAR *szName, IUnknown *pObject, BOOL bGlobalMembers)
{
if (m_spIActiveScript == NULL)
{
return E_UNEXPECTED;
}
if (m_spIActiveScript == NULL)
{
return E_UNEXPECTED;
}
if (pObject == NULL || szName == NULL)
{
return E_INVALIDARG;
}
if (pObject == NULL || szName == NULL)
{
return E_INVALIDARG;
}
// Check for objects of the same name already
CNamedObjectList::iterator i = m_cObjectList.find(szName);
if (i != m_cObjectList.end())
{
return E_FAIL;
}
// Check for objects of the same name already
CNamedObjectList::iterator i = m_cObjectList.find(szName);
if (i != m_cObjectList.end())
{
return E_FAIL;
}
// Add object to the list
m_cObjectList.insert(CNamedObjectList::value_type(szName, pObject));
// Add object to the list
m_cObjectList.insert(CNamedObjectList::value_type(szName, pObject));
// Tell the script engine about the object
HRESULT hr;
USES_CONVERSION;
DWORD dwFlags = SCRIPTITEM_ISSOURCE | SCRIPTITEM_ISVISIBLE;
if (bGlobalMembers)
{
dwFlags |= SCRIPTITEM_GLOBALMEMBERS;
}
// Tell the script engine about the object
HRESULT hr;
USES_CONVERSION;
DWORD dwFlags = SCRIPTITEM_ISSOURCE | SCRIPTITEM_ISVISIBLE;
if (bGlobalMembers)
{
dwFlags |= SCRIPTITEM_GLOBALMEMBERS;
}
hr = m_spIActiveScript->AddNamedItem(T2OLE(szName), dwFlags);
hr = m_spIActiveScript->AddNamedItem(T2OLE(szName), dwFlags);
if (FAILED(hr))
{
m_cObjectList.erase(szName);
return hr;
}
if (FAILED(hr))
{
m_cObjectList.erase(szName);
return hr;
}
return S_OK;
return S_OK;
}
HRESULT CActiveScriptSite::ParseScriptFile(const TCHAR *szFile)
{
USES_CONVERSION;
const char *pszFileName = T2CA(szFile);
// Stat the file and get its length;
struct _stat cStat;
_stat(pszFileName, &cStat);
USES_CONVERSION;
const char *pszFileName = T2CA(szFile);
// Stat the file and get its length;
struct _stat cStat;
_stat(pszFileName, &cStat);
// Allocate a buffer
size_t nBufSize = cStat.st_size + 1;
char *pBuffer = (char *) malloc(nBufSize);
if (pBuffer == NULL)
{
return E_OUTOFMEMORY;
}
memset(pBuffer, 0, nBufSize);
// Allocate a buffer
size_t nBufSize = cStat.st_size + 1;
char *pBuffer = (char *) malloc(nBufSize);
if (pBuffer == NULL)
{
return E_OUTOFMEMORY;
}
memset(pBuffer, 0, nBufSize);
// Read the script into the buffer and parse it
HRESULT hr = E_FAIL;
FILE *f = fopen(pszFileName, "rb");
if (f)
{
fread(pBuffer, 1, nBufSize - 1, f);
hr = ParseScriptText(A2T(pBuffer));
fclose(f);
}
// Read the script into the buffer and parse it
HRESULT hr = E_FAIL;
FILE *f = fopen(pszFileName, "rb");
if (f)
{
fread(pBuffer, 1, nBufSize - 1, f);
hr = ParseScriptText(A2T(pBuffer));
fclose(f);
}
free(pBuffer);
free(pBuffer);
return hr;
return hr;
}
HRESULT CActiveScriptSite::ParseScriptText(const TCHAR *szScript)
{
if (m_spIActiveScript == NULL)
{
return E_UNEXPECTED;
}
if (m_spIActiveScript == NULL)
{
return E_UNEXPECTED;
}
CIPtr(IActiveScriptParse) spIActiveScriptParse = m_spIActiveScript;
if (spIActiveScriptParse)
{
USES_CONVERSION;
CIPtr(IActiveScriptParse) spIActiveScriptParse = m_spIActiveScript;
if (spIActiveScriptParse)
{
USES_CONVERSION;
CComVariant vResult;
DWORD dwCookie = 0; // TODO
DWORD dwFlags = 0;
EXCEPINFO cExcepInfo;
HRESULT hr;
CComVariant vResult;
DWORD dwCookie = 0; // TODO
DWORD dwFlags = 0;
EXCEPINFO cExcepInfo;
HRESULT hr;
hr = spIActiveScriptParse->ParseScriptText(
T2OLE(szScript),
NULL, NULL, NULL, dwCookie, 0, dwFlags,
&vResult, &cExcepInfo);
hr = spIActiveScriptParse->ParseScriptText(
T2OLE(szScript),
NULL, NULL, NULL, dwCookie, 0, dwFlags,
&vResult, &cExcepInfo);
if (FAILED(hr))
{
return E_FAIL;
}
}
else
{
CIPtr(IPersistStream) spPersistStream = m_spIActiveScript;
CIPtr(IStream) spStream;
if (FAILED(hr))
{
return E_FAIL;
}
}
else
{
CIPtr(IPersistStream) spPersistStream = m_spIActiveScript;
CIPtr(IStream) spStream;
// Load text into the stream IPersistStream
if (spPersistStream &&
SUCCEEDED(CreateStreamOnHGlobal(NULL, TRUE, &spStream)))
{
USES_CONVERSION;
LARGE_INTEGER cPos = { 0, 0 };
LPOLESTR szText = T2OLE(szScript);
spStream->Write(szText, wcslen(szText) * sizeof(WCHAR), NULL);
spStream->Seek(cPos, STREAM_SEEK_SET, NULL);
spPersistStream->Load(spStream);
}
else
{
return E_UNEXPECTED;
}
}
// Load text into the stream IPersistStream
if (spPersistStream &&
SUCCEEDED(CreateStreamOnHGlobal(NULL, TRUE, &spStream)))
{
USES_CONVERSION;
LARGE_INTEGER cPos = { 0, 0 };
LPOLESTR szText = T2OLE(szScript);
spStream->Write(szText, wcslen(szText) * sizeof(WCHAR), NULL);
spStream->Seek(cPos, STREAM_SEEK_SET, NULL);
spPersistStream->Load(spStream);
}
else
{
return E_UNEXPECTED;
}
}
return S_OK;
return S_OK;
}
HRESULT CActiveScriptSite::PlayScript()
{
if (m_spIActiveScript == NULL)
{
return E_UNEXPECTED;
}
if (m_spIActiveScript == NULL)
{
return E_UNEXPECTED;
}
m_spIActiveScript->SetScriptState(SCRIPTSTATE_CONNECTED);
m_spIActiveScript->SetScriptState(SCRIPTSTATE_CONNECTED);
return S_OK;
return S_OK;
}
HRESULT CActiveScriptSite::StopScript()
{
if (m_spIActiveScript == NULL)
{
return E_UNEXPECTED;
}
if (m_spIActiveScript == NULL)
{
return E_UNEXPECTED;
}
m_spIActiveScript->SetScriptState(SCRIPTSTATE_DISCONNECTED);
m_spIActiveScript->SetScriptState(SCRIPTSTATE_DISCONNECTED);
return S_OK;
return S_OK;
}
@ -263,125 +263,125 @@ HRESULT CActiveScriptSite::StopScript()
HRESULT STDMETHODCALLTYPE CActiveScriptSite::GetLCID(/* [out] */ LCID __RPC_FAR *plcid)
{
// Use the system defined locale
return E_NOTIMPL;
// Use the system defined locale
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CActiveScriptSite::GetItemInfo(/* [in] */ LPCOLESTR pstrName, /* [in] */ DWORD dwReturnMask, /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppiunkItem, /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppti)
{
if (pstrName == NULL)
{
return E_INVALIDARG;
}
if (ppiunkItem)
{
*ppiunkItem = NULL;
}
if (pstrName == NULL)
{
return E_INVALIDARG;
}
if (ppiunkItem)
{
*ppiunkItem = NULL;
}
if (ppti)
{
*ppti = NULL;
}
if (ppti)
{
*ppti = NULL;
}
USES_CONVERSION;
USES_CONVERSION;
// Find object in list
CIUnkPtr spUnkObject;
CNamedObjectList::iterator i = m_cObjectList.find(OLE2T(pstrName));
if (i != m_cObjectList.end())
{
spUnkObject = (*i).second;
}
// Find object in list
CIUnkPtr spUnkObject;
CNamedObjectList::iterator i = m_cObjectList.find(OLE2T(pstrName));
if (i != m_cObjectList.end())
{
spUnkObject = (*i).second;
}
// Fill in the output values
if (spUnkObject == NULL)
{
return TYPE_E_ELEMENTNOTFOUND;
}
if (dwReturnMask & SCRIPTINFO_IUNKNOWN)
{
spUnkObject->QueryInterface(IID_IUnknown, (void **) ppiunkItem);
}
if (dwReturnMask & SCRIPTINFO_ITYPEINFO)
{
// Return the typeinfo in ptti
CIPtr(IDispatch) spIDispatch = spUnkObject;
if (spIDispatch)
{
HRESULT hr;
hr = spIDispatch->GetTypeInfo(0, GetSystemDefaultLCID(), ppti);
if (FAILED(hr))
{
*ppti = NULL;
}
}
}
// Fill in the output values
if (spUnkObject == NULL)
{
return TYPE_E_ELEMENTNOTFOUND;
}
if (dwReturnMask & SCRIPTINFO_IUNKNOWN)
{
spUnkObject->QueryInterface(IID_IUnknown, (void **) ppiunkItem);
}
if (dwReturnMask & SCRIPTINFO_ITYPEINFO)
{
// Return the typeinfo in ptti
CIPtr(IDispatch) spIDispatch = spUnkObject;
if (spIDispatch)
{
HRESULT hr;
hr = spIDispatch->GetTypeInfo(0, GetSystemDefaultLCID(), ppti);
if (FAILED(hr))
{
*ppti = NULL;
}
}
}
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CActiveScriptSite::GetDocVersionString(/* [out] */ BSTR __RPC_FAR *pbstrVersion)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CActiveScriptSite::OnScriptTerminate(/* [in] */ const VARIANT __RPC_FAR *pvarResult, /* [in] */ const EXCEPINFO __RPC_FAR *pexcepinfo)
{
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CActiveScriptSite::OnStateChange(/* [in] */ SCRIPTSTATE ssScriptState)
{
m_ssScriptState = ssScriptState;
return S_OK;
m_ssScriptState = ssScriptState;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CActiveScriptSite::OnScriptError(/* [in] */ IActiveScriptError __RPC_FAR *pscripterror)
{
BSTR bstrSourceLineText = NULL;
DWORD dwSourceContext = 0;
ULONG pulLineNumber = 0;
LONG ichCharPosition = 0;
EXCEPINFO cExcepInfo;
BSTR bstrSourceLineText = NULL;
DWORD dwSourceContext = 0;
ULONG pulLineNumber = 0;
LONG ichCharPosition = 0;
EXCEPINFO cExcepInfo;
memset(&cExcepInfo, 0, sizeof(cExcepInfo));
memset(&cExcepInfo, 0, sizeof(cExcepInfo));
// Get error information
pscripterror->GetSourcePosition(&dwSourceContext, &pulLineNumber, &ichCharPosition);
pscripterror->GetSourceLineText(&bstrSourceLineText);
pscripterror->GetExceptionInfo(&cExcepInfo);
// Get error information
pscripterror->GetSourcePosition(&dwSourceContext, &pulLineNumber, &ichCharPosition);
pscripterror->GetSourceLineText(&bstrSourceLineText);
pscripterror->GetExceptionInfo(&cExcepInfo);
tstring szDescription(_T("(No description)"));
if (cExcepInfo.bstrDescription)
{
// Dump info
USES_CONVERSION;
szDescription = OLE2T(cExcepInfo.bstrDescription);
}
tstring szDescription(_T("(No description)"));
if (cExcepInfo.bstrDescription)
{
// Dump info
USES_CONVERSION;
szDescription = OLE2T(cExcepInfo.bstrDescription);
}
ATLTRACE(_T("Script Error: %s, code=0x%08x\n"), szDescription.c_str(), cExcepInfo.scode);
ATLTRACE(_T("Script Error: %s, code=0x%08x\n"), szDescription.c_str(), cExcepInfo.scode);
SysFreeString(bstrSourceLineText);
SysFreeString(bstrSourceLineText);
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CActiveScriptSite::OnEnterScript(void)
{
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CActiveScriptSite::OnLeaveScript(void)
{
return S_OK;
return S_OK;
}

View File

@ -26,53 +26,53 @@
#define ACTIVESCRIPTSITE_H
class CActiveScriptSite : public CComObjectRootEx<CComSingleThreadModel>,
public IActiveScriptSite
class CActiveScriptSite : public CComObjectRootEx<CComSingleThreadModel>,
public IActiveScriptSite
{
// Pointer to owned script engine
CComQIPtr<IActiveScript, &IID_IActiveScript> m_spIActiveScript;
// Pointer to owned script engine
CComQIPtr<IActiveScript, &IID_IActiveScript> m_spIActiveScript;
// List of registered, named objects
CNamedObjectList m_cObjectList;
// List of registered, named objects
CNamedObjectList m_cObjectList;
// Current script state
SCRIPTSTATE m_ssScriptState;
// Current script state
SCRIPTSTATE m_ssScriptState;
public:
CActiveScriptSite();
virtual ~CActiveScriptSite();
CActiveScriptSite();
virtual ~CActiveScriptSite();
BEGIN_COM_MAP(CActiveScriptSite)
COM_INTERFACE_ENTRY(IActiveScriptSite)
COM_INTERFACE_ENTRY(IActiveScriptSite)
END_COM_MAP()
// Attach to the specified script engine
virtual HRESULT Attach(CLSID clsidScriptEngine);
// Helper to attach to the VBScript engine
virtual HRESULT AttachVBScript();
// Helper to attach to the JScript engine
virtual HRESULT AttachJScript();
// Detach from the script engine
virtual HRESULT Detach();
// Return the current state of the script engine
virtual SCRIPTSTATE GetScriptState() const
{
return m_ssScriptState;
}
// Attach to the specified script engine
virtual HRESULT Attach(CLSID clsidScriptEngine);
// Helper to attach to the VBScript engine
virtual HRESULT AttachVBScript();
// Helper to attach to the JScript engine
virtual HRESULT AttachJScript();
// Detach from the script engine
virtual HRESULT Detach();
// Return the current state of the script engine
virtual SCRIPTSTATE GetScriptState() const
{
return m_ssScriptState;
}
// Parse the specified script
virtual HRESULT ParseScriptText(const TCHAR *szScript);
// Parse the specified script from a file
virtual HRESULT ParseScriptFile(const TCHAR *szFile);
// Add object to script address space
virtual HRESULT AddNamedObject(const TCHAR *szName, IUnknown *pObject, BOOL bGlobalMembers = FALSE);
// Play the script
virtual HRESULT PlayScript();
// Stop the script
virtual HRESULT StopScript();
// Parse the specified script
virtual HRESULT ParseScriptText(const TCHAR *szScript);
// Parse the specified script from a file
virtual HRESULT ParseScriptFile(const TCHAR *szFile);
// Add object to script address space
virtual HRESULT AddNamedObject(const TCHAR *szName, IUnknown *pObject, BOOL bGlobalMembers = FALSE);
// Play the script
virtual HRESULT PlayScript();
// Stop the script
virtual HRESULT StopScript();
public:
// IActiveScriptSite
// IActiveScriptSite
virtual HRESULT STDMETHODCALLTYPE GetLCID(/* [out] */ LCID __RPC_FAR *plcid);
virtual HRESULT STDMETHODCALLTYPE GetItemInfo(/* [in] */ LPCOLESTR pstrName, /* [in] */ DWORD dwReturnMask, /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppiunkItem, /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppti);
virtual HRESULT STDMETHODCALLTYPE GetDocVersionString(/* [out] */ BSTR __RPC_FAR *pbstrVersion);

View File

@ -29,18 +29,18 @@
# include <assert.h>
# define NG_TRACE NgTrace
# define NG_TRACE_METHOD(fn) \
{ \
NG_TRACE(_T("0x%04x %s()\n"), (int) GetCurrentThreadId(), _T(#fn)); \
}
{ \
NG_TRACE(_T("0x%04x %s()\n"), (int) GetCurrentThreadId(), _T(#fn)); \
}
# define NG_TRACE_METHOD_ARGS(fn, pattern, args) \
{ \
NG_TRACE(_T("0x%04x %s(") _T(pattern) _T(")\n"), (int) GetCurrentThreadId(), _T(#fn), args); \
}
{ \
NG_TRACE(_T("0x%04x %s(") _T(pattern) _T(")\n"), (int) GetCurrentThreadId(), _T(#fn), args); \
}
# define NG_ASSERT(expr) assert(expr)
# define NG_ASSERT_POINTER(p, type) \
NG_ASSERT(((p) != NULL) && NgIsValidAddress((p), sizeof(type), FALSE))
NG_ASSERT(((p) != NULL) && NgIsValidAddress((p), sizeof(type), FALSE))
# define NG_ASSERT_NULL_OR_POINTER(p, type) \
NG_ASSERT(((p) == NULL) || NgIsValidAddress((p), sizeof(type), FALSE))
NG_ASSERT(((p) == NULL) || NgIsValidAddress((p), sizeof(type), FALSE))
#else
# define NG_TRACE 1 ? (void)0 : NgTrace
# define NG_TRACE_METHOD(fn)
@ -54,23 +54,23 @@
inline void _cdecl NgTrace(LPCSTR lpszFormat, ...)
{
va_list args;
va_start(args, lpszFormat);
va_list args;
va_start(args, lpszFormat);
int nBuf;
char szBuffer[512];
int nBuf;
char szBuffer[512];
nBuf = _vsnprintf(szBuffer, sizeof(szBuffer), lpszFormat, args);
NG_ASSERT(nBuf < sizeof(szBuffer)); //Output truncated as it was > sizeof(szBuffer)
nBuf = _vsnprintf(szBuffer, sizeof(szBuffer), lpszFormat, args);
NG_ASSERT(nBuf < sizeof(szBuffer)); //Output truncated as it was > sizeof(szBuffer)
OutputDebugStringA(szBuffer);
va_end(args);
OutputDebugStringA(szBuffer);
va_end(args);
}
inline BOOL NgIsValidAddress(const void* lp, UINT nBytes, BOOL bReadWrite = TRUE)
{
return (lp != NULL && !IsBadReadPtr(lp, nBytes) &&
(!bReadWrite || !IsBadWritePtr((LPVOID)lp, nBytes)));
return (lp != NULL && !IsBadReadPtr(lp, nBytes) &&
(!bReadWrite || !IsBadWritePtr((LPVOID)lp, nBytes)));
}
#endif

File diff suppressed because it is too large Load Diff

View File

@ -31,18 +31,18 @@
// in the interface map of the derived class to include all the necessary
// interfaces.
#define CCONTROLSITE_INTERFACES() \
COM_INTERFACE_ENTRY(IOleWindow) \
COM_INTERFACE_ENTRY(IOleClientSite) \
COM_INTERFACE_ENTRY(IOleInPlaceSite) \
COM_INTERFACE_ENTRY_IID(IID_IOleInPlaceSite, IOleInPlaceSiteWindowless) \
COM_INTERFACE_ENTRY_IID(IID_IOleInPlaceSiteEx, IOleInPlaceSiteWindowless) \
COM_INTERFACE_ENTRY_IID(IID_IOleInPlaceSiteWindowless, IOleInPlaceSiteWindowless) \
COM_INTERFACE_ENTRY(IOleControlSite) \
COM_INTERFACE_ENTRY(IDispatch) \
COM_INTERFACE_ENTRY_IID(IID_IAdviseSink, IAdviseSinkEx) \
COM_INTERFACE_ENTRY_IID(IID_IAdviseSink2, IAdviseSinkEx) \
COM_INTERFACE_ENTRY_IID(IID_IAdviseSinkEx, IAdviseSinkEx) \
COM_INTERFACE_ENTRY(IOleCommandTarget)
COM_INTERFACE_ENTRY(IOleWindow) \
COM_INTERFACE_ENTRY(IOleClientSite) \
COM_INTERFACE_ENTRY(IOleInPlaceSite) \
COM_INTERFACE_ENTRY_IID(IID_IOleInPlaceSite, IOleInPlaceSiteWindowless) \
COM_INTERFACE_ENTRY_IID(IID_IOleInPlaceSiteEx, IOleInPlaceSiteWindowless) \
COM_INTERFACE_ENTRY_IID(IID_IOleInPlaceSiteWindowless, IOleInPlaceSiteWindowless) \
COM_INTERFACE_ENTRY(IOleControlSite) \
COM_INTERFACE_ENTRY(IDispatch) \
COM_INTERFACE_ENTRY_IID(IID_IAdviseSink, IAdviseSinkEx) \
COM_INTERFACE_ENTRY_IID(IID_IAdviseSink2, IAdviseSinkEx) \
COM_INTERFACE_ENTRY_IID(IID_IAdviseSinkEx, IAdviseSinkEx) \
COM_INTERFACE_ENTRY(IOleCommandTarget)
//
@ -68,170 +68,170 @@
// pSite->Release();
// pSite = NULL;
class CControlSite : public CComObjectRootEx<CComSingleThreadModel>,
public IOleClientSite,
public IOleInPlaceSiteWindowless,
public IOleControlSite,
public IAdviseSinkEx,
public IDispatch,
public IOleCommandTargetImpl<CControlSite>
class CControlSite : public CComObjectRootEx<CComSingleThreadModel>,
public IOleClientSite,
public IOleInPlaceSiteWindowless,
public IOleControlSite,
public IAdviseSinkEx,
public IDispatch,
public IOleCommandTargetImpl<CControlSite>
{
protected:
// Site management values
// Handle to parent window
HWND m_hWndParent;
// Position of the site and the contained object
RECT m_rcObjectPos;
// Flag indicating if client site should be set early or late
unsigned m_bSetClientSiteFirst:1;
// Flag indicating whether control is visible or not
unsigned m_bVisibleAtRuntime:1;
// Flag indicating if control is in-place active
unsigned m_bInPlaceActive:1;
// Flag indicating if control is UI active
unsigned m_bUIActive:1;
// Flag indicating if control is in-place locked and cannot be deactivated
unsigned m_bInPlaceLocked:1;
// Flag indicating if the site allows windowless controls
unsigned m_bSupportWindowlessActivation:1;
// Flag indicating if control is windowless
unsigned m_bWindowless:1;
// Flag indicating if only safely scriptable controls are allowed
unsigned m_bSafeForScriptingObjectsOnly:1;
// Handle to parent window
HWND m_hWndParent;
// Position of the site and the contained object
RECT m_rcObjectPos;
// Flag indicating if client site should be set early or late
unsigned m_bSetClientSiteFirst:1;
// Flag indicating whether control is visible or not
unsigned m_bVisibleAtRuntime:1;
// Flag indicating if control is in-place active
unsigned m_bInPlaceActive:1;
// Flag indicating if control is UI active
unsigned m_bUIActive:1;
// Flag indicating if control is in-place locked and cannot be deactivated
unsigned m_bInPlaceLocked:1;
// Flag indicating if the site allows windowless controls
unsigned m_bSupportWindowlessActivation:1;
// Flag indicating if control is windowless
unsigned m_bWindowless:1;
// Flag indicating if only safely scriptable controls are allowed
unsigned m_bSafeForScriptingObjectsOnly:1;
// Pointers to object interfaces
// Raw pointer to the object
CComPtr<IUnknown> m_spObject;
// Pointer to objects IViewObject interface
CComQIPtr<IViewObject, &IID_IViewObject> m_spIViewObject;
// Pointer to object's IOleObject interface
CComQIPtr<IOleObject, &IID_IOleObject> m_spIOleObject;
// Pointer to object's IOleInPlaceObject interface
CComQIPtr<IOleInPlaceObject, &IID_IOleInPlaceObject> m_spIOleInPlaceObject;
// Pointer to object's IOleInPlaceObjectWindowless interface
CComQIPtr<IOleInPlaceObjectWindowless, &IID_IOleInPlaceObjectWindowless> m_spIOleInPlaceObjectWindowless;
// Name of this control
tstring m_szName;
// CLSID of the control
CLSID m_clsid;
// Parameter list
PropertyList m_ParameterList;
// Raw pointer to the object
CComPtr<IUnknown> m_spObject;
// Pointer to objects IViewObject interface
CComQIPtr<IViewObject, &IID_IViewObject> m_spIViewObject;
// Pointer to object's IOleObject interface
CComQIPtr<IOleObject, &IID_IOleObject> m_spIOleObject;
// Pointer to object's IOleInPlaceObject interface
CComQIPtr<IOleInPlaceObject, &IID_IOleInPlaceObject> m_spIOleInPlaceObject;
// Pointer to object's IOleInPlaceObjectWindowless interface
CComQIPtr<IOleInPlaceObjectWindowless, &IID_IOleInPlaceObjectWindowless> m_spIOleInPlaceObjectWindowless;
// Name of this control
tstring m_szName;
// CLSID of the control
CLSID m_clsid;
// Parameter list
PropertyList m_ParameterList;
// Double buffer drawing variables used for windowless controls
// Area of buffer
RECT m_rcBuffer;
// Bitmap to buffer
HBITMAP m_hBMBuffer;
// Bitmap to buffer
HBITMAP m_hBMBufferOld;
// Device context
HDC m_hDCBuffer;
// Clipping area of site
HRGN m_hRgnBuffer;
// Flags indicating how the buffer was painted
DWORD m_dwBufferFlags;
// Area of buffer
RECT m_rcBuffer;
// Bitmap to buffer
HBITMAP m_hBMBuffer;
// Bitmap to buffer
HBITMAP m_hBMBufferOld;
// Device context
HDC m_hDCBuffer;
// Clipping area of site
HRGN m_hRgnBuffer;
// Flags indicating how the buffer was painted
DWORD m_dwBufferFlags;
// Ambient properties
// Locale ID
LCID m_nAmbientLocale;
// Foreground colour
COLORREF m_clrAmbientForeColor;
// Background colour
COLORREF m_clrAmbientBackColor;
// Flag indicating if control should hatch itself
bool m_bAmbientShowHatching:1;
// Flag indicating if control should have grab handles
bool m_bAmbientShowGrabHandles:1;
// Flag indicating if control is in edit/user mode
bool m_bAmbientUserMode:1;
// Locale ID
LCID m_nAmbientLocale;
// Foreground colour
COLORREF m_clrAmbientForeColor;
// Background colour
COLORREF m_clrAmbientBackColor;
// Flag indicating if control should hatch itself
bool m_bAmbientShowHatching:1;
// Flag indicating if control should have grab handles
bool m_bAmbientShowGrabHandles:1;
// Flag indicating if control is in edit/user mode
bool m_bAmbientUserMode:1;
// Flag indicating if control has a 3d border or not
bool m_bAmbientAppearance:1;
protected:
// Notifies the attached control of a change to an ambient property
virtual void FireAmbientPropertyChange(DISPID id);
// Notifies the attached control of a change to an ambient property
virtual void FireAmbientPropertyChange(DISPID id);
public:
// Construction and destruction
// Constructor
CControlSite();
// Destructor
virtual ~CControlSite();
// Constructor
CControlSite();
// Destructor
virtual ~CControlSite();
BEGIN_COM_MAP(CControlSite)
CCONTROLSITE_INTERFACES()
CCONTROLSITE_INTERFACES()
END_COM_MAP()
BEGIN_OLECOMMAND_TABLE()
END_OLECOMMAND_TABLE()
// List of controls
static std::list<CControlSite *> m_cControlList;
// List of controls
static std::list<CControlSite *> m_cControlList;
// Helper method
static HRESULT ClassImplementsCategory(const CLSID &clsid, const CATID &catid);
// Helper method
static HRESULT ClassImplementsCategory(const CLSID &clsid, const CATID &catid);
// Returns the window used when processing ole commands
HWND GetCommandTargetWindow()
{
return NULL; // TODO
}
// Returns the window used when processing ole commands
HWND GetCommandTargetWindow()
{
return NULL; // TODO
}
// Object creation and management functions
// Creates and initialises an object
virtual HRESULT Create(REFCLSID clsid, PropertyList &pl = PropertyList(), const tstring szName = _T(""));
// Attaches the object to the site
virtual HRESULT Attach(HWND hwndParent, const RECT &rcPos, IUnknown *pInitStream = NULL);
// Detaches the object from the site
virtual HRESULT Detach();
// Returns the IUnknown pointer for the object
virtual HRESULT GetControlUnknown(IUnknown **ppObject);
// Sets the bounding rectangle for the object
virtual HRESULT SetPosition(const RECT &rcPos);
// Draws the object using the provided DC
virtual HRESULT Draw(HDC hdc);
// Performs the specified action on the object
virtual HRESULT DoVerb(LONG nVerb, LPMSG lpMsg = NULL);
// Sets an advise sink up for changes to the object
virtual HRESULT Advise(IUnknown *pIUnkSink, const IID &iid, DWORD *pdwCookie);
// Removes an advise sink
virtual HRESULT Unadvise(const IID &iid, DWORD dwCookie);
// Creates and initialises an object
virtual HRESULT Create(REFCLSID clsid, PropertyList &pl = PropertyList(), const tstring szName = _T(""));
// Attaches the object to the site
virtual HRESULT Attach(HWND hwndParent, const RECT &rcPos, IUnknown *pInitStream = NULL);
// Detaches the object from the site
virtual HRESULT Detach();
// Returns the IUnknown pointer for the object
virtual HRESULT GetControlUnknown(IUnknown **ppObject);
// Sets the bounding rectangle for the object
virtual HRESULT SetPosition(const RECT &rcPos);
// Draws the object using the provided DC
virtual HRESULT Draw(HDC hdc);
// Performs the specified action on the object
virtual HRESULT DoVerb(LONG nVerb, LPMSG lpMsg = NULL);
// Sets an advise sink up for changes to the object
virtual HRESULT Advise(IUnknown *pIUnkSink, const IID &iid, DWORD *pdwCookie);
// Removes an advise sink
virtual HRESULT Unadvise(const IID &iid, DWORD dwCookie);
// Methods to set ambient properties
virtual void SetAmbientUserMode(BOOL bUser);
virtual void SetAmbientUserMode(BOOL bUser);
// Inline helper methods
// Returns the object's CLSID
virtual const CLSID &GetObjectCLSID() const
{
return m_clsid;
}
// Returns the name of the object
virtual const tstring &GetObjectName() const
{
return m_szName;
}
// Tests if the object is valid or not
virtual BOOL IsObjectValid() const
{
return (m_spObject) ? TRUE : FALSE;
}
// Returns the parent window to this one
virtual HWND GetParentWindow() const
{
return m_hWndParent;
}
// Returns the inplace active state of the object
virtual BOOL IsInPlaceActive() const
{
return m_bInPlaceActive;
}
// Returns the object's CLSID
virtual const CLSID &GetObjectCLSID() const
{
return m_clsid;
}
// Returns the name of the object
virtual const tstring &GetObjectName() const
{
return m_szName;
}
// Tests if the object is valid or not
virtual BOOL IsObjectValid() const
{
return (m_spObject) ? TRUE : FALSE;
}
// Returns the parent window to this one
virtual HWND GetParentWindow() const
{
return m_hWndParent;
}
// Returns the inplace active state of the object
virtual BOOL IsInPlaceActive() const
{
return m_bInPlaceActive;
}
// IDispatch
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(/* [out] */ UINT __RPC_FAR *pctinfo);
virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(/* [in] */ UINT iTInfo, /* [in] */ LCID lcid, /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(/* [in] */ REFIID riid, /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames, /* [in] */ UINT cNames, /* [in] */ LCID lcid, /* [size_is][out] */ DISPID __RPC_FAR *rgDispId);
virtual /* [local] */ HRESULT STDMETHODCALLTYPE Invoke(/* [in] */ DISPID dispIdMember, /* [in] */ REFIID riid, /* [in] */ LCID lcid, /* [in] */ WORD wFlags, /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams, /* [out] */ VARIANT __RPC_FAR *pVarResult, /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo, /* [out] */ UINT __RPC_FAR *puArgErr);
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(/* [out] */ UINT __RPC_FAR *pctinfo);
virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(/* [in] */ UINT iTInfo, /* [in] */ LCID lcid, /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(/* [in] */ REFIID riid, /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames, /* [in] */ UINT cNames, /* [in] */ LCID lcid, /* [size_is][out] */ DISPID __RPC_FAR *rgDispId);
virtual /* [local] */ HRESULT STDMETHODCALLTYPE Invoke(/* [in] */ DISPID dispIdMember, /* [in] */ REFIID riid, /* [in] */ LCID lcid, /* [in] */ WORD wFlags, /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams, /* [out] */ VARIANT __RPC_FAR *pVarResult, /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo, /* [out] */ UINT __RPC_FAR *puArgErr);
// IAdviseSink implementation
virtual /* [local] */ void STDMETHODCALLTYPE OnDataChange(/* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc, /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed);
@ -241,62 +241,62 @@ END_OLECOMMAND_TABLE()
virtual /* [local] */ void STDMETHODCALLTYPE OnClose(void);
// IAdviseSink2
virtual /* [local] */ void STDMETHODCALLTYPE OnLinkSrcChange(/* [unique][in] */ IMoniker __RPC_FAR *pmk);
virtual /* [local] */ void STDMETHODCALLTYPE OnLinkSrcChange(/* [unique][in] */ IMoniker __RPC_FAR *pmk);
// IAdviseSinkEx implementation
virtual /* [local] */ void STDMETHODCALLTYPE OnViewStatusChange(/* [in] */ DWORD dwViewStatus);
// IOleWindow implementation
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetWindow(/* [out] */ HWND __RPC_FAR *phwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(/* [in] */ BOOL fEnterMode);
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetWindow(/* [out] */ HWND __RPC_FAR *phwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(/* [in] */ BOOL fEnterMode);
// IOleClientSite implementation
virtual HRESULT STDMETHODCALLTYPE SaveObject(void);
virtual HRESULT STDMETHODCALLTYPE GetMoniker(/* [in] */ DWORD dwAssign, /* [in] */ DWORD dwWhichMoniker, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
virtual HRESULT STDMETHODCALLTYPE GetContainer(/* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer);
virtual HRESULT STDMETHODCALLTYPE ShowObject(void);
virtual HRESULT STDMETHODCALLTYPE OnShowWindow(/* [in] */ BOOL fShow);
virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout(void);
virtual HRESULT STDMETHODCALLTYPE SaveObject(void);
virtual HRESULT STDMETHODCALLTYPE GetMoniker(/* [in] */ DWORD dwAssign, /* [in] */ DWORD dwWhichMoniker, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
virtual HRESULT STDMETHODCALLTYPE GetContainer(/* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer);
virtual HRESULT STDMETHODCALLTYPE ShowObject(void);
virtual HRESULT STDMETHODCALLTYPE OnShowWindow(/* [in] */ BOOL fShow);
virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout(void);
// IOleInPlaceSite implementation
virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate(void);
virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate(void);
virtual HRESULT STDMETHODCALLTYPE OnUIActivate(void);
virtual HRESULT STDMETHODCALLTYPE GetWindowContext(/* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame, /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc, /* [out] */ LPRECT lprcPosRect, /* [out] */ LPRECT lprcClipRect, /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
virtual HRESULT STDMETHODCALLTYPE Scroll(/* [in] */ SIZE scrollExtant);
virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(/* [in] */ BOOL fUndoable);
virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate(void);
virtual HRESULT STDMETHODCALLTYPE DiscardUndoState(void);
virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo(void);
virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(/* [in] */ LPCRECT lprcPosRect);
virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate(void);
virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate(void);
virtual HRESULT STDMETHODCALLTYPE OnUIActivate(void);
virtual HRESULT STDMETHODCALLTYPE GetWindowContext(/* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame, /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc, /* [out] */ LPRECT lprcPosRect, /* [out] */ LPRECT lprcClipRect, /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
virtual HRESULT STDMETHODCALLTYPE Scroll(/* [in] */ SIZE scrollExtant);
virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(/* [in] */ BOOL fUndoable);
virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate(void);
virtual HRESULT STDMETHODCALLTYPE DiscardUndoState(void);
virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo(void);
virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(/* [in] */ LPCRECT lprcPosRect);
// IOleInPlaceSiteEx implementation
virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivateEx(/* [out] */ BOOL __RPC_FAR *pfNoRedraw, /* [in] */ DWORD dwFlags);
virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivateEx(/* [in] */ BOOL fNoRedraw);
virtual HRESULT STDMETHODCALLTYPE RequestUIActivate(void);
virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivateEx(/* [out] */ BOOL __RPC_FAR *pfNoRedraw, /* [in] */ DWORD dwFlags);
virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivateEx(/* [in] */ BOOL fNoRedraw);
virtual HRESULT STDMETHODCALLTYPE RequestUIActivate(void);
// IOleInPlaceSiteWindowless implementation
virtual HRESULT STDMETHODCALLTYPE CanWindowlessActivate(void);
virtual HRESULT STDMETHODCALLTYPE GetCapture(void);
virtual HRESULT STDMETHODCALLTYPE SetCapture(/* [in] */ BOOL fCapture);
virtual HRESULT STDMETHODCALLTYPE GetFocus(void);
virtual HRESULT STDMETHODCALLTYPE SetFocus(/* [in] */ BOOL fFocus);
virtual HRESULT STDMETHODCALLTYPE GetDC(/* [in] */ LPCRECT pRect, /* [in] */ DWORD grfFlags, /* [out] */ HDC __RPC_FAR *phDC);
virtual HRESULT STDMETHODCALLTYPE ReleaseDC(/* [in] */ HDC hDC);
virtual HRESULT STDMETHODCALLTYPE InvalidateRect(/* [in] */ LPCRECT pRect, /* [in] */ BOOL fErase);
virtual HRESULT STDMETHODCALLTYPE InvalidateRgn(/* [in] */ HRGN hRGN, /* [in] */ BOOL fErase);
virtual HRESULT STDMETHODCALLTYPE ScrollRect(/* [in] */ INT dx, /* [in] */ INT dy, /* [in] */ LPCRECT pRectScroll, /* [in] */ LPCRECT pRectClip);
virtual HRESULT STDMETHODCALLTYPE AdjustRect(/* [out][in] */ LPRECT prc);
virtual HRESULT STDMETHODCALLTYPE OnDefWindowMessage(/* [in] */ UINT msg, /* [in] */ WPARAM wParam, /* [in] */ LPARAM lParam, /* [out] */ LRESULT __RPC_FAR *plResult);
virtual HRESULT STDMETHODCALLTYPE CanWindowlessActivate(void);
virtual HRESULT STDMETHODCALLTYPE GetCapture(void);
virtual HRESULT STDMETHODCALLTYPE SetCapture(/* [in] */ BOOL fCapture);
virtual HRESULT STDMETHODCALLTYPE GetFocus(void);
virtual HRESULT STDMETHODCALLTYPE SetFocus(/* [in] */ BOOL fFocus);
virtual HRESULT STDMETHODCALLTYPE GetDC(/* [in] */ LPCRECT pRect, /* [in] */ DWORD grfFlags, /* [out] */ HDC __RPC_FAR *phDC);
virtual HRESULT STDMETHODCALLTYPE ReleaseDC(/* [in] */ HDC hDC);
virtual HRESULT STDMETHODCALLTYPE InvalidateRect(/* [in] */ LPCRECT pRect, /* [in] */ BOOL fErase);
virtual HRESULT STDMETHODCALLTYPE InvalidateRgn(/* [in] */ HRGN hRGN, /* [in] */ BOOL fErase);
virtual HRESULT STDMETHODCALLTYPE ScrollRect(/* [in] */ INT dx, /* [in] */ INT dy, /* [in] */ LPCRECT pRectScroll, /* [in] */ LPCRECT pRectClip);
virtual HRESULT STDMETHODCALLTYPE AdjustRect(/* [out][in] */ LPRECT prc);
virtual HRESULT STDMETHODCALLTYPE OnDefWindowMessage(/* [in] */ UINT msg, /* [in] */ WPARAM wParam, /* [in] */ LPARAM lParam, /* [out] */ LRESULT __RPC_FAR *plResult);
// IOleControlSite implementation
virtual HRESULT STDMETHODCALLTYPE OnControlInfoChanged(void);
virtual HRESULT STDMETHODCALLTYPE LockInPlaceActive(/* [in] */ BOOL fLock);
virtual HRESULT STDMETHODCALLTYPE GetExtendedControl(/* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDisp);
virtual HRESULT STDMETHODCALLTYPE TransformCoords(/* [out][in] */ POINTL __RPC_FAR *pPtlHimetric, /* [out][in] */ POINTF __RPC_FAR *pPtfContainer, /* [in] */ DWORD dwFlags);
virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(/* [in] */ MSG __RPC_FAR *pMsg, /* [in] */ DWORD grfModifiers);
virtual HRESULT STDMETHODCALLTYPE OnFocus(/* [in] */ BOOL fGotFocus);
virtual HRESULT STDMETHODCALLTYPE ShowPropertyFrame( void);
virtual HRESULT STDMETHODCALLTYPE OnControlInfoChanged(void);
virtual HRESULT STDMETHODCALLTYPE LockInPlaceActive(/* [in] */ BOOL fLock);
virtual HRESULT STDMETHODCALLTYPE GetExtendedControl(/* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDisp);
virtual HRESULT STDMETHODCALLTYPE TransformCoords(/* [out][in] */ POINTL __RPC_FAR *pPtlHimetric, /* [out][in] */ POINTF __RPC_FAR *pPtfContainer, /* [in] */ DWORD dwFlags);
virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(/* [in] */ MSG __RPC_FAR *pMsg, /* [in] */ DWORD grfModifiers);
virtual HRESULT STDMETHODCALLTYPE OnFocus(/* [in] */ BOOL fGotFocus);
virtual HRESULT STDMETHODCALLTYPE ShowPropertyFrame( void);
};
typedef CComObject<CControlSite> CControlSiteInstance;

View File

@ -27,7 +27,7 @@
CControlSiteIPFrame::CControlSiteIPFrame()
{
m_hwndFrame = NULL;
m_hwndFrame = NULL;
}
@ -40,18 +40,18 @@ CControlSiteIPFrame::~CControlSiteIPFrame()
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::GetWindow(/* [out] */ HWND __RPC_FAR *phwnd)
{
if (phwnd == NULL)
{
return E_INVALIDARG;
}
*phwnd = m_hwndFrame;
if (phwnd == NULL)
{
return E_INVALIDARG;
}
*phwnd = m_hwndFrame;
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::ContextSensitiveHelp(/* [in] */ BOOL fEnterMode)
{
return S_OK;
return S_OK;
}
@ -60,25 +60,25 @@ HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::ContextSensitiveHelp(/* [in] */ B
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::GetBorder(/* [out] */ LPRECT lprectBorder)
{
return INPLACE_E_NOTOOLSPACE;
return INPLACE_E_NOTOOLSPACE;
}
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::RequestBorderSpace(/* [unique][in] */ LPCBORDERWIDTHS pborderwidths)
{
return INPLACE_E_NOTOOLSPACE;
return INPLACE_E_NOTOOLSPACE;
}
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::SetBorderSpace(/* [unique][in] */ LPCBORDERWIDTHS pborderwidths)
{
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::SetActiveObject(/* [unique][in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject, /* [unique][string][in] */ LPCOLESTR pszObjName)
{
return S_OK;
return S_OK;
}
@ -87,36 +87,36 @@ HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::SetActiveObject(/* [unique][in] *
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::InsertMenus(/* [in] */ HMENU hmenuShared, /* [out][in] */ LPOLEMENUGROUPWIDTHS lpMenuWidths)
{
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::SetMenu(/* [in] */ HMENU hmenuShared, /* [in] */ HOLEMENU holemenu, /* [in] */ HWND hwndActiveObject)
{
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::RemoveMenus(/* [in] */ HMENU hmenuShared)
{
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::SetStatusText(/* [in] */ LPCOLESTR pszStatusText)
{
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::EnableModeless(/* [in] */ BOOL fEnable)
{
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CControlSiteIPFrame::TranslateAccelerator(/* [in] */ LPMSG lpmsg, /* [in] */ WORD wID)
{
return E_NOTIMPL;
return E_NOTIMPL;
}

View File

@ -25,38 +25,38 @@
#ifndef CONTROLSITEIPFRAME_H
#define CONTROLSITEIPFRAME_H
class CControlSiteIPFrame : public CComObjectRootEx<CComSingleThreadModel>,
public IOleInPlaceFrame
class CControlSiteIPFrame : public CComObjectRootEx<CComSingleThreadModel>,
public IOleInPlaceFrame
{
public:
CControlSiteIPFrame();
virtual ~CControlSiteIPFrame();
CControlSiteIPFrame();
virtual ~CControlSiteIPFrame();
HWND m_hwndFrame;
HWND m_hwndFrame;
BEGIN_COM_MAP(CControlSiteIPFrame)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleInPlaceFrame)
COM_INTERFACE_ENTRY_IID(IID_IOleInPlaceUIWindow, IOleInPlaceFrame)
COM_INTERFACE_ENTRY(IOleInPlaceFrame)
COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IOleInPlaceFrame)
COM_INTERFACE_ENTRY_IID(IID_IOleInPlaceUIWindow, IOleInPlaceFrame)
COM_INTERFACE_ENTRY(IOleInPlaceFrame)
END_COM_MAP()
// IOleWindow
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetWindow(/* [out] */ HWND __RPC_FAR *phwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(/* [in] */ BOOL fEnterMode);
// IOleWindow
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetWindow(/* [out] */ HWND __RPC_FAR *phwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(/* [in] */ BOOL fEnterMode);
// IOleInPlaceUIWindow implementation
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetBorder(/* [out] */ LPRECT lprectBorder);
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE RequestBorderSpace(/* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetBorderSpace(/* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
virtual HRESULT STDMETHODCALLTYPE SetActiveObject(/* [unique][in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject, /* [unique][string][in] */ LPCOLESTR pszObjName);
// IOleInPlaceUIWindow implementation
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetBorder(/* [out] */ LPRECT lprectBorder);
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE RequestBorderSpace(/* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetBorderSpace(/* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
virtual HRESULT STDMETHODCALLTYPE SetActiveObject(/* [unique][in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject, /* [unique][string][in] */ LPCOLESTR pszObjName);
// IOleInPlaceFrame implementation
virtual HRESULT STDMETHODCALLTYPE InsertMenus(/* [in] */ HMENU hmenuShared, /* [out][in] */ LPOLEMENUGROUPWIDTHS lpMenuWidths);
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetMenu(/* [in] */ HMENU hmenuShared, /* [in] */ HOLEMENU holemenu, /* [in] */ HWND hwndActiveObject);
virtual HRESULT STDMETHODCALLTYPE RemoveMenus(/* [in] */ HMENU hmenuShared);
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetStatusText(/* [in] */ LPCOLESTR pszStatusText);
virtual HRESULT STDMETHODCALLTYPE EnableModeless(/* [in] */ BOOL fEnable);
virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(/* [in] */ LPMSG lpmsg, /* [in] */ WORD wID);
// IOleInPlaceFrame implementation
virtual HRESULT STDMETHODCALLTYPE InsertMenus(/* [in] */ HMENU hmenuShared, /* [out][in] */ LPOLEMENUGROUPWIDTHS lpMenuWidths);
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetMenu(/* [in] */ HMENU hmenuShared, /* [in] */ HOLEMENU holemenu, /* [in] */ HWND hwndActiveObject);
virtual HRESULT STDMETHODCALLTYPE RemoveMenus(/* [in] */ HMENU hmenuShared);
virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetStatusText(/* [in] */ LPCOLESTR pszStatusText);
virtual HRESULT STDMETHODCALLTYPE EnableModeless(/* [in] */ BOOL fEnable);
virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(/* [in] */ LPMSG lpmsg, /* [in] */ WORD wID);
};
typedef CComObject<CControlSiteIPFrame> CControlSiteIPFrameInstance;

View File

@ -48,7 +48,7 @@ static const UINT g_cfFileNameW = RegisterClipboardFormat(CFSTR_FILENAMEW);
CDropTarget::CDropTarget()
{
m_pOwner = NULL;
m_pOwner = NULL;
}
@ -59,49 +59,49 @@ CDropTarget::~CDropTarget()
void CDropTarget::SetOwner(CMozillaBrowser *pOwner)
{
m_pOwner = pOwner;
m_pOwner = pOwner;
}
HRESULT CDropTarget::GetURLFromFile(const TCHAR *pszFile, tstring &szURL)
{
USES_CONVERSION;
CIPtr(IUniformResourceLocator) spUrl;
USES_CONVERSION;
CIPtr(IUniformResourceLocator) spUrl;
// Let's see if the file is an Internet Shortcut...
HRESULT hr = CoCreateInstance (CLSID_InternetShortcut, NULL, CLSCTX_INPROC_SERVER, IID_IUniformResourceLocator, (void **) &spUrl);
if (spUrl == NULL)
{
return E_FAIL;
}
// Let's see if the file is an Internet Shortcut...
HRESULT hr = CoCreateInstance (CLSID_InternetShortcut, NULL, CLSCTX_INPROC_SERVER, IID_IUniformResourceLocator, (void **) &spUrl);
if (spUrl == NULL)
{
return E_FAIL;
}
// Get the IPersistFile interface
CIPtr(IPersistFile) spFile = spUrl;
if (spFile == NULL)
{
return E_FAIL;
}
// Get the IPersistFile interface
CIPtr(IPersistFile) spFile = spUrl;
if (spFile == NULL)
{
return E_FAIL;
}
// Initialise the URL object from the filename
LPSTR lpTemp = NULL;
if (FAILED(spFile->Load(T2OLE(pszFile), STGM_READ)) ||
FAILED(spUrl->GetURL(&lpTemp)))
{
return E_FAIL;
}
// Initialise the URL object from the filename
LPSTR lpTemp = NULL;
if (FAILED(spFile->Load(T2OLE(pszFile), STGM_READ)) ||
FAILED(spUrl->GetURL(&lpTemp)))
{
return E_FAIL;
}
// Free the memory
CIPtr(IMalloc) spMalloc;
if (FAILED(SHGetMalloc(&spMalloc)))
{
return E_FAIL;
}
// Copy the URL & cleanup
szURL = A2T(lpTemp);
spMalloc->Free(lpTemp);
// Free the memory
CIPtr(IMalloc) spMalloc;
if (FAILED(SHGetMalloc(&spMalloc)))
{
return E_FAIL;
}
// Copy the URL & cleanup
szURL = A2T(lpTemp);
spMalloc->Free(lpTemp);
return S_OK;
return S_OK;
}
///////////////////////////////////////////////////////////////////////////////
@ -109,172 +109,172 @@ HRESULT CDropTarget::GetURLFromFile(const TCHAR *pszFile, tstring &szURL)
HRESULT STDMETHODCALLTYPE CDropTarget::DragEnter(/* [unique][in] */ IDataObject __RPC_FAR *pDataObj, /* [in] */ DWORD grfKeyState, /* [in] */ POINTL pt, /* [out][in] */ DWORD __RPC_FAR *pdwEffect)
{
if (pdwEffect == NULL || pDataObj == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
if (pdwEffect == NULL || pDataObj == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
if (m_spDataObject != NULL)
{
NG_ASSERT(0);
return E_UNEXPECTED;
}
if (m_spDataObject != NULL)
{
NG_ASSERT(0);
return E_UNEXPECTED;
}
// TODO process Internet Shortcuts (*.URL) files
FORMATETC formatetc;
memset(&formatetc, 0, sizeof(formatetc));
formatetc.dwAspect = DVASPECT_CONTENT;
formatetc.lindex = -1;
formatetc.tymed = TYMED_HGLOBAL;
// TODO process Internet Shortcuts (*.URL) files
FORMATETC formatetc;
memset(&formatetc, 0, sizeof(formatetc));
formatetc.dwAspect = DVASPECT_CONTENT;
formatetc.lindex = -1;
formatetc.tymed = TYMED_HGLOBAL;
// Test if the data object contains a text URL format
formatetc.cfFormat = g_cfURL;
if (pDataObj->QueryGetData(&formatetc) == S_OK)
{
m_spDataObject = pDataObj;
*pdwEffect = DROPEFFECT_LINK;
return S_OK;
}
// Test if the data object contains a text URL format
formatetc.cfFormat = g_cfURL;
if (pDataObj->QueryGetData(&formatetc) == S_OK)
{
m_spDataObject = pDataObj;
*pdwEffect = DROPEFFECT_LINK;
return S_OK;
}
// Test if the data object contains a file name
formatetc.cfFormat = g_cfFileName;
if (pDataObj->QueryGetData(&formatetc) == S_OK)
{
m_spDataObject = pDataObj;
*pdwEffect = DROPEFFECT_LINK;
return S_OK;
}
// Test if the data object contains a wide character file name
formatetc.cfFormat = g_cfFileName;
if (pDataObj->QueryGetData(&formatetc) == S_OK)
{
m_spDataObject = pDataObj;
*pdwEffect = DROPEFFECT_LINK;
return S_OK;
}
// Test if the data object contains a file name
formatetc.cfFormat = g_cfFileName;
if (pDataObj->QueryGetData(&formatetc) == S_OK)
{
m_spDataObject = pDataObj;
*pdwEffect = DROPEFFECT_LINK;
return S_OK;
}
// Test if the data object contains a wide character file name
formatetc.cfFormat = g_cfFileName;
if (pDataObj->QueryGetData(&formatetc) == S_OK)
{
m_spDataObject = pDataObj;
*pdwEffect = DROPEFFECT_LINK;
return S_OK;
}
// If we got here, then the format is not supported
*pdwEffect = DROPEFFECT_NONE;
return S_OK;
// If we got here, then the format is not supported
*pdwEffect = DROPEFFECT_NONE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CDropTarget::DragOver(/* [in] */ DWORD grfKeyState, /* [in] */ POINTL pt, /* [out][in] */ DWORD __RPC_FAR *pdwEffect)
{
if (pdwEffect == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
*pdwEffect = m_spDataObject ? DROPEFFECT_LINK : DROPEFFECT_NONE;
return S_OK;
if (pdwEffect == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
*pdwEffect = m_spDataObject ? DROPEFFECT_LINK : DROPEFFECT_NONE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CDropTarget::DragLeave(void)
{
if (m_spDataObject)
{
m_spDataObject.Release();
}
return S_OK;
if (m_spDataObject)
{
m_spDataObject.Release();
}
return S_OK;
}
HRESULT STDMETHODCALLTYPE CDropTarget::Drop(/* [unique][in] */ IDataObject __RPC_FAR *pDataObj, /* [in] */ DWORD grfKeyState, /* [in] */ POINTL pt, /* [out][in] */ DWORD __RPC_FAR *pdwEffect)
{
if (pdwEffect == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
if (m_spDataObject == NULL)
{
*pdwEffect = DROPEFFECT_NONE;
return S_OK;
}
if (pdwEffect == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
if (m_spDataObject == NULL)
{
*pdwEffect = DROPEFFECT_NONE;
return S_OK;
}
*pdwEffect = DROPEFFECT_LINK;
*pdwEffect = DROPEFFECT_LINK;
// Get the URL from the data object
BSTR bstrURL = NULL;
FORMATETC formatetc;
STGMEDIUM stgmedium;
memset(&formatetc, 0, sizeof(formatetc));
memset(&stgmedium, 0, sizeof(formatetc));
// Get the URL from the data object
BSTR bstrURL = NULL;
FORMATETC formatetc;
STGMEDIUM stgmedium;
memset(&formatetc, 0, sizeof(formatetc));
memset(&stgmedium, 0, sizeof(formatetc));
formatetc.dwAspect = DVASPECT_CONTENT;
formatetc.lindex = -1;
formatetc.tymed = TYMED_HGLOBAL;
formatetc.dwAspect = DVASPECT_CONTENT;
formatetc.lindex = -1;
formatetc.tymed = TYMED_HGLOBAL;
// Does the data object contain a URL?
formatetc.cfFormat = g_cfURL;
if (m_spDataObject->GetData(&formatetc, &stgmedium) == S_OK)
{
NG_ASSERT(stgmedium.tymed == TYMED_HGLOBAL);
NG_ASSERT(stgmedium.hGlobal);
char *pszURL = (char *) GlobalLock(stgmedium.hGlobal);
NG_TRACE("URL \"%s\" dragged over control\n", pszURL);
// Browse to the URL
if (m_pOwner)
{
USES_CONVERSION;
bstrURL = SysAllocString(A2OLE(pszURL));
}
GlobalUnlock(stgmedium.hGlobal);
goto finish;
}
// Does the data object contain a URL?
formatetc.cfFormat = g_cfURL;
if (m_spDataObject->GetData(&formatetc, &stgmedium) == S_OK)
{
NG_ASSERT(stgmedium.tymed == TYMED_HGLOBAL);
NG_ASSERT(stgmedium.hGlobal);
char *pszURL = (char *) GlobalLock(stgmedium.hGlobal);
NG_TRACE("URL \"%s\" dragged over control\n", pszURL);
// Browse to the URL
if (m_pOwner)
{
USES_CONVERSION;
bstrURL = SysAllocString(A2OLE(pszURL));
}
GlobalUnlock(stgmedium.hGlobal);
goto finish;
}
// Does the data object point to a file?
formatetc.cfFormat = g_cfFileName;
if (m_spDataObject->GetData(&formatetc, &stgmedium) == S_OK)
{
USES_CONVERSION;
NG_ASSERT(stgmedium.tymed == TYMED_HGLOBAL);
NG_ASSERT(stgmedium.hGlobal);
tstring szURL;
char *pszURLFile = (char *) GlobalLock(stgmedium.hGlobal);
NG_TRACE("File \"%s\" dragged over control\n", pszURLFile);
if (SUCCEEDED(GetURLFromFile(A2T(pszURLFile), szURL)))
{
bstrURL = SysAllocString(T2OLE(szURL.c_str()));
}
GlobalUnlock(stgmedium.hGlobal);
goto finish;
}
// Does the data object point to a wide character file?
formatetc.cfFormat = g_cfFileNameW;
if (m_spDataObject->GetData(&formatetc, &stgmedium) == S_OK)
{
USES_CONVERSION;
NG_ASSERT(stgmedium.tymed == TYMED_HGLOBAL);
NG_ASSERT(stgmedium.hGlobal);
tstring szURL;
WCHAR *pszURLFile = (WCHAR *) GlobalLock(stgmedium.hGlobal);
NG_TRACE("File \"%s\" dragged over control\n", W2A(pszURLFile));
if (SUCCEEDED(GetURLFromFile(W2T(pszURLFile), szURL)))
{
USES_CONVERSION;
bstrURL = SysAllocString(T2OLE(szURL.c_str()));
}
GlobalUnlock(stgmedium.hGlobal);
goto finish;
}
// Does the data object point to a file?
formatetc.cfFormat = g_cfFileName;
if (m_spDataObject->GetData(&formatetc, &stgmedium) == S_OK)
{
USES_CONVERSION;
NG_ASSERT(stgmedium.tymed == TYMED_HGLOBAL);
NG_ASSERT(stgmedium.hGlobal);
tstring szURL;
char *pszURLFile = (char *) GlobalLock(stgmedium.hGlobal);
NG_TRACE("File \"%s\" dragged over control\n", pszURLFile);
if (SUCCEEDED(GetURLFromFile(A2T(pszURLFile), szURL)))
{
bstrURL = SysAllocString(T2OLE(szURL.c_str()));
}
GlobalUnlock(stgmedium.hGlobal);
goto finish;
}
// Does the data object point to a wide character file?
formatetc.cfFormat = g_cfFileNameW;
if (m_spDataObject->GetData(&formatetc, &stgmedium) == S_OK)
{
USES_CONVERSION;
NG_ASSERT(stgmedium.tymed == TYMED_HGLOBAL);
NG_ASSERT(stgmedium.hGlobal);
tstring szURL;
WCHAR *pszURLFile = (WCHAR *) GlobalLock(stgmedium.hGlobal);
NG_TRACE("File \"%s\" dragged over control\n", W2A(pszURLFile));
if (SUCCEEDED(GetURLFromFile(W2T(pszURLFile), szURL)))
{
USES_CONVERSION;
bstrURL = SysAllocString(T2OLE(szURL.c_str()));
}
GlobalUnlock(stgmedium.hGlobal);
goto finish;
}
finish:
// If we got a URL, browse there!
if (bstrURL)
{
m_pOwner->Navigate(bstrURL, NULL, NULL, NULL, NULL);
SysFreeString(bstrURL);
}
// If we got a URL, browse there!
if (bstrURL)
{
m_pOwner->Navigate(bstrURL, NULL, NULL, NULL, NULL);
SysFreeString(bstrURL);
}
ReleaseStgMedium(&stgmedium);
m_spDataObject.Release();
ReleaseStgMedium(&stgmedium);
m_spDataObject.Release();
return S_OK;
return S_OK;
}

View File

@ -33,29 +33,29 @@ class CDropTarget : public CComObjectRootEx<CComSingleThreadModel>,
public IDropTarget
{
public:
CDropTarget();
virtual ~CDropTarget();
CDropTarget();
virtual ~CDropTarget();
BEGIN_COM_MAP(CDropTarget)
COM_INTERFACE_ENTRY(IDropTarget)
COM_INTERFACE_ENTRY(IDropTarget)
END_COM_MAP()
// Data object currently being dragged
CIPtr(IDataObject) m_spDataObject;
// Data object currently being dragged
CIPtr(IDataObject) m_spDataObject;
// Owner of this object
CMozillaBrowser *m_pOwner;
// Owner of this object
CMozillaBrowser *m_pOwner;
// Sets the owner of this object
void SetOwner(CMozillaBrowser *pOwner);
// Helper method to extract a URL from an internet shortcut file
HRESULT CDropTarget::GetURLFromFile(const TCHAR *pszFile, tstring &szURL);
// Sets the owner of this object
void SetOwner(CMozillaBrowser *pOwner);
// Helper method to extract a URL from an internet shortcut file
HRESULT CDropTarget::GetURLFromFile(const TCHAR *pszFile, tstring &szURL);
// IDropTarget
virtual HRESULT STDMETHODCALLTYPE DragEnter(/* [unique][in] */ IDataObject __RPC_FAR *pDataObj, /* [in] */ DWORD grfKeyState, /* [in] */ POINTL pt, /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragOver(/* [in] */ DWORD grfKeyState, /* [in] */ POINTL pt, /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragLeave(void);
virtual HRESULT STDMETHODCALLTYPE Drop(/* [unique][in] */ IDataObject __RPC_FAR *pDataObj, /* [in] */ DWORD grfKeyState, /* [in] */ POINTL pt, /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragEnter(/* [unique][in] */ IDataObject __RPC_FAR *pDataObj, /* [in] */ DWORD grfKeyState, /* [in] */ POINTL pt, /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragOver(/* [in] */ DWORD grfKeyState, /* [in] */ POINTL pt, /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
virtual HRESULT STDMETHODCALLTYPE DragLeave(void);
virtual HRESULT STDMETHODCALLTYPE Drop(/* [unique][in] */ IDataObject __RPC_FAR *pDataObj, /* [in] */ DWORD grfKeyState, /* [in] */ POINTL pt, /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
};
typedef CComObject<CDropTarget> CDropTargetInstance;

View File

@ -32,150 +32,150 @@
class CMozillaBrowser;
class CIEHtmlDocument : public CIEHtmlNode,
public IDispatchImpl<IHTMLDocument2, &IID_IHTMLDocument2, &LIBID_MSHTML, 4, 0>,
public IOleCommandTarget
class CIEHtmlDocument : public CIEHtmlNode,
public IDispatchImpl<IHTMLDocument2, &IID_IHTMLDocument2, &LIBID_MSHTML, 4, 0>,
public IOleCommandTarget
{
public:
CIEHtmlDocument();
CIEHtmlDocument();
protected:
virtual ~CIEHtmlDocument();
virtual ~CIEHtmlDocument();
// Pointer to browser that owns the document
CMozillaBrowser *m_pParent;
// Pointer to browser that owns the document
CMozillaBrowser *m_pParent;
nsIDOMHTMLDocument *m_pNative;
HRESULT WriteCommon(SAFEARRAY __RPC_FAR * psarray, int bLn);
public:
virtual void SetParent(CMozillaBrowser *parent);
virtual void SetParent(CMozillaBrowser *parent);
virtual void SetNative(nsIDOMHTMLDocument *native);
BEGIN_COM_MAP(CIEHtmlDocument)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IHTMLDocument2)
COM_INTERFACE_ENTRY_IID(IID_IHTMLDocument, IHTMLDocument2)
COM_INTERFACE_ENTRY_IID(IID_IHTMLDocument2, IHTMLDocument2)
COM_INTERFACE_ENTRY(IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IHTMLDocument2)
COM_INTERFACE_ENTRY_IID(IID_IHTMLDocument, IHTMLDocument2)
COM_INTERFACE_ENTRY_IID(IID_IHTMLDocument2, IHTMLDocument2)
COM_INTERFACE_ENTRY(IOleCommandTarget)
END_COM_MAP()
virtual HRESULT GetIDispatch(IDispatch **pDispatch);
virtual HRESULT GetIDispatch(IDispatch **pDispatch);
// IOleCommandTarget methods
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID __RPC_FAR *pguidCmdGroup, ULONG cCmds, OLECMD __RPC_FAR prgCmds[], OLECMDTEXT __RPC_FAR *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID __RPC_FAR *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT __RPC_FAR *pvaIn, VARIANT __RPC_FAR *pvaOut);
// IOleCommandTarget methods
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID __RPC_FAR *pguidCmdGroup, ULONG cCmds, OLECMD __RPC_FAR prgCmds[], OLECMDTEXT __RPC_FAR *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID __RPC_FAR *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT __RPC_FAR *pvaIn, VARIANT __RPC_FAR *pvaOut);
// IHTMLDocument methods
virtual HRESULT STDMETHODCALLTYPE get_Script(IDispatch __RPC_FAR *__RPC_FAR *p);
// IHTMLDocument methods
virtual HRESULT STDMETHODCALLTYPE get_Script(IDispatch __RPC_FAR *__RPC_FAR *p);
// IHTMLDocument2 methods
virtual HRESULT STDMETHODCALLTYPE get_all(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_body(IHTMLElement __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_activeElement(IHTMLElement __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_images(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_applets(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_links(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_forms(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_anchors(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_title(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_title(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_scripts(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_designMode(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_designMode(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_selection(IHTMLSelectionObject __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_readyState(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_frames(IHTMLFramesCollection2 __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_embeds(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_plugins(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_alinkColor(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_alinkColor(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_bgColor(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_bgColor(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_fgColor(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_fgColor(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_linkColor(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_linkColor(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_vlinkColor(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_vlinkColor(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_referrer(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_location(IHTMLLocation __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_lastModified(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_URL(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_URL(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_domain(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_domain(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_cookie(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_cookie(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_expando(VARIANT_BOOL v);
virtual HRESULT STDMETHODCALLTYPE get_expando(VARIANT_BOOL __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_charset(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_charset(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_defaultCharset(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_defaultCharset(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_mimeType(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_fileSize(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_fileCreatedDate(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_fileModifiedDate(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_fileUpdatedDate(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_security(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_protocol(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_nameProp(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE write(SAFEARRAY __RPC_FAR * psarray);
virtual HRESULT STDMETHODCALLTYPE writeln(SAFEARRAY __RPC_FAR * psarray);
virtual HRESULT STDMETHODCALLTYPE open(BSTR url, VARIANT name, VARIANT features, VARIANT replace, IDispatch __RPC_FAR *__RPC_FAR *pomWindowResult);
virtual HRESULT STDMETHODCALLTYPE close(void);
virtual HRESULT STDMETHODCALLTYPE clear(void);
virtual HRESULT STDMETHODCALLTYPE queryCommandSupported(BSTR cmdID, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE queryCommandEnabled(BSTR cmdID, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE queryCommandState(BSTR cmdID, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE queryCommandIndeterm(BSTR cmdID, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE queryCommandText(BSTR cmdID, BSTR __RPC_FAR *pcmdText);
virtual HRESULT STDMETHODCALLTYPE queryCommandValue(BSTR cmdID, VARIANT __RPC_FAR *pcmdValue);
virtual HRESULT STDMETHODCALLTYPE execCommand(BSTR cmdID, VARIANT_BOOL showUI, VARIANT value, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE execCommandShowHelp(BSTR cmdID, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE createElement(BSTR eTag, IHTMLElement __RPC_FAR *__RPC_FAR *newElem);
virtual HRESULT STDMETHODCALLTYPE put_onhelp(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onhelp(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onclick(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onclick(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondblclick(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondblclick(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeyup(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeyup(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeydown(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeydown(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeypress(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeypress(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseup(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseup(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmousedown(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmousedown(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmousemove(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmousemove(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseout(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseout(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseover(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseover(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onreadystatechange(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onreadystatechange(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onafterupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onafterupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onrowexit(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onrowexit(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onrowenter(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onrowenter(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondragstart(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondragstart(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onselectstart(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onselectstart(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE elementFromPoint(long x, long y, IHTMLElement __RPC_FAR *__RPC_FAR *elementHit);
virtual HRESULT STDMETHODCALLTYPE get_parentWindow(IHTMLWindow2 __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_styleSheets(IHTMLStyleSheetsCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onbeforeupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onbeforeupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onerrorupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onerrorupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE toString(BSTR __RPC_FAR *String);
virtual HRESULT STDMETHODCALLTYPE createStyleSheet(BSTR bstrHref, long lIndex, IHTMLStyleSheet __RPC_FAR *__RPC_FAR *ppnewStyleSheet);
// IHTMLDocument2 methods
virtual HRESULT STDMETHODCALLTYPE get_all(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_body(IHTMLElement __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_activeElement(IHTMLElement __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_images(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_applets(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_links(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_forms(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_anchors(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_title(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_title(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_scripts(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_designMode(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_designMode(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_selection(IHTMLSelectionObject __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_readyState(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_frames(IHTMLFramesCollection2 __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_embeds(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_plugins(IHTMLElementCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_alinkColor(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_alinkColor(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_bgColor(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_bgColor(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_fgColor(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_fgColor(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_linkColor(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_linkColor(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_vlinkColor(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_vlinkColor(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_referrer(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_location(IHTMLLocation __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_lastModified(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_URL(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_URL(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_domain(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_domain(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_cookie(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_cookie(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_expando(VARIANT_BOOL v);
virtual HRESULT STDMETHODCALLTYPE get_expando(VARIANT_BOOL __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_charset(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_charset(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_defaultCharset(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_defaultCharset(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_mimeType(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_fileSize(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_fileCreatedDate(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_fileModifiedDate(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_fileUpdatedDate(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_security(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_protocol(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_nameProp(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE write(SAFEARRAY __RPC_FAR * psarray);
virtual HRESULT STDMETHODCALLTYPE writeln(SAFEARRAY __RPC_FAR * psarray);
virtual HRESULT STDMETHODCALLTYPE open(BSTR url, VARIANT name, VARIANT features, VARIANT replace, IDispatch __RPC_FAR *__RPC_FAR *pomWindowResult);
virtual HRESULT STDMETHODCALLTYPE close(void);
virtual HRESULT STDMETHODCALLTYPE clear(void);
virtual HRESULT STDMETHODCALLTYPE queryCommandSupported(BSTR cmdID, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE queryCommandEnabled(BSTR cmdID, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE queryCommandState(BSTR cmdID, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE queryCommandIndeterm(BSTR cmdID, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE queryCommandText(BSTR cmdID, BSTR __RPC_FAR *pcmdText);
virtual HRESULT STDMETHODCALLTYPE queryCommandValue(BSTR cmdID, VARIANT __RPC_FAR *pcmdValue);
virtual HRESULT STDMETHODCALLTYPE execCommand(BSTR cmdID, VARIANT_BOOL showUI, VARIANT value, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE execCommandShowHelp(BSTR cmdID, VARIANT_BOOL __RPC_FAR *pfRet);
virtual HRESULT STDMETHODCALLTYPE createElement(BSTR eTag, IHTMLElement __RPC_FAR *__RPC_FAR *newElem);
virtual HRESULT STDMETHODCALLTYPE put_onhelp(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onhelp(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onclick(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onclick(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondblclick(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondblclick(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeyup(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeyup(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeydown(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeydown(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeypress(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeypress(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseup(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseup(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmousedown(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmousedown(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmousemove(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmousemove(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseout(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseout(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseover(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseover(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onreadystatechange(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onreadystatechange(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onafterupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onafterupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onrowexit(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onrowexit(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onrowenter(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onrowenter(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondragstart(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondragstart(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onselectstart(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onselectstart(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE elementFromPoint(long x, long y, IHTMLElement __RPC_FAR *__RPC_FAR *elementHit);
virtual HRESULT STDMETHODCALLTYPE get_parentWindow(IHTMLWindow2 __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_styleSheets(IHTMLStyleSheetsCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onbeforeupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onbeforeupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onerrorupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onerrorupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE toString(BSTR __RPC_FAR *String);
virtual HRESULT STDMETHODCALLTYPE createStyleSheet(BSTR bstrHref, long lIndex, IHTMLStyleSheet __RPC_FAR *__RPC_FAR *ppnewStyleSheet);
};
typedef CComObject<CIEHtmlDocument> CIEHtmlDocumentInstance;

View File

@ -41,34 +41,34 @@ CIEHtmlElement::~CIEHtmlElement()
HRESULT CIEHtmlElement::GetIDispatch(IDispatch **pDispatch)
{
if (pDispatch == NULL)
{
return E_INVALIDARG;
}
return QueryInterface(IID_IDispatch, (void **) pDispatch);
if (pDispatch == NULL)
{
return E_INVALIDARG;
}
return QueryInterface(IID_IDispatch, (void **) pDispatch);
}
HRESULT CIEHtmlElement::GetChildren(CIEHtmlElementCollectionInstance **ppCollection)
{
// Validate parameters
if (ppCollection == NULL)
{
return E_INVALIDARG;
}
// Validate parameters
if (ppCollection == NULL)
{
return E_INVALIDARG;
}
*ppCollection = NULL;
*ppCollection = NULL;
// Create a collection representing the children of this node
CIEHtmlElementCollectionInstance *pCollection = NULL;
CIEHtmlElementCollection::CreateFromParentNode(this, FALSE, (CIEHtmlElementCollection **) &pCollection);
if (pCollection)
{
pCollection->AddRef();
*ppCollection = pCollection;
}
// Create a collection representing the children of this node
CIEHtmlElementCollectionInstance *pCollection = NULL;
CIEHtmlElementCollection::CreateFromParentNode(this, FALSE, (CIEHtmlElementCollection **) &pCollection);
if (pCollection)
{
pCollection->AddRef();
*ppCollection = pCollection;
}
return S_OK;
return S_OK;
}
@ -77,369 +77,369 @@ HRESULT CIEHtmlElement::GetChildren(CIEHtmlElementCollectionInstance **ppCollect
HRESULT STDMETHODCALLTYPE CIEHtmlElement::setAttribute(BSTR strAttributeName, VARIANT AttributeValue, LONG lFlags)
{
if (strAttributeName == NULL)
{
return E_INVALIDARG;
}
if (strAttributeName == NULL)
{
return E_INVALIDARG;
}
// Get the name from the BSTR
USES_CONVERSION;
nsString szName(OLE2W(strAttributeName));
// Get the name from the BSTR
USES_CONVERSION;
nsString szName(OLE2W(strAttributeName));
// Get the value from the variant
CComVariant vValue;
if (FAILED(vValue.ChangeType(VT_BSTR, &AttributeValue)))
{
return E_INVALIDARG;
}
nsString szValue(OLE2W(vValue.bstrVal));
// Get the value from the variant
CComVariant vValue;
if (FAILED(vValue.ChangeType(VT_BSTR, &AttributeValue)))
{
return E_INVALIDARG;
}
nsString szValue(OLE2W(vValue.bstrVal));
nsCOMPtr<nsIDOMElement> element;
if (FAILED(GetDOMElement(getter_AddRefs(element))))
{
return E_UNEXPECTED;
}
nsCOMPtr<nsIDOMElement> element;
if (FAILED(GetDOMElement(getter_AddRefs(element))))
{
return E_UNEXPECTED;
}
// Set the attribute
element->SetAttribute(szName, szValue);
// Set the attribute
element->SetAttribute(szName, szValue);
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::getAttribute(BSTR strAttributeName, LONG lFlags, VARIANT __RPC_FAR *AttributeValue)
{
if (strAttributeName == NULL)
{
return E_INVALIDARG;
}
if (AttributeValue == NULL)
{
return E_INVALIDARG;
}
VariantInit(AttributeValue);
if (strAttributeName == NULL)
{
return E_INVALIDARG;
}
if (AttributeValue == NULL)
{
return E_INVALIDARG;
}
VariantInit(AttributeValue);
// Get the name from the BSTR
USES_CONVERSION;
nsString szName(OLE2W(strAttributeName));
// Get the name from the BSTR
USES_CONVERSION;
nsString szName(OLE2W(strAttributeName));
nsCOMPtr<nsIDOMElement> element;
if (FAILED(GetDOMElement(getter_AddRefs(element))))
{
return E_UNEXPECTED;
}
nsCOMPtr<nsIDOMElement> element;
if (FAILED(GetDOMElement(getter_AddRefs(element))))
{
return E_UNEXPECTED;
}
BOOL bCaseSensitive = (lFlags == VARIANT_TRUE) ? TRUE : FALSE;
BOOL bCaseSensitive = (lFlags == VARIANT_TRUE) ? TRUE : FALSE;
nsString szValue;
nsString szValue;
// Get the attribute
nsresult nr = element->GetAttribute(szName, szValue);
// Get the attribute
nsresult nr = element->GetAttribute(szName, szValue);
if (nr == NS_OK)
{
USES_CONVERSION;
AttributeValue->vt = VT_BSTR;
AttributeValue->bstrVal = SysAllocString(W2COLE(szValue.GetUnicode()));
return S_OK;
}
else
{
return S_FALSE;
}
if (nr == NS_OK)
{
USES_CONVERSION;
AttributeValue->vt = VT_BSTR;
AttributeValue->bstrVal = SysAllocString(W2COLE(szValue.GetUnicode()));
return S_OK;
}
else
{
return S_FALSE;
}
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::removeAttribute(BSTR strAttributeName, LONG lFlags, VARIANT_BOOL __RPC_FAR *pfSuccess)
{
if (strAttributeName == NULL)
{
return E_INVALIDARG;
}
if (strAttributeName == NULL)
{
return E_INVALIDARG;
}
nsCOMPtr<nsIDOMElement> element;
if (FAILED(GetDOMElement(getter_AddRefs(element))))
{
return E_UNEXPECTED;
}
nsCOMPtr<nsIDOMElement> element;
if (FAILED(GetDOMElement(getter_AddRefs(element))))
{
return E_UNEXPECTED;
}
BOOL bCaseSensitive = (lFlags == VARIANT_TRUE) ? TRUE : FALSE;
BOOL bCaseSensitive = (lFlags == VARIANT_TRUE) ? TRUE : FALSE;
// Get the name from the BSTR
USES_CONVERSION;
nsString szName(OLE2W(strAttributeName));
// Get the name from the BSTR
USES_CONVERSION;
nsString szName(OLE2W(strAttributeName));
// Remove the attribute
nsresult nr = element->RemoveAttribute(szName);
BOOL bRemoved = (nr == NS_OK) ? TRUE : FALSE;
// Remove the attribute
nsresult nr = element->RemoveAttribute(szName);
BOOL bRemoved = (nr == NS_OK) ? TRUE : FALSE;
if (pfSuccess)
{
*pfSuccess = (bRemoved) ? VARIANT_TRUE : VARIANT_FALSE;
}
if (pfSuccess)
{
*pfSuccess = (bRemoved) ? VARIANT_TRUE : VARIANT_FALSE;
}
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_className(BSTR v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_className(BSTR __RPC_FAR *p)
{
if (p == NULL)
{
return E_INVALIDARG;
}
if (p == NULL)
{
return E_INVALIDARG;
}
VARIANT vValue;
VariantInit(&vValue);
BSTR bstrName = SysAllocString(OLESTR("class"));
getAttribute(bstrName, FALSE, &vValue);
SysFreeString(bstrName);
VARIANT vValue;
VariantInit(&vValue);
BSTR bstrName = SysAllocString(OLESTR("class"));
getAttribute(bstrName, FALSE, &vValue);
SysFreeString(bstrName);
*p = vValue.bstrVal;
return S_OK;
*p = vValue.bstrVal;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_id(BSTR v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_id(BSTR __RPC_FAR *p)
{
if (p == NULL)
{
return E_INVALIDARG;
}
if (p == NULL)
{
return E_INVALIDARG;
}
VARIANT vValue;
VariantInit(&vValue);
BSTR bstrName = SysAllocString(OLESTR("id"));
getAttribute(bstrName, FALSE, &vValue);
SysFreeString(bstrName);
VARIANT vValue;
VariantInit(&vValue);
BSTR bstrName = SysAllocString(OLESTR("id"));
getAttribute(bstrName, FALSE, &vValue);
SysFreeString(bstrName);
*p = vValue.bstrVal;
return S_OK;
*p = vValue.bstrVal;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_tagName(BSTR __RPC_FAR *p)
{
if (p == NULL)
{
return E_INVALIDARG;
}
if (p == NULL)
{
return E_INVALIDARG;
}
nsCOMPtr<nsIDOMElement> element;
if (FAILED(GetDOMElement(getter_AddRefs(element))))
{
return E_UNEXPECTED;
}
nsCOMPtr<nsIDOMElement> element;
if (FAILED(GetDOMElement(getter_AddRefs(element))))
{
return E_UNEXPECTED;
}
nsString szTagName;
element->GetTagName(szTagName);
nsString szTagName;
element->GetTagName(szTagName);
USES_CONVERSION;
*p = SysAllocString(W2COLE(szTagName.GetUnicode()));
return S_OK;
USES_CONVERSION;
*p = SysAllocString(W2COLE(szTagName.GetUnicode()));
return S_OK;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_parentElement(IHTMLElement __RPC_FAR *__RPC_FAR *p)
{
if (p == NULL)
{
return E_INVALIDARG;
}
if (p == NULL)
{
return E_INVALIDARG;
}
*p = NULL;
if (m_pIDispParent)
{
m_pIDispParent->QueryInterface(IID_IHTMLElement, (void **) p);
}
*p = NULL;
if (m_pIDispParent)
{
m_pIDispParent->QueryInterface(IID_IHTMLElement, (void **) p);
}
return S_OK;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_style(IHTMLStyle __RPC_FAR *__RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onhelp(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onhelp(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onclick(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onclick(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_ondblclick(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_ondblclick(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onkeydown(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onkeydown(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onkeyup(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onkeyup(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onkeypress(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onkeypress(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onmouseout(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onmouseout(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onmouseover(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onmouseover(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onmousemove(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onmousemove(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onmousedown(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onmousedown(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onmouseup(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onmouseup(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_document(IDispatch __RPC_FAR *__RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_title(BSTR v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_title(BSTR __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_language(BSTR v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_language(BSTR __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onselectstart(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onselectstart(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::scrollIntoView(VARIANT varargStart)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::contains(IHTMLElement __RPC_FAR *pChild, VARIANT_BOOL __RPC_FAR *pfResult)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_sourceIndex(long __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_recordNumber(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_lang(BSTR v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_lang(BSTR __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_offsetLeft(long __RPC_FAR *p)
@ -524,18 +524,18 @@ HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_offsetHeight(long __RPC_FAR *p)
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_offsetParent(IHTMLElement __RPC_FAR *__RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_innerHTML(BSTR v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_innerHTML(BSTR __RPC_FAR *p)
{
nsCOMPtr<nsIDOMElement> element;
if (FAILED(GetDOMElement(getter_AddRefs(element))))
nsCOMPtr<nsIDOMElement> element;
if (FAILED(GetDOMElement(getter_AddRefs(element))))
{
return E_UNEXPECTED;
}
@ -551,7 +551,7 @@ HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_innerHTML(BSTR __RPC_FAR *p)
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_innerText(BSTR v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_innerText(BSTR __RPC_FAR *p)
@ -561,200 +561,200 @@ HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_innerText(BSTR __RPC_FAR *p)
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_outerHTML(BSTR v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_outerHTML(BSTR __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_outerText(BSTR v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_outerText(BSTR __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::insertAdjacentHTML(BSTR where, BSTR html)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::insertAdjacentText(BSTR where, BSTR text)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_parentTextEdit(IHTMLElement __RPC_FAR *__RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_isTextEdit(VARIANT_BOOL __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::click(void)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_filters(IHTMLFiltersCollection __RPC_FAR *__RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_ondragstart(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_ondragstart(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::toString(BSTR __RPC_FAR *String)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onbeforeupdate(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onbeforeupdate(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onafterupdate(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onafterupdate(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onerrorupdate(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onerrorupdate(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onrowexit(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onrowexit(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onrowenter(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onrowenter(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_ondatasetchanged(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_ondatasetchanged(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_ondataavailable(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_ondataavailable(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_ondatasetcomplete(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_ondatasetcomplete(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::put_onfilterchange(VARIANT v)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_onfilterchange(VARIANT __RPC_FAR *p)
{
return E_NOTIMPL;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_children(IDispatch __RPC_FAR *__RPC_FAR *p)
{
// Validate parameters
if (p == NULL)
{
return E_INVALIDARG;
}
// Validate parameters
if (p == NULL)
{
return E_INVALIDARG;
}
*p = NULL;
*p = NULL;
// Create a collection representing the children of this node
CIEHtmlElementCollectionInstance *pCollection = NULL;
HRESULT hr = GetChildren(&pCollection);
if (SUCCEEDED(hr))
{
*p = pCollection;
}
// Create a collection representing the children of this node
CIEHtmlElementCollectionInstance *pCollection = NULL;
HRESULT hr = GetChildren(&pCollection);
if (SUCCEEDED(hr))
{
*p = pCollection;
}
return hr;
return hr;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElement::get_all(IDispatch __RPC_FAR *__RPC_FAR *p)
{
// Validate parameters
if (p == NULL)
{
return E_INVALIDARG;
}
// Validate parameters
if (p == NULL)
{
return E_INVALIDARG;
}
*p = NULL;
*p = NULL;
// TODO get ALL contained elements, not just the immediate children
// TODO get ALL contained elements, not just the immediate children
CIEHtmlElementCollectionInstance *pCollection = NULL;
CIEHtmlElementCollection::CreateFromParentNode(this, TRUE, (CIEHtmlElementCollection **) &pCollection);
if (pCollection)
{
pCollection->AddRef();
*p = pCollection;
}
CIEHtmlElementCollectionInstance *pCollection = NULL;
CIEHtmlElementCollection::CreateFromParentNode(this, TRUE, (CIEHtmlElementCollection **) &pCollection);
if (pCollection)
{
pCollection->AddRef();
*p = pCollection;
}
return S_OK;
return S_OK;
}

View File

@ -28,117 +28,117 @@
#include "IEHtmlNode.h"
#include "IEHtmlElementCollection.h"
class CIEHtmlElement : public CIEHtmlNode,
public IDispatchImpl<IHTMLElement, &IID_IHTMLElement, &LIBID_MSHTML>
class CIEHtmlElement : public CIEHtmlNode,
public IDispatchImpl<IHTMLElement, &IID_IHTMLElement, &LIBID_MSHTML>
{
public:
CIEHtmlElement();
CIEHtmlElement();
protected:
virtual ~CIEHtmlElement();
virtual ~CIEHtmlElement();
public:
BEGIN_COM_MAP(CIEHtmlElement)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IHTMLElement)
COM_INTERFACE_ENTRY_IID(IID_IHTMLElement, IHTMLElement)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IHTMLElement)
COM_INTERFACE_ENTRY_IID(IID_IHTMLElement, IHTMLElement)
END_COM_MAP()
virtual HRESULT GetIDispatch(IDispatch **pDispatch);
virtual HRESULT GetChildren(CIEHtmlElementCollectionInstance **ppCollection);
virtual HRESULT GetIDispatch(IDispatch **pDispatch);
virtual HRESULT GetChildren(CIEHtmlElementCollectionInstance **ppCollection);
// Implementation of IHTMLElement
virtual HRESULT STDMETHODCALLTYPE setAttribute(BSTR strAttributeName, VARIANT AttributeValue, LONG lFlags);
virtual HRESULT STDMETHODCALLTYPE getAttribute(BSTR strAttributeName, LONG lFlags, VARIANT __RPC_FAR *AttributeValue);
virtual HRESULT STDMETHODCALLTYPE removeAttribute(BSTR strAttributeName, LONG lFlags, VARIANT_BOOL __RPC_FAR *pfSuccess);
virtual HRESULT STDMETHODCALLTYPE put_className(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_className(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_id(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_id(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_tagName(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_parentElement(IHTMLElement __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_style(IHTMLStyle __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onhelp(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onhelp(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onclick(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onclick(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondblclick(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondblclick(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeydown(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeydown(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeyup(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeyup(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeypress(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeypress(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseout(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseout(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseover(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseover(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmousemove(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmousemove(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmousedown(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmousedown(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseup(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseup(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_document(IDispatch __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_title(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_title(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_language(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_language(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onselectstart(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onselectstart(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE scrollIntoView(VARIANT varargStart);
virtual HRESULT STDMETHODCALLTYPE contains(IHTMLElement __RPC_FAR *pChild, VARIANT_BOOL __RPC_FAR *pfResult);
virtual HRESULT STDMETHODCALLTYPE get_sourceIndex(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_recordNumber(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_lang(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_lang(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_offsetLeft(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_offsetTop(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_offsetWidth(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_offsetHeight(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_offsetParent(IHTMLElement __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_innerHTML(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_innerHTML(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_innerText(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_innerText(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_outerHTML(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_outerHTML(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_outerText(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_outerText(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE insertAdjacentHTML(BSTR where, BSTR html);
virtual HRESULT STDMETHODCALLTYPE insertAdjacentText(BSTR where, BSTR text);
virtual HRESULT STDMETHODCALLTYPE get_parentTextEdit(IHTMLElement __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_isTextEdit(VARIANT_BOOL __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE click(void);
virtual HRESULT STDMETHODCALLTYPE get_filters(IHTMLFiltersCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondragstart(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondragstart(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE toString(BSTR __RPC_FAR *String);
virtual HRESULT STDMETHODCALLTYPE put_onbeforeupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onbeforeupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onafterupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onafterupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onerrorupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onerrorupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onrowexit(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onrowexit(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onrowenter(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onrowenter(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondatasetchanged(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondatasetchanged(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondataavailable(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondataavailable(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondatasetcomplete(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondatasetcomplete(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onfilterchange(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onfilterchange(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_children(IDispatch __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_all(IDispatch __RPC_FAR *__RPC_FAR *p);
// Implementation of IHTMLElement
virtual HRESULT STDMETHODCALLTYPE setAttribute(BSTR strAttributeName, VARIANT AttributeValue, LONG lFlags);
virtual HRESULT STDMETHODCALLTYPE getAttribute(BSTR strAttributeName, LONG lFlags, VARIANT __RPC_FAR *AttributeValue);
virtual HRESULT STDMETHODCALLTYPE removeAttribute(BSTR strAttributeName, LONG lFlags, VARIANT_BOOL __RPC_FAR *pfSuccess);
virtual HRESULT STDMETHODCALLTYPE put_className(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_className(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_id(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_id(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_tagName(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_parentElement(IHTMLElement __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_style(IHTMLStyle __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onhelp(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onhelp(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onclick(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onclick(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondblclick(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondblclick(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeydown(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeydown(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeyup(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeyup(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onkeypress(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onkeypress(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseout(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseout(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseover(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseover(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmousemove(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmousemove(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmousedown(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmousedown(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onmouseup(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onmouseup(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_document(IDispatch __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_title(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_title(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_language(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_language(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onselectstart(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onselectstart(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE scrollIntoView(VARIANT varargStart);
virtual HRESULT STDMETHODCALLTYPE contains(IHTMLElement __RPC_FAR *pChild, VARIANT_BOOL __RPC_FAR *pfResult);
virtual HRESULT STDMETHODCALLTYPE get_sourceIndex(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_recordNumber(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_lang(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_lang(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_offsetLeft(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_offsetTop(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_offsetWidth(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_offsetHeight(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_offsetParent(IHTMLElement __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_innerHTML(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_innerHTML(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_innerText(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_innerText(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_outerHTML(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_outerHTML(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_outerText(BSTR v);
virtual HRESULT STDMETHODCALLTYPE get_outerText(BSTR __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE insertAdjacentHTML(BSTR where, BSTR html);
virtual HRESULT STDMETHODCALLTYPE insertAdjacentText(BSTR where, BSTR text);
virtual HRESULT STDMETHODCALLTYPE get_parentTextEdit(IHTMLElement __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_isTextEdit(VARIANT_BOOL __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE click(void);
virtual HRESULT STDMETHODCALLTYPE get_filters(IHTMLFiltersCollection __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondragstart(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondragstart(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE toString(BSTR __RPC_FAR *String);
virtual HRESULT STDMETHODCALLTYPE put_onbeforeupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onbeforeupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onafterupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onafterupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onerrorupdate(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onerrorupdate(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onrowexit(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onrowexit(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onrowenter(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onrowenter(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondatasetchanged(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondatasetchanged(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondataavailable(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondataavailable(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_ondatasetcomplete(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_ondatasetcomplete(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE put_onfilterchange(VARIANT v);
virtual HRESULT STDMETHODCALLTYPE get_onfilterchange(VARIANT __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_children(IDispatch __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get_all(IDispatch __RPC_FAR *__RPC_FAR *p);
};
#define CIEHTMLELEMENT_INTERFACES \
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IHTMLElement) \
COM_INTERFACE_ENTRY_IID(IID_IHTMLElement, IHTMLElement)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IHTMLElement) \
COM_INTERFACE_ENTRY_IID(IID_IHTMLElement, IHTMLElement)
typedef CComObject<CIEHtmlElement> CIEHtmlElementInstance;

View File

@ -31,7 +31,7 @@
CIEHtmlElementCollection::CIEHtmlElementCollection()
{
m_pIDispParent = NULL;
m_pIDispParent = NULL;
mNodeList = NULL;
mNodeListCount = 0;
mNodeListCapacity = 0;
@ -59,35 +59,35 @@ CIEHtmlElementCollection::~CIEHtmlElementCollection()
HRESULT CIEHtmlElementCollection::SetParentNode(IDispatch *pIDispParent)
{
m_pIDispParent = pIDispParent;
return S_OK;
m_pIDispParent = pIDispParent;
return S_OK;
}
template <class nodeListType>
HRESULT PopulateFromList(CIEHtmlElementCollection *pCollection, nodeListType *pNodeList, BOOL bRecurseChildren)
{
if (pNodeList == nsnull)
{
return S_OK;
}
if (pNodeList == nsnull)
{
return S_OK;
}
// Recurse through the children of the node (and the children of that)
// to populate the collection
// Recurse through the children of the node (and the children of that)
// to populate the collection
// Iterate through items in list
PRUint32 length = 0;
pNodeList->GetLength(&length);
for (PRUint32 i = 0; i < length; i++)
{
// Get the next item from the list
nsCOMPtr<nsIDOMNode> childNode;
pNodeList->Item(i, getter_AddRefs(childNode));
if (!childNode)
{
// Empty node (unexpected, but try and carry on anyway)
NG_ASSERT(0);
continue;
}
// Iterate through items in list
PRUint32 length = 0;
pNodeList->GetLength(&length);
for (PRUint32 i = 0; i < length; i++)
{
// Get the next item from the list
nsCOMPtr<nsIDOMNode> childNode;
pNodeList->Item(i, getter_AddRefs(childNode));
if (!childNode)
{
// Empty node (unexpected, but try and carry on anyway)
NG_ASSERT(0);
continue;
}
// Skip nodes representing, text, attributes etc.
PRUint16 nodeType;
@ -97,30 +97,30 @@ HRESULT PopulateFromList(CIEHtmlElementCollection *pCollection, nodeListType *pN
continue;
}
// Create an equivalent IE element
// Create an equivalent IE element
CIEHtmlNode *pHtmlNode = NULL;
CIEHtmlElementInstance *pHtmlElement = NULL;
CIEHtmlElementInstance::FindFromDOMNode(childNode, &pHtmlNode);
if (!pHtmlNode)
{
CIEHtmlElementInstance::CreateInstance(&pHtmlElement);
pHtmlElement->SetDOMNode(childNode);
pHtmlElement->SetParentNode(pCollection->m_pIDispParent);
CIEHtmlElementInstance::CreateInstance(&pHtmlElement);
pHtmlElement->SetDOMNode(childNode);
pHtmlElement->SetParentNode(pCollection->m_pIDispParent);
}
else
{
pHtmlElement = (CIEHtmlElementInstance *) pHtmlNode;
}
if (pHtmlElement)
{
pCollection->AddNode(pHtmlElement);
}
if (pHtmlElement)
{
pCollection->AddNode(pHtmlElement);
}
if (bRecurseChildren)
{
// Test if the node has children and recursively add them too
nsCOMPtr<nsIDOMNodeList> childNodeList;
childNode->GetChildNodes(getter_AddRefs(childNodeList));
if (bRecurseChildren)
{
// Test if the node has children and recursively add them too
nsCOMPtr<nsIDOMNodeList> childNodeList;
childNode->GetChildNodes(getter_AddRefs(childNodeList));
PRUint32 childListLength = 0;
if (childNodeList)
{
@ -130,8 +130,8 @@ HRESULT PopulateFromList(CIEHtmlElementCollection *pCollection, nodeListType *pN
{
PopulateFromList<nsIDOMNodeList>(pCollection, childNodeList, bRecurseChildren);
}
}
}
}
}
return S_OK;
}
@ -151,19 +151,19 @@ HRESULT CIEHtmlElementCollection::PopulateFromDOMHTMLCollection(nsIDOMHTMLCollec
HRESULT CIEHtmlElementCollection::PopulateFromDOMNode(nsIDOMNode *pIDOMNode, BOOL bRecurseChildren)
{
if (pIDOMNode == nsnull)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
if (pIDOMNode == nsnull)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
// Get elements from the DOM node
nsCOMPtr<nsIDOMNodeList> nodeList;
pIDOMNode->GetChildNodes(getter_AddRefs(nodeList));
if (!nodeList)
{
return S_OK;
}
// Get elements from the DOM node
nsCOMPtr<nsIDOMNodeList> nodeList;
pIDOMNode->GetChildNodes(getter_AddRefs(nodeList));
if (!nodeList)
{
return S_OK;
}
return PopulateFromDOMNodeList(nodeList, bRecurseChildren);
}
@ -171,130 +171,130 @@ HRESULT CIEHtmlElementCollection::PopulateFromDOMNode(nsIDOMNode *pIDOMNode, BOO
HRESULT CIEHtmlElementCollection::CreateFromDOMHTMLCollection(CIEHtmlNode *pParentNode, nsIDOMHTMLCollection *pNodeList, CIEHtmlElementCollection **pInstance)
{
if (pInstance == NULL || pParentNode == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
if (pInstance == NULL || pParentNode == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
// Get the DOM node from the parent node
nsCOMPtr<nsIDOMNode> domNode;
pParentNode->GetDOMNode(getter_AddRefs(domNode));
if (!domNode)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
// Get the DOM node from the parent node
nsCOMPtr<nsIDOMNode> domNode;
pParentNode->GetDOMNode(getter_AddRefs(domNode));
if (!domNode)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
*pInstance = NULL;
*pInstance = NULL;
// Create a collection object
CIEHtmlElementCollectionInstance *pCollection = NULL;
CIEHtmlElementCollectionInstance::CreateInstance(&pCollection);
if (pCollection == NULL)
{
NG_ASSERT(0);
return E_OUTOFMEMORY;
}
// Create a collection object
CIEHtmlElementCollectionInstance *pCollection = NULL;
CIEHtmlElementCollectionInstance::CreateInstance(&pCollection);
if (pCollection == NULL)
{
NG_ASSERT(0);
return E_OUTOFMEMORY;
}
// Initialise and populate the collection
CIPtr(IDispatch) cpDispNode;
pParentNode->GetIDispatch(&cpDispNode);
pCollection->SetParentNode(cpDispNode);
pCollection->PopulateFromDOMHTMLCollection(pNodeList, FALSE);
// Initialise and populate the collection
CIPtr(IDispatch) cpDispNode;
pParentNode->GetIDispatch(&cpDispNode);
pCollection->SetParentNode(cpDispNode);
pCollection->PopulateFromDOMHTMLCollection(pNodeList, FALSE);
*pInstance = pCollection;
*pInstance = pCollection;
return S_OK;
return S_OK;
}
HRESULT CIEHtmlElementCollection::CreateFromDOMNodeList(CIEHtmlNode *pParentNode, nsIDOMNodeList *pNodeList, CIEHtmlElementCollection **pInstance)
{
if (pInstance == NULL || pParentNode == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
if (pInstance == NULL || pParentNode == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
// Get the DOM node from the parent node
nsCOMPtr<nsIDOMNode> domNode;
pParentNode->GetDOMNode(getter_AddRefs(domNode));
if (!domNode)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
// Get the DOM node from the parent node
nsCOMPtr<nsIDOMNode> domNode;
pParentNode->GetDOMNode(getter_AddRefs(domNode));
if (!domNode)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
*pInstance = NULL;
*pInstance = NULL;
// Create a collection object
CIEHtmlElementCollectionInstance *pCollection = NULL;
CIEHtmlElementCollectionInstance::CreateInstance(&pCollection);
if (pCollection == NULL)
{
NG_ASSERT(0);
return E_OUTOFMEMORY;
}
// Create a collection object
CIEHtmlElementCollectionInstance *pCollection = NULL;
CIEHtmlElementCollectionInstance::CreateInstance(&pCollection);
if (pCollection == NULL)
{
NG_ASSERT(0);
return E_OUTOFMEMORY;
}
// Initialise and populate the collection
CIPtr(IDispatch) cpDispNode;
pParentNode->GetIDispatch(&cpDispNode);
pCollection->SetParentNode(cpDispNode);
pCollection->PopulateFromDOMNodeList(pNodeList, FALSE);
// Initialise and populate the collection
CIPtr(IDispatch) cpDispNode;
pParentNode->GetIDispatch(&cpDispNode);
pCollection->SetParentNode(cpDispNode);
pCollection->PopulateFromDOMNodeList(pNodeList, FALSE);
*pInstance = pCollection;
*pInstance = pCollection;
return S_OK;
return S_OK;
}
HRESULT CIEHtmlElementCollection::CreateFromParentNode(CIEHtmlNode *pParentNode, BOOL bRecurseChildren, CIEHtmlElementCollection **pInstance)
{
if (pInstance == NULL || pParentNode == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
if (pInstance == NULL || pParentNode == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
// Get the DOM node from the parent node
nsCOMPtr<nsIDOMNode> domNode;
pParentNode->GetDOMNode(getter_AddRefs(domNode));
if (!domNode)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
// Get the DOM node from the parent node
nsCOMPtr<nsIDOMNode> domNode;
pParentNode->GetDOMNode(getter_AddRefs(domNode));
if (!domNode)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
*pInstance = NULL;
*pInstance = NULL;
// Create a collection object
CIEHtmlElementCollectionInstance *pCollection = NULL;
CIEHtmlElementCollectionInstance::CreateInstance(&pCollection);
if (pCollection == NULL)
{
NG_ASSERT(0);
return E_OUTOFMEMORY;
}
// Create a collection object
CIEHtmlElementCollectionInstance *pCollection = NULL;
CIEHtmlElementCollectionInstance::CreateInstance(&pCollection);
if (pCollection == NULL)
{
NG_ASSERT(0);
return E_OUTOFMEMORY;
}
// Initialise and populate the collection
CIPtr(IDispatch) cpDispNode;
pParentNode->GetIDispatch(&cpDispNode);
pCollection->SetParentNode(cpDispNode);
pCollection->PopulateFromDOMNode(domNode, bRecurseChildren);
// Initialise and populate the collection
CIPtr(IDispatch) cpDispNode;
pParentNode->GetIDispatch(&cpDispNode);
pCollection->SetParentNode(cpDispNode);
pCollection->PopulateFromDOMNode(domNode, bRecurseChildren);
*pInstance = pCollection;
*pInstance = pCollection;
return S_OK;
return S_OK;
}
HRESULT CIEHtmlElementCollection::AddNode(IDispatch *pNode)
{
if (pNode == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
if (pNode == NULL)
{
NG_ASSERT(0);
return E_INVALIDARG;
}
const PRUint32 c_NodeListResizeBy = 10;
@ -312,14 +312,14 @@ HRESULT CIEHtmlElementCollection::AddNode(IDispatch *pNode)
if (mNodeList == NULL)
{
NG_ASSERT(0);
NG_ASSERT(0);
return E_OUTOFMEMORY;
}
pNode->AddRef();
mNodeList[mNodeListCount++] = pNode;
return S_OK;
return S_OK;
}
@ -329,152 +329,152 @@ HRESULT CIEHtmlElementCollection::AddNode(IDispatch *pNode)
HRESULT STDMETHODCALLTYPE CIEHtmlElementCollection::toString(BSTR __RPC_FAR *String)
{
if (String == NULL)
{
return E_INVALIDARG;
}
*String = SysAllocString(OLESTR("ElementCollection"));
return S_OK;
if (String == NULL)
{
return E_INVALIDARG;
}
*String = SysAllocString(OLESTR("ElementCollection"));
return S_OK;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElementCollection::put_length(long v)
{
// What is the point of this method?
return S_OK;
// What is the point of this method?
return S_OK;
}
HRESULT STDMETHODCALLTYPE CIEHtmlElementCollection::get_length(long __RPC_FAR *p)
{
if (p == NULL)
{
return E_INVALIDARG;
}
// Return the size of the collection
*p = mNodeListCount;
return S_OK;
if (p == NULL)
{
return E_INVALIDARG;
}
// Return the size of the collection
*p = mNodeListCount;
return S_OK;
}
typedef CComObject<CComEnum<IEnumVARIANT, &IID_IEnumVARIANT, VARIANT, _Copy<VARIANT> > > CComEnumVARIANT;
HRESULT STDMETHODCALLTYPE CIEHtmlElementCollection::get__newEnum(IUnknown __RPC_FAR *__RPC_FAR *p)
{
if (p == NULL)
{
return E_INVALIDARG;
}
if (p == NULL)
{
return E_INVALIDARG;
}
*p = NULL;
*p = NULL;
// Create a new IEnumVARIANT object
CComEnumVARIANT *pEnumVARIANT = NULL;
CComEnumVARIANT::CreateInstance(&pEnumVARIANT);
if (pEnumVARIANT == NULL)
{
NG_ASSERT(0);
return E_OUTOFMEMORY;
}
// Create a new IEnumVARIANT object
CComEnumVARIANT *pEnumVARIANT = NULL;
CComEnumVARIANT::CreateInstance(&pEnumVARIANT);
if (pEnumVARIANT == NULL)
{
NG_ASSERT(0);
return E_OUTOFMEMORY;
}
int nObject;
int nObjects = mNodeListCount;
int nObject;
int nObjects = mNodeListCount;
// Create an array of VARIANTs
VARIANT *avObjects = new VARIANT[nObjects];
if (avObjects == NULL)
{
NG_ASSERT(0);
return E_OUTOFMEMORY;
}
// Create an array of VARIANTs
VARIANT *avObjects = new VARIANT[nObjects];
if (avObjects == NULL)
{
NG_ASSERT(0);
return E_OUTOFMEMORY;
}
// Copy the contents of the collection to the array
for (nObject = 0; nObject < nObjects; nObject++)
{
VARIANT *pVariant = &avObjects[nObject];
IUnknown *pUnkObject = mNodeList[nObject];
VariantInit(pVariant);
pVariant->vt = VT_UNKNOWN;
pVariant->punkVal = pUnkObject;
pUnkObject->AddRef();
}
// Copy the contents of the collection to the array
for (nObject = 0; nObject < nObjects; nObject++)
{
VARIANT *pVariant = &avObjects[nObject];
IUnknown *pUnkObject = mNodeList[nObject];
VariantInit(pVariant);
pVariant->vt = VT_UNKNOWN;
pVariant->punkVal = pUnkObject;
pUnkObject->AddRef();
}
// Copy the variants to the enumeration object
pEnumVARIANT->Init(&avObjects[0], &avObjects[nObjects], NULL, AtlFlagCopy);
// Copy the variants to the enumeration object
pEnumVARIANT->Init(&avObjects[0], &avObjects[nObjects], NULL, AtlFlagCopy);
// Cleanup the array
for (nObject = 0; nObject < nObjects; nObject++)
{
VARIANT *pVariant = &avObjects[nObject];
VariantClear(pVariant);
}
delete []avObjects;
// Cleanup the array
for (nObject = 0; nObject < nObjects; nObject++)
{
VARIANT *pVariant = &avObjects[nObject];
VariantClear(pVariant);
}
delete []avObjects;
return pEnumVARIANT->QueryInterface(IID_IUnknown, (void**) p);
return pEnumVARIANT->QueryInterface(IID_IUnknown, (void**) p);
}
HRESULT STDMETHODCALLTYPE CIEHtmlElementCollection::item(VARIANT name, VARIANT index, IDispatch __RPC_FAR *__RPC_FAR *pdisp)
{
if (pdisp == NULL)
{
return E_INVALIDARG;
}
*pdisp = NULL;
if (pdisp == NULL)
{
return E_INVALIDARG;
}
*pdisp = NULL;
// Note: parameter "name" contains the index unless its a string
// in which case index does. Sensible huh?
// Note: parameter "name" contains the index unless its a string
// in which case index does. Sensible huh?
CComVariant vIndex;
if (SUCCEEDED(vIndex.ChangeType(VT_I4, &name)) ||
SUCCEEDED(vIndex.ChangeType(VT_I4, &index)))
{
// Test for stupid values
int nIndex = vIndex.lVal;
if (nIndex < 0 || nIndex >= mNodeListCount)
{
return E_INVALIDARG;
}
*pdisp = NULL;
IDispatch *pNode = mNodeList[nIndex];
if (pNode == NULL)
{
NG_ASSERT(0);
return E_UNEXPECTED;
}
CComVariant vIndex;
if (SUCCEEDED(vIndex.ChangeType(VT_I4, &name)) ||
SUCCEEDED(vIndex.ChangeType(VT_I4, &index)))
{
// Test for stupid values
int nIndex = vIndex.lVal;
if (nIndex < 0 || nIndex >= mNodeListCount)
{
return E_INVALIDARG;
}
*pdisp = NULL;
IDispatch *pNode = mNodeList[nIndex];
if (pNode == NULL)
{
NG_ASSERT(0);
return E_UNEXPECTED;
}
pNode->QueryInterface(IID_IDispatch, (void **) pdisp);
return S_OK;
}
else if (SUCCEEDED(vIndex.ChangeType(VT_BSTR, &index)))
{
// If this parameter contains a string, the method returns
// a collection of objects, where the value of the name or
// id property for each object is equal to the string.
pNode->QueryInterface(IID_IDispatch, (void **) pdisp);
return S_OK;
}
else if (SUCCEEDED(vIndex.ChangeType(VT_BSTR, &index)))
{
// If this parameter contains a string, the method returns
// a collection of objects, where the value of the name or
// id property for each object is equal to the string.
// TODO all of the above!
return E_NOTIMPL;
}
else
{
return E_INVALIDARG;
}
// TODO all of the above!
return E_NOTIMPL;
}
else
{
return E_INVALIDARG;
}
}
HRESULT STDMETHODCALLTYPE CIEHtmlElementCollection::tags(VARIANT tagName, IDispatch __RPC_FAR *__RPC_FAR *pdisp)
{
if (pdisp == NULL)
{
return E_INVALIDARG;
}
*pdisp = NULL;
if (pdisp == NULL)
{
return E_INVALIDARG;
}
*pdisp = NULL;
// TODO
// iterate through collection looking for elements with matching tags
return E_NOTIMPL;
// TODO
// iterate through collection looking for elements with matching tags
return E_NOTIMPL;
}

View File

@ -33,7 +33,7 @@
class CIEHtmlElement;
class CIEHtmlElementCollection : public CComObjectRootEx<CComSingleThreadModel>,
public IDispatchImpl<IHTMLElementCollection, &IID_IHTMLElementCollection, &LIBID_MSHTML>
public IDispatchImpl<IHTMLElementCollection, &IID_IHTMLElementCollection, &LIBID_MSHTML>
{
private:
IDispatch **mNodeList;
@ -41,20 +41,20 @@ private:
PRUint32 mNodeListCapacity;
public:
CIEHtmlElementCollection();
CIEHtmlElementCollection();
protected:
virtual ~CIEHtmlElementCollection();
virtual ~CIEHtmlElementCollection();
public:
// Pointer to parent node/document
IDispatch *m_pIDispParent;
// Pointer to parent node/document
IDispatch *m_pIDispParent;
// Adds a node to the collection
virtual HRESULT AddNode(IDispatch *pNode);
// Adds a node to the collection
virtual HRESULT AddNode(IDispatch *pNode);
// Sets the parent node of this collection
virtual HRESULT SetParentNode(IDispatch *pIDispParent);
// Sets the parent node of this collection
virtual HRESULT SetParentNode(IDispatch *pIDispParent);
// Populates the collection from a DOM HTML collection
virtual HRESULT PopulateFromDOMHTMLCollection(nsIDOMHTMLCollection *pNodeList, BOOL bRecurseChildren);
@ -62,11 +62,11 @@ public:
// Populates the collection from a DOM node list
virtual HRESULT PopulateFromDOMNodeList(nsIDOMNodeList *pNodeList, BOOL bRecurseChildren);
// Populates the collection with items from the DOM node
virtual HRESULT PopulateFromDOMNode(nsIDOMNode *pIDOMNode, BOOL bRecurseChildren);
// Populates the collection with items from the DOM node
virtual HRESULT PopulateFromDOMNode(nsIDOMNode *pIDOMNode, BOOL bRecurseChildren);
// Helper method creates a collection from a parent node
static HRESULT CreateFromParentNode(CIEHtmlNode *pParentNode, BOOL bRecurseChildren, CIEHtmlElementCollection **pInstance);
// Helper method creates a collection from a parent node
static HRESULT CreateFromParentNode(CIEHtmlNode *pParentNode, BOOL bRecurseChildren, CIEHtmlElementCollection **pInstance);
// Helper method creates a collection from the specified node list
static HRESULT CreateFromDOMNodeList(CIEHtmlNode *pParentNode, nsIDOMNodeList *pNodeList, CIEHtmlElementCollection **pInstance);
@ -76,17 +76,17 @@ public:
BEGIN_COM_MAP(CIEHtmlElementCollection)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IHTMLElementCollection)
COM_INTERFACE_ENTRY_IID(IID_IHTMLElementCollection, IHTMLElementCollection)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IHTMLElementCollection)
COM_INTERFACE_ENTRY_IID(IID_IHTMLElementCollection, IHTMLElementCollection)
END_COM_MAP()
// IHTMLElementCollection methods
virtual HRESULT STDMETHODCALLTYPE toString(BSTR __RPC_FAR *String);
virtual HRESULT STDMETHODCALLTYPE put_length(long v);
virtual HRESULT STDMETHODCALLTYPE get_length(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get__newEnum(IUnknown __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE item(VARIANT name, VARIANT index, IDispatch __RPC_FAR *__RPC_FAR *pdisp);
virtual HRESULT STDMETHODCALLTYPE tags(VARIANT tagName, IDispatch __RPC_FAR *__RPC_FAR *pdisp);
// IHTMLElementCollection methods
virtual HRESULT STDMETHODCALLTYPE toString(BSTR __RPC_FAR *String);
virtual HRESULT STDMETHODCALLTYPE put_length(long v);
virtual HRESULT STDMETHODCALLTYPE get_length(long __RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE get__newEnum(IUnknown __RPC_FAR *__RPC_FAR *p);
virtual HRESULT STDMETHODCALLTYPE item(VARIANT name, VARIANT index, IDispatch __RPC_FAR *__RPC_FAR *pdisp);
virtual HRESULT STDMETHODCALLTYPE tags(VARIANT tagName, IDispatch __RPC_FAR *__RPC_FAR *pdisp);
};
typedef CComObject<CIEHtmlElementCollection> CIEHtmlElementCollectionInstance;

View File

@ -46,20 +46,20 @@ PRIntn PR_CALLBACK HashComparator(const void *v1, const void *v2)
CIEHtmlNode::CIEHtmlNode()
{
m_pIDOMNode = nsnull;
m_pIDispParent = NULL;
m_pIDOMNode = nsnull;
m_pIDispParent = NULL;
}
CIEHtmlNode::~CIEHtmlNode()
{
SetDOMNode(nsnull);
SetDOMNode(nsnull);
}
HRESULT CIEHtmlNode::SetParentNode(IDispatch *pIDispParent)
{
m_pIDispParent = pIDispParent;
return S_OK;
m_pIDispParent = pIDispParent;
return S_OK;
}
@ -89,10 +89,10 @@ HRESULT CIEHtmlNode::FindFromDOMNode(nsIDOMNode *pIDOMNode, CIEHtmlNode **pHtmlN
HRESULT CIEHtmlNode::SetDOMNode(nsIDOMNode *pIDOMNode)
{
if (pIDOMNode)
{
if (pIDOMNode)
{
NS_IF_RELEASE(m_pIDOMNode);
m_pIDOMNode = pIDOMNode;
m_pIDOMNode = pIDOMNode;
NS_ADDREF(m_pIDOMNode);
if (g_NodeLookupTable == NULL)
@ -104,7 +104,7 @@ HRESULT CIEHtmlNode::SetDOMNode(nsIDOMNode *pIDOMNode)
m_pIDOMNode->QueryInterface(NS_GET_IID(nsISupports), (void **) &pISupports);
PL_HashTableAdd(g_NodeLookupTable, m_pIDOMNode, this);
NS_RELEASE(pISupports);
}
}
else if (m_pIDOMNode)
{
// Remove the entry from the hashtable
@ -121,50 +121,50 @@ HRESULT CIEHtmlNode::SetDOMNode(nsIDOMNode *pIDOMNode)
NS_RELEASE(m_pIDOMNode);
}
return S_OK;
return S_OK;
}
HRESULT CIEHtmlNode::GetDOMNode(nsIDOMNode **pIDOMNode)
{
if (pIDOMNode == NULL)
{
return E_INVALIDARG;
}
if (pIDOMNode == NULL)
{
return E_INVALIDARG;
}
*pIDOMNode = nsnull;
if (m_pIDOMNode)
{
*pIDOMNode = nsnull;
if (m_pIDOMNode)
{
NS_ADDREF(m_pIDOMNode);
*pIDOMNode = m_pIDOMNode;
}
*pIDOMNode = m_pIDOMNode;
}
return S_OK;
return S_OK;
}
HRESULT CIEHtmlNode::GetDOMElement(nsIDOMElement **pIDOMElement)
{
if (pIDOMElement == NULL)
{
return E_INVALIDARG;
}
if (pIDOMElement == NULL)
{
return E_INVALIDARG;
}
if (m_pIDOMNode == nsnull)
{
return E_NOINTERFACE;
}
if (m_pIDOMNode == nsnull)
{
return E_NOINTERFACE;
}
*pIDOMElement = nsnull;
m_pIDOMNode->QueryInterface(NS_GET_IID(nsIDOMElement), (void **) pIDOMElement);
return (*pIDOMElement) ? S_OK : E_NOINTERFACE;
*pIDOMElement = nsnull;
m_pIDOMNode->QueryInterface(NS_GET_IID(nsIDOMElement), (void **) pIDOMElement);
return (*pIDOMElement) ? S_OK : E_NOINTERFACE;
}
HRESULT CIEHtmlNode::GetIDispatch(IDispatch **pDispatch)
{
if (pDispatch == NULL)
{
return E_INVALIDARG;
}
*pDispatch = NULL;
return E_NOINTERFACE;
if (pDispatch == NULL)
{
return E_INVALIDARG;
}
*pDispatch = NULL;
return E_NOINTERFACE;
}

View File

@ -25,25 +25,25 @@
#ifndef IEHTMLNODE_H
#define IEHTMLNODE_H
class CIEHtmlNode : public CComObjectRootEx<CComSingleThreadModel>
class CIEHtmlNode : public CComObjectRootEx<CComSingleThreadModel>
{
protected:
nsIDOMNode *m_pIDOMNode;
IDispatch *m_pIDispParent;
nsIDOMNode *m_pIDOMNode;
IDispatch *m_pIDispParent;
public:
CIEHtmlNode();
CIEHtmlNode();
protected:
virtual ~CIEHtmlNode();
virtual ~CIEHtmlNode();
public:
static HRESULT FindFromDOMNode(nsIDOMNode *pIDOMNode, CIEHtmlNode **pHtmlNode);
virtual HRESULT SetDOMNode(nsIDOMNode *pIDOMNode);
virtual HRESULT GetDOMNode(nsIDOMNode **pIDOMNode);
virtual HRESULT GetDOMElement(nsIDOMElement **pIDOMElement);
virtual HRESULT SetParentNode(IDispatch *pIDispParent);
virtual HRESULT GetIDispatch(IDispatch **pDispatch);
virtual HRESULT GetDOMNode(nsIDOMNode **pIDOMNode);
virtual HRESULT GetDOMElement(nsIDOMElement **pIDOMElement);
virtual HRESULT SetParentNode(IDispatch *pIDispParent);
virtual HRESULT GetIDispatch(IDispatch **pDispatch);
};
typedef CComObject<CIEHtmlNode> CIEHtmlNodeInstance;

View File

@ -73,204 +73,204 @@
template< class T >
class IOleCommandTargetImpl : public IOleCommandTarget
{
struct OleExecData
{
const GUID *pguidCmdGroup;
DWORD nCmdID;
DWORD nCmdexecopt;
VARIANT *pvaIn;
VARIANT *pvaOut;
};
struct OleExecData
{
const GUID *pguidCmdGroup;
DWORD nCmdID;
DWORD nCmdexecopt;
VARIANT *pvaIn;
VARIANT *pvaOut;
};
public:
typedef HRESULT (_stdcall *OleCommandProc)(T *pT, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
typedef HRESULT (_stdcall *OleCommandProc)(T *pT, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
struct OleCommandInfo
{
ULONG nCmdID;
const GUID *pCmdGUID;
ULONG nWindowsCmdID;
OleCommandProc pfnCommandProc;
wchar_t *szVerbText;
wchar_t *szStatusText;
};
struct OleCommandInfo
{
ULONG nCmdID;
const GUID *pCmdGUID;
ULONG nWindowsCmdID;
OleCommandProc pfnCommandProc;
wchar_t *szVerbText;
wchar_t *szStatusText;
};
// Query the status of the specified commands (test if is it supported etc.)
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID __RPC_FAR *pguidCmdGroup, ULONG cCmds, OLECMD __RPC_FAR prgCmds[], OLECMDTEXT __RPC_FAR *pCmdText)
{
T* pT = static_cast<T*>(this);
if (prgCmds == NULL)
{
return E_INVALIDARG;
}
// Query the status of the specified commands (test if is it supported etc.)
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID __RPC_FAR *pguidCmdGroup, ULONG cCmds, OLECMD __RPC_FAR prgCmds[], OLECMDTEXT __RPC_FAR *pCmdText)
{
T* pT = static_cast<T*>(this);
if (prgCmds == NULL)
{
return E_INVALIDARG;
}
OleCommandInfo *pCommands = pT->GetCommandTable();
NG_ASSERT(pCommands);
OleCommandInfo *pCommands = pT->GetCommandTable();
NG_ASSERT(pCommands);
BOOL bCmdGroupFound = FALSE;
BOOL bTextSet = FALSE;
BOOL bCmdGroupFound = FALSE;
BOOL bTextSet = FALSE;
// Iterate through list of commands and flag them as supported/unsupported
for (ULONG nCmd = 0; nCmd < cCmds; nCmd++)
{
// Unsupported by default
prgCmds[nCmd].cmdf = 0;
// Iterate through list of commands and flag them as supported/unsupported
for (ULONG nCmd = 0; nCmd < cCmds; nCmd++)
{
// Unsupported by default
prgCmds[nCmd].cmdf = 0;
// Search the support command list
for (int nSupported = 0; pCommands[nSupported].pCmdGUID != &GUID_NULL; nSupported++)
{
OleCommandInfo *pCI = &pCommands[nSupported];
// Search the support command list
for (int nSupported = 0; pCommands[nSupported].pCmdGUID != &GUID_NULL; nSupported++)
{
OleCommandInfo *pCI = &pCommands[nSupported];
if (pguidCmdGroup && pCI->pCmdGUID && memcmp(pguidCmdGroup, pCI->pCmdGUID, sizeof(GUID)) == 0)
{
continue;
}
bCmdGroupFound = TRUE;
if (pguidCmdGroup && pCI->pCmdGUID && memcmp(pguidCmdGroup, pCI->pCmdGUID, sizeof(GUID)) == 0)
{
continue;
}
bCmdGroupFound = TRUE;
if (pCI->nCmdID != prgCmds[nCmd].cmdID)
{
continue;
}
if (pCI->nCmdID != prgCmds[nCmd].cmdID)
{
continue;
}
// Command is supported so flag it and possibly enable it
prgCmds[nCmd].cmdf = OLECMDF_SUPPORTED;
if (pCI->nWindowsCmdID != 0)
{
prgCmds[nCmd].cmdf |= OLECMDF_ENABLED;
}
// Command is supported so flag it and possibly enable it
prgCmds[nCmd].cmdf = OLECMDF_SUPPORTED;
if (pCI->nWindowsCmdID != 0)
{
prgCmds[nCmd].cmdf |= OLECMDF_ENABLED;
}
// Copy the status/verb text for the first supported command only
if (!bTextSet && pCmdText)
{
// See what text the caller wants
wchar_t *pszTextToCopy = NULL;
if (pCmdText->cmdtextf & OLECMDTEXTF_NAME)
{
pszTextToCopy = pCI->szVerbText;
}
else if (pCmdText->cmdtextf & OLECMDTEXTF_STATUS)
{
pszTextToCopy = pCI->szStatusText;
}
// Copy the text
pCmdText->cwActual = 0;
memset(pCmdText->rgwz, 0, pCmdText->cwBuf * sizeof(wchar_t));
if (pszTextToCopy)
{
// Don't exceed the provided buffer size
int nTextLen = wcslen(pszTextToCopy);
if (nTextLen > pCmdText->cwBuf)
{
nTextLen = pCmdText->cwBuf;
}
// Copy the status/verb text for the first supported command only
if (!bTextSet && pCmdText)
{
// See what text the caller wants
wchar_t *pszTextToCopy = NULL;
if (pCmdText->cmdtextf & OLECMDTEXTF_NAME)
{
pszTextToCopy = pCI->szVerbText;
}
else if (pCmdText->cmdtextf & OLECMDTEXTF_STATUS)
{
pszTextToCopy = pCI->szStatusText;
}
// Copy the text
pCmdText->cwActual = 0;
memset(pCmdText->rgwz, 0, pCmdText->cwBuf * sizeof(wchar_t));
if (pszTextToCopy)
{
// Don't exceed the provided buffer size
int nTextLen = wcslen(pszTextToCopy);
if (nTextLen > pCmdText->cwBuf)
{
nTextLen = pCmdText->cwBuf;
}
wcsncpy(pCmdText->rgwz, pszTextToCopy, nTextLen);
pCmdText->cwActual = nTextLen;
}
bTextSet = TRUE;
}
break;
}
}
// Was the command group found?
if (!bCmdGroupFound)
{
OLECMDERR_E_UNKNOWNGROUP;
}
wcsncpy(pCmdText->rgwz, pszTextToCopy, nTextLen);
pCmdText->cwActual = nTextLen;
}
bTextSet = TRUE;
}
break;
}
}
// Was the command group found?
if (!bCmdGroupFound)
{
OLECMDERR_E_UNKNOWNGROUP;
}
return S_OK;
}
return S_OK;
}
// Execute the specified command
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID __RPC_FAR *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT __RPC_FAR *pvaIn, VARIANT __RPC_FAR *pvaOut)
{
T* pT = static_cast<T*>(this);
BOOL bCmdGroupFound = FALSE;
// Execute the specified command
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID __RPC_FAR *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT __RPC_FAR *pvaIn, VARIANT __RPC_FAR *pvaOut)
{
T* pT = static_cast<T*>(this);
BOOL bCmdGroupFound = FALSE;
OleCommandInfo *pCommands = pT->GetCommandTable();
NG_ASSERT(pCommands);
OleCommandInfo *pCommands = pT->GetCommandTable();
NG_ASSERT(pCommands);
// Search the support command list
for (int nSupported = 0; pCommands[nSupported].pCmdGUID != &GUID_NULL; nSupported++)
{
OleCommandInfo *pCI = &pCommands[nSupported];
// Search the support command list
for (int nSupported = 0; pCommands[nSupported].pCmdGUID != &GUID_NULL; nSupported++)
{
OleCommandInfo *pCI = &pCommands[nSupported];
if (pguidCmdGroup && pCI->pCmdGUID && memcmp(pguidCmdGroup, pCI->pCmdGUID, sizeof(GUID)) == 0)
{
continue;
}
bCmdGroupFound = TRUE;
if (pguidCmdGroup && pCI->pCmdGUID && memcmp(pguidCmdGroup, pCI->pCmdGUID, sizeof(GUID)) == 0)
{
continue;
}
bCmdGroupFound = TRUE;
if (pCI->nCmdID != nCmdID)
{
continue;
}
if (pCI->nCmdID != nCmdID)
{
continue;
}
// Send ourselves a WM_COMMAND windows message with the associated
// identifier and exec data
OleExecData cData;
cData.pguidCmdGroup = pguidCmdGroup;
cData.nCmdID = nCmdID;
cData.nCmdexecopt = nCmdexecopt;
cData.pvaIn = pvaIn;
cData.pvaOut = pvaOut;
// Send ourselves a WM_COMMAND windows message with the associated
// identifier and exec data
OleExecData cData;
cData.pguidCmdGroup = pguidCmdGroup;
cData.nCmdID = nCmdID;
cData.nCmdexecopt = nCmdexecopt;
cData.pvaIn = pvaIn;
cData.pvaOut = pvaOut;
if (pCI->pfnCommandProc)
{
pCI->pfnCommandProc(pT, pCI->pCmdGUID, pCI->nCmdID, nCmdexecopt, pvaIn, pvaOut);
}
else if (pCI->nWindowsCmdID != 0 &&
if (pCI->pfnCommandProc)
{
pCI->pfnCommandProc(pT, pCI->pCmdGUID, pCI->nCmdID, nCmdexecopt, pvaIn, pvaOut);
}
else if (pCI->nWindowsCmdID != 0 &&
!(nCmdexecopt & OLECMDEXECOPT_SHOWHELP))
{
HWND hwndTarget = pT->GetCommandTargetWindow();
if (hwndTarget)
{
::SendMessage(hwndTarget, WM_COMMAND, LOWORD(pCI->nWindowsCmdID), (LPARAM) &cData);
}
}
else
{
// Command supported but not implemented
continue;
}
{
HWND hwndTarget = pT->GetCommandTargetWindow();
if (hwndTarget)
{
::SendMessage(hwndTarget, WM_COMMAND, LOWORD(pCI->nWindowsCmdID), (LPARAM) &cData);
}
}
else
{
// Command supported but not implemented
continue;
}
return S_OK;
}
return S_OK;
}
// Was the command group found?
if (!bCmdGroupFound)
{
OLECMDERR_E_UNKNOWNGROUP;
}
// Was the command group found?
if (!bCmdGroupFound)
{
OLECMDERR_E_UNKNOWNGROUP;
}
return OLECMDERR_E_NOTSUPPORTED;
}
return OLECMDERR_E_NOTSUPPORTED;
}
};
// Macros to be placed in any class derived from the IOleCommandTargetImpl
// class. These define what commands are exposed from the object.
#define BEGIN_OLECOMMAND_TABLE() \
OleCommandInfo *GetCommandTable() \
{ \
static OleCommandInfo s_aSupportedCommands[] = \
{
OleCommandInfo *GetCommandTable() \
{ \
static OleCommandInfo s_aSupportedCommands[] = \
{
#define OLECOMMAND_MESSAGE(id, group, cmd, verb, desc) \
{ id, group, cmd, NULL, verb, desc },
{ id, group, cmd, NULL, verb, desc },
#define OLECOMMAND_HANDLER(id, group, handler, verb, desc) \
{ id, group, 0, handler, verb, desc },
{ id, group, 0, handler, verb, desc },
#define END_OLECOMMAND_TABLE() \
{ 0, &GUID_NULL, 0, NULL, NULL, NULL } \
}; \
return s_aSupportedCommands; \
};
{ 0, &GUID_NULL, 0, NULL, NULL, NULL } \
}; \
return s_aSupportedCommands; \
};
#endif

View File

@ -39,8 +39,8 @@ CItemContainer::~CItemContainer()
HRESULT STDMETHODCALLTYPE CItemContainer::ParseDisplayName(/* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ LPOLESTR pszDisplayName, /* [out] */ ULONG __RPC_FAR *pchEaten, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut)
{
// TODO
return E_NOTIMPL;
// TODO
return E_NOTIMPL;
}
@ -50,40 +50,40 @@ HRESULT STDMETHODCALLTYPE CItemContainer::ParseDisplayName(/* [unique][in] */ IB
HRESULT STDMETHODCALLTYPE CItemContainer::EnumObjects(/* [in] */ DWORD grfFlags, /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum)
{
HRESULT hr = E_NOTIMPL;
HRESULT hr = E_NOTIMPL;
/*
if (ppenum == NULL)
{
return E_POINTER;
}
if (ppenum == NULL)
{
return E_POINTER;
}
*ppenum = NULL;
typedef CComObject<CComEnumOnSTL<IEnumUnknown, &IID_IEnumUnknown, IUnknown*, _CopyInterface<IUnknown>, CNamedObjectList > > enumunk;
enumunk* p = NULL;
p = new enumunk;
if(p == NULL)
{
return E_OUTOFMEMORY;
}
*ppenum = NULL;
typedef CComObject<CComEnumOnSTL<IEnumUnknown, &IID_IEnumUnknown, IUnknown*, _CopyInterface<IUnknown>, CNamedObjectList > > enumunk;
enumunk* p = NULL;
p = new enumunk;
if(p == NULL)
{
return E_OUTOFMEMORY;
}
hr = p->Init();
if (SUCCEEDED(hr))
{
hr = p->QueryInterface(IID_IEnumUnknown, (void**) ppenum);
}
if (FAILED(hRes))
{
delete p;
}
hr = p->Init();
if (SUCCEEDED(hr))
{
hr = p->QueryInterface(IID_IEnumUnknown, (void**) ppenum);
}
if (FAILED(hRes))
{
delete p;
}
*/
return hr;
return hr;
}
HRESULT STDMETHODCALLTYPE CItemContainer::LockContainer(/* [in] */ BOOL fLock)
{
// TODO
return S_OK;
// TODO
return S_OK;
}
@ -93,30 +93,30 @@ HRESULT STDMETHODCALLTYPE CItemContainer::LockContainer(/* [in] */ BOOL fLock)
HRESULT STDMETHODCALLTYPE CItemContainer::GetObject(/* [in] */ LPOLESTR pszItem, /* [in] */ DWORD dwSpeedNeeded, /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject)
{
if (pszItem == NULL)
{
return E_INVALIDARG;
}
if (ppvObject == NULL)
{
return E_INVALIDARG;
}
if (pszItem == NULL)
{
return E_INVALIDARG;
}
if (ppvObject == NULL)
{
return E_INVALIDARG;
}
*ppvObject = NULL;
return MK_E_NOOBJECT;
*ppvObject = NULL;
return MK_E_NOOBJECT;
}
HRESULT STDMETHODCALLTYPE CItemContainer::GetObjectStorage(/* [in] */ LPOLESTR pszItem, /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvStorage)
{
// TODO
return MK_E_NOOBJECT;
// TODO
return MK_E_NOOBJECT;
}
HRESULT STDMETHODCALLTYPE CItemContainer::IsRunning(/* [in] */ LPOLESTR pszItem)
{
// TODO
return MK_E_NOOBJECT;
// TODO
return MK_E_NOOBJECT;
}

View File

@ -28,33 +28,33 @@
// Class for managing a list of named objects.
class CItemContainer : public CComObjectRootEx<CComSingleThreadModel>,
public IOleItemContainer
class CItemContainer : public CComObjectRootEx<CComSingleThreadModel>,
public IOleItemContainer
{
// List of all named objects managed by the container
CNamedObjectList m_cObjectList;
// List of all named objects managed by the container
CNamedObjectList m_cObjectList;
public:
CItemContainer();
virtual ~CItemContainer();
CItemContainer();
virtual ~CItemContainer();
BEGIN_COM_MAP(CItemContainer)
COM_INTERFACE_ENTRY_IID(IID_IParseDisplayName, IOleItemContainer)
COM_INTERFACE_ENTRY_IID(IID_IOleContainer, IOleItemContainer)
COM_INTERFACE_ENTRY_IID(IID_IOleItemContainer, IOleItemContainer)
COM_INTERFACE_ENTRY_IID(IID_IParseDisplayName, IOleItemContainer)
COM_INTERFACE_ENTRY_IID(IID_IOleContainer, IOleItemContainer)
COM_INTERFACE_ENTRY_IID(IID_IOleItemContainer, IOleItemContainer)
END_COM_MAP()
// IParseDisplayName implementation
virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(/* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ LPOLESTR pszDisplayName, /* [out] */ ULONG __RPC_FAR *pchEaten, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
// IParseDisplayName implementation
virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(/* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ LPOLESTR pszDisplayName, /* [out] */ ULONG __RPC_FAR *pchEaten, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
// IOleContainer implementation
virtual HRESULT STDMETHODCALLTYPE EnumObjects(/* [in] */ DWORD grfFlags, /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
virtual HRESULT STDMETHODCALLTYPE LockContainer(/* [in] */ BOOL fLock);
// IOleContainer implementation
virtual HRESULT STDMETHODCALLTYPE EnumObjects(/* [in] */ DWORD grfFlags, /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
virtual HRESULT STDMETHODCALLTYPE LockContainer(/* [in] */ BOOL fLock);
// IOleItemContainer implementation
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetObject(/* [in] */ LPOLESTR pszItem, /* [in] */ DWORD dwSpeedNeeded, /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetObjectStorage(/* [in] */ LPOLESTR pszItem, /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvStorage);
virtual HRESULT STDMETHODCALLTYPE IsRunning(/* [in] */ LPOLESTR pszItem);
// IOleItemContainer implementation
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetObject(/* [in] */ LPOLESTR pszItem, /* [in] */ DWORD dwSpeedNeeded, /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetObjectStorage(/* [in] */ LPOLESTR pszItem, /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvStorage);
virtual HRESULT STDMETHODCALLTYPE IsRunning(/* [in] */ LPOLESTR pszItem);
};
typedef CComObject<CItemContainer> CItemContainerInstance;

View File

@ -32,15 +32,15 @@
#include "CPMozillaControl.h"
// Commands sent via WM_COMMAND
#define ID_PRINT 1
#define ID_PAGESETUP 2
#define ID_VIEWSOURCE 3
#define ID_SAVEAS 4
#define ID_PROPERTIES 5
#define ID_CUT 6
#define ID_COPY 7
#define ID_PASTE 8
#define ID_SELECTALL 9
#define ID_PRINT 1
#define ID_PAGESETUP 2
#define ID_VIEWSOURCE 3
#define ID_SAVEAS 4
#define ID_PROPERTIES 5
#define ID_CUT 6
#define ID_COPY 7
#define ID_PASTE 8
#define ID_SELECTALL 9
// Command group and IDs exposed through IOleCommandTarget
extern GUID CGID_IWebBrowser_Moz;
@ -63,77 +63,77 @@ class CPromptService;
/////////////////////////////////////////////////////////////////////////////
// CMozillaBrowser
class ATL_NO_VTABLE CMozillaBrowser :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CMozillaBrowser, &CLSID_MozillaBrowser>,
public CComControl<CMozillaBrowser>,
public CDWebBrowserEvents1,
public CDWebBrowserEvents2,
public IPropertyNotifySinkCP<CMozillaBrowser>,
public CStockPropImpl<CMozillaBrowser, IWebBrowser2, &IID_IWebBrowser2, &LIBID_MOZILLACONTROLLib>,
public IProvideClassInfo2Impl<&CLSID_MozillaBrowser, &DIID_DWebBrowserEvents2, &LIBID_MOZILLACONTROLLib>,
public IPersistStreamInitImpl<CMozillaBrowser>,
public IPersistStorageImpl<CMozillaBrowser>,
public IQuickActivateImpl<CMozillaBrowser>,
public IOleControlImpl<CMozillaBrowser>,
public IOleObjectImpl<CMozillaBrowser>,
public IOleInPlaceActiveObjectImpl<CMozillaBrowser>,
public IViewObjectExImpl<CMozillaBrowser>,
public IOleInPlaceObjectWindowlessImpl<CMozillaBrowser>,
public IDataObjectImpl<CMozillaBrowser>,
public ISupportErrorInfo,
public IOleCommandTargetImpl<CMozillaBrowser>,
public IConnectionPointContainerImpl<CMozillaBrowser>,
public ISpecifyPropertyPagesImpl<CMozillaBrowser>,
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CMozillaBrowser, &CLSID_MozillaBrowser>,
public CComControl<CMozillaBrowser>,
public CDWebBrowserEvents1,
public CDWebBrowserEvents2,
public IPropertyNotifySinkCP<CMozillaBrowser>,
public CStockPropImpl<CMozillaBrowser, IWebBrowser2, &IID_IWebBrowser2, &LIBID_MOZILLACONTROLLib>,
public IProvideClassInfo2Impl<&CLSID_MozillaBrowser, &DIID_DWebBrowserEvents2, &LIBID_MOZILLACONTROLLib>,
public IPersistStreamInitImpl<CMozillaBrowser>,
public IPersistStorageImpl<CMozillaBrowser>,
public IQuickActivateImpl<CMozillaBrowser>,
public IOleControlImpl<CMozillaBrowser>,
public IOleObjectImpl<CMozillaBrowser>,
public IOleInPlaceActiveObjectImpl<CMozillaBrowser>,
public IViewObjectExImpl<CMozillaBrowser>,
public IOleInPlaceObjectWindowlessImpl<CMozillaBrowser>,
public IDataObjectImpl<CMozillaBrowser>,
public ISupportErrorInfo,
public IOleCommandTargetImpl<CMozillaBrowser>,
public IConnectionPointContainerImpl<CMozillaBrowser>,
public ISpecifyPropertyPagesImpl<CMozillaBrowser>,
public IMozControlBridge
{
friend CWebBrowserContainer;
friend CWebBrowserContainer;
friend CPromptService;
public:
CMozillaBrowser();
virtual ~CMozillaBrowser();
CMozillaBrowser();
virtual ~CMozillaBrowser();
DECLARE_REGISTRY_RESOURCEID(IDR_MOZILLABROWSER)
BEGIN_COM_MAP(CMozillaBrowser)
// Mozilla control interfaces
COM_INTERFACE_ENTRY(IMozControlBridge)
// IE web browser interface
COM_INTERFACE_ENTRY(IWebBrowser2)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IWebBrowser2)
COM_INTERFACE_ENTRY_IID(IID_IWebBrowser, IWebBrowser2)
COM_INTERFACE_ENTRY_IID(IID_IWebBrowserApp, IWebBrowser2)
COM_INTERFACE_ENTRY(IMozControlBridge)
// IE web browser interface
COM_INTERFACE_ENTRY(IWebBrowser2)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IWebBrowser2)
COM_INTERFACE_ENTRY_IID(IID_IWebBrowser, IWebBrowser2)
COM_INTERFACE_ENTRY_IID(IID_IWebBrowserApp, IWebBrowser2)
// Outgoing IE event interfaces
COM_INTERFACE_ENTRY_IID(DIID_DWebBrowserEvents, CDWebBrowserEvents1) //Requests to DWebBrowserEvents will get the vtable of CDWebBrowserEvents1
COM_INTERFACE_ENTRY_IID(DIID_DWebBrowserEvents2, CDWebBrowserEvents2) //Requests to DWebBrowserEvents2 will get the vtable of CDWebBrowserEvents2
COM_INTERFACE_ENTRY_IID(DIID_DWebBrowserEvents, CDWebBrowserEvents1) //Requests to DWebBrowserEvents will get the vtable of CDWebBrowserEvents1
COM_INTERFACE_ENTRY_IID(DIID_DWebBrowserEvents2, CDWebBrowserEvents2) //Requests to DWebBrowserEvents2 will get the vtable of CDWebBrowserEvents2
// Other ActiveX/OLE interfaces
COM_INTERFACE_ENTRY_IMPL(IViewObjectEx)
COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject2, IViewObjectEx)
COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject, IViewObjectEx)
COM_INTERFACE_ENTRY_IMPL(IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleInPlaceObject, IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY_IMPL(IOleInPlaceActiveObject)
COM_INTERFACE_ENTRY_IMPL(IOleControl)
COM_INTERFACE_ENTRY_IMPL(IOleObject)
COM_INTERFACE_ENTRY_IMPL(IQuickActivate) // This causes size assertion in ATL
COM_INTERFACE_ENTRY_IMPL(IPersistStorage)
COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit)
COM_INTERFACE_ENTRY_IMPL(ISpecifyPropertyPages)
COM_INTERFACE_ENTRY_IMPL(IDataObject)
COM_INTERFACE_ENTRY(IOleCommandTarget)
COM_INTERFACE_ENTRY(IProvideClassInfo)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
COM_INTERFACE_ENTRY_IMPL(IViewObjectEx)
COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject2, IViewObjectEx)
COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject, IViewObjectEx)
COM_INTERFACE_ENTRY_IMPL(IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleInPlaceObject, IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY_IMPL(IOleInPlaceActiveObject)
COM_INTERFACE_ENTRY_IMPL(IOleControl)
COM_INTERFACE_ENTRY_IMPL(IOleObject)
COM_INTERFACE_ENTRY_IMPL(IQuickActivate) // This causes size assertion in ATL
COM_INTERFACE_ENTRY_IMPL(IPersistStorage)
COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit)
COM_INTERFACE_ENTRY_IMPL(ISpecifyPropertyPages)
COM_INTERFACE_ENTRY_IMPL(IDataObject)
COM_INTERFACE_ENTRY(IOleCommandTarget)
COM_INTERFACE_ENTRY(IProvideClassInfo)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
END_COM_MAP()
// Properties supported by the control that map onto property
// pages that the user may be able to configure from tools like VB.
BEGIN_PROPERTY_MAP(CMozillaBrowser)
// Example entries
// PROP_ENTRY("Property Description", dispid, clsid)
PROP_PAGE(CLSID_StockColorPage)
// Example entries
// PROP_ENTRY("Property Description", dispid, clsid)
PROP_PAGE(CLSID_StockColorPage)
END_PROPERTY_MAP()
// Table of outgoing connection points. Anyone subscribing
@ -141,29 +141,29 @@ END_PROPERTY_MAP()
// connect points.
BEGIN_CONNECTION_POINT_MAP(CMozillaBrowser)
CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
// Fires IE events
CONNECTION_POINT_ENTRY(DIID_DWebBrowserEvents2)
CONNECTION_POINT_ENTRY(DIID_DWebBrowserEvents)
CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
// Fires IE events
CONNECTION_POINT_ENTRY(DIID_DWebBrowserEvents2)
CONNECTION_POINT_ENTRY(DIID_DWebBrowserEvents)
END_CONNECTION_POINT_MAP()
// Table of window messages and their associate handlers
BEGIN_MSG_MAP(CMozillaBrowser)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
COMMAND_ID_HANDLER(ID_PRINT, OnPrint)
COMMAND_ID_HANDLER(ID_PAGESETUP, OnPageSetup)
COMMAND_ID_HANDLER(ID_SAVEAS, OnSaveAs)
COMMAND_ID_HANDLER(ID_PROPERTIES, OnProperties)
COMMAND_ID_HANDLER(ID_CUT, OnCut)
COMMAND_ID_HANDLER(ID_COPY, OnCopy)
COMMAND_ID_HANDLER(ID_PASTE, OnPaste)
COMMAND_ID_HANDLER(ID_SELECTALL, OnSelectAll)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
COMMAND_ID_HANDLER(ID_PRINT, OnPrint)
COMMAND_ID_HANDLER(ID_PAGESETUP, OnPageSetup)
COMMAND_ID_HANDLER(ID_SAVEAS, OnSaveAs)
COMMAND_ID_HANDLER(ID_PROPERTIES, OnProperties)
COMMAND_ID_HANDLER(ID_CUT, OnCut)
COMMAND_ID_HANDLER(ID_COPY, OnCopy)
COMMAND_ID_HANDLER(ID_PASTE, OnPaste)
COMMAND_ID_HANDLER(ID_SELECTALL, OnSelectAll)
COMMAND_ID_HANDLER(ID_DOCUMENT_BACK, OnDocumentBack)
COMMAND_ID_HANDLER(ID_DOCUMENT_FORWARD, OnDocumentForward)
COMMAND_ID_HANDLER(ID_DOCUMENT_SELECTALL, OnDocumentSelectAll)
@ -176,164 +176,164 @@ BEGIN_MSG_MAP(CMozillaBrowser)
COMMAND_ID_HANDLER(ID_LINK_PROPERTIES, OnLinkProperties)
END_MSG_MAP()
static HRESULT _stdcall PrintHandler(CMozillaBrowser *pThis, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
static HRESULT _stdcall EditModeHandler(CMozillaBrowser *pThis, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
static HRESULT _stdcall EditCommandHandler(CMozillaBrowser *pThis, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
static HRESULT _stdcall PrintHandler(CMozillaBrowser *pThis, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
static HRESULT _stdcall EditModeHandler(CMozillaBrowser *pThis, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
static HRESULT _stdcall EditCommandHandler(CMozillaBrowser *pThis, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// Table of OLE commands (invoked through IOleCommandTarget and their
// associated command groups and command handlers.
BEGIN_OLECOMMAND_TABLE()
// Standard "common" commands
OLECOMMAND_HANDLER(OLECMDID_PRINT, NULL, PrintHandler, L"Print", L"Print the page")
OLECOMMAND_MESSAGE(OLECMDID_PAGESETUP, NULL, ID_PAGESETUP, L"Page Setup", L"Page Setup")
OLECOMMAND_MESSAGE(OLECMDID_UNDO, NULL, 0, L"Undo", L"Undo")
OLECOMMAND_MESSAGE(OLECMDID_REDO, NULL, 0, L"Redo", L"Redo")
OLECOMMAND_MESSAGE(OLECMDID_REFRESH, NULL, 0, L"Refresh", L"Refresh")
OLECOMMAND_MESSAGE(OLECMDID_STOP, NULL, 0, L"Stop", L"Stop")
OLECOMMAND_MESSAGE(OLECMDID_ONUNLOAD, NULL, 0, L"OnUnload", L"OnUnload")
OLECOMMAND_MESSAGE(OLECMDID_SAVEAS, NULL, ID_SAVEAS, L"SaveAs", L"Save the page")
OLECOMMAND_MESSAGE(OLECMDID_CUT, NULL, ID_CUT, L"Cut", L"Cut selection")
OLECOMMAND_MESSAGE(OLECMDID_COPY, NULL, ID_COPY, L"Copy", L"Copy selection")
OLECOMMAND_MESSAGE(OLECMDID_PASTE, NULL, ID_PASTE, L"Paste", L"Paste as selection")
OLECOMMAND_MESSAGE(OLECMDID_SELECTALL, NULL, ID_SELECTALL, L"SelectAll", L"Select all")
OLECOMMAND_MESSAGE(OLECMDID_PROPERTIES, NULL, ID_PROPERTIES, L"Properties", L"Show page properties")
// Unsupported IE 4.x command group
OLECOMMAND_MESSAGE(HTMLID_FIND, &CGID_IWebBrowser_Moz, 0, L"Find", L"Find")
OLECOMMAND_MESSAGE(HTMLID_VIEWSOURCE, &CGID_IWebBrowser_Moz, 0, L"ViewSource", L"View Source")
OLECOMMAND_MESSAGE(HTMLID_OPTIONS, &CGID_IWebBrowser_Moz, 0, L"Options", L"Options")
// DHTML editor command group
OLECOMMAND_HANDLER(IDM_EDITMODE, &CGID_MSHTML_Moz, EditModeHandler, L"EditMode", L"Switch to edit mode")
OLECOMMAND_HANDLER(IDM_BROWSEMODE, &CGID_MSHTML_Moz, EditModeHandler, L"UserMode", L"Switch to user mode")
OLECOMMAND_HANDLER(IDM_BOLD, &CGID_MSHTML_Moz, EditCommandHandler, L"Bold", L"Toggle Bold")
OLECOMMAND_HANDLER(IDM_ITALIC, &CGID_MSHTML_Moz, EditCommandHandler, L"Italic", L"Toggle Italic")
OLECOMMAND_HANDLER(IDM_UNDERLINE, &CGID_MSHTML_Moz, EditCommandHandler, L"Underline", L"Toggle Underline")
OLECOMMAND_HANDLER(IDM_UNKNOWN, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNBOTTOM, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNHORIZONTALCENTERS, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNLEFT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNRIGHT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNTOGRID, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNTOP, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNVERTICALCENTERS, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ARRANGEBOTTOM, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ARRANGERIGHT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_BRINGFORWARD, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_BRINGTOFRONT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CENTERHORIZONTALLY, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CENTERVERTICALLY, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CODE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_DELETE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FONTNAME, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FONTSIZE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_GROUP, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_HORIZSPACECONCATENATE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_HORIZSPACEDECREASE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_HORIZSPACEINCREASE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_HORIZSPACEMAKEEQUAL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_INSERTOBJECT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_MULTILEVELREDO, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SENDBACKWARD, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SENDTOBACK, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SHOWTABLE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SIZETOCONTROL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SIZETOCONTROLHEIGHT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SIZETOCONTROLWIDTH, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SIZETOFIT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SIZETOGRID, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SNAPTOGRID, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_TABORDER, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_TOOLBOX, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_MULTILEVELUNDO, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_UNGROUP, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_VERTSPACECONCATENATE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_VERTSPACEDECREASE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_VERTSPACEINCREASE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_VERTSPACEMAKEEQUAL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYFULL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_BACKCOLOR, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_BORDERCOLOR, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FLAT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FORECOLOR, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYCENTER, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYGENERAL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYLEFT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYRIGHT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_RAISED, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SUNKEN, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CHISELED, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ETCHED, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SHADOWED, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FIND, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SHOWGRID, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST0, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST1, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST2, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST3, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST4, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST5, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST6, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST7, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST8, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST9, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLISTLAST, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CONVERTOBJECT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CUSTOMCONTROL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CUSTOMIZEITEM, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_RENAME, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_IMPORT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_NEWPAGE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_MOVE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CANCEL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FONT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_STRIKETHROUGH, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_DELETEWORD, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_EXECPRINT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYNONE, &CGID_MSHTML_Moz, NULL, L"", L"")
// Standard "common" commands
OLECOMMAND_HANDLER(OLECMDID_PRINT, NULL, PrintHandler, L"Print", L"Print the page")
OLECOMMAND_MESSAGE(OLECMDID_PAGESETUP, NULL, ID_PAGESETUP, L"Page Setup", L"Page Setup")
OLECOMMAND_MESSAGE(OLECMDID_UNDO, NULL, 0, L"Undo", L"Undo")
OLECOMMAND_MESSAGE(OLECMDID_REDO, NULL, 0, L"Redo", L"Redo")
OLECOMMAND_MESSAGE(OLECMDID_REFRESH, NULL, 0, L"Refresh", L"Refresh")
OLECOMMAND_MESSAGE(OLECMDID_STOP, NULL, 0, L"Stop", L"Stop")
OLECOMMAND_MESSAGE(OLECMDID_ONUNLOAD, NULL, 0, L"OnUnload", L"OnUnload")
OLECOMMAND_MESSAGE(OLECMDID_SAVEAS, NULL, ID_SAVEAS, L"SaveAs", L"Save the page")
OLECOMMAND_MESSAGE(OLECMDID_CUT, NULL, ID_CUT, L"Cut", L"Cut selection")
OLECOMMAND_MESSAGE(OLECMDID_COPY, NULL, ID_COPY, L"Copy", L"Copy selection")
OLECOMMAND_MESSAGE(OLECMDID_PASTE, NULL, ID_PASTE, L"Paste", L"Paste as selection")
OLECOMMAND_MESSAGE(OLECMDID_SELECTALL, NULL, ID_SELECTALL, L"SelectAll", L"Select all")
OLECOMMAND_MESSAGE(OLECMDID_PROPERTIES, NULL, ID_PROPERTIES, L"Properties", L"Show page properties")
// Unsupported IE 4.x command group
OLECOMMAND_MESSAGE(HTMLID_FIND, &CGID_IWebBrowser_Moz, 0, L"Find", L"Find")
OLECOMMAND_MESSAGE(HTMLID_VIEWSOURCE, &CGID_IWebBrowser_Moz, 0, L"ViewSource", L"View Source")
OLECOMMAND_MESSAGE(HTMLID_OPTIONS, &CGID_IWebBrowser_Moz, 0, L"Options", L"Options")
// DHTML editor command group
OLECOMMAND_HANDLER(IDM_EDITMODE, &CGID_MSHTML_Moz, EditModeHandler, L"EditMode", L"Switch to edit mode")
OLECOMMAND_HANDLER(IDM_BROWSEMODE, &CGID_MSHTML_Moz, EditModeHandler, L"UserMode", L"Switch to user mode")
OLECOMMAND_HANDLER(IDM_BOLD, &CGID_MSHTML_Moz, EditCommandHandler, L"Bold", L"Toggle Bold")
OLECOMMAND_HANDLER(IDM_ITALIC, &CGID_MSHTML_Moz, EditCommandHandler, L"Italic", L"Toggle Italic")
OLECOMMAND_HANDLER(IDM_UNDERLINE, &CGID_MSHTML_Moz, EditCommandHandler, L"Underline", L"Toggle Underline")
OLECOMMAND_HANDLER(IDM_UNKNOWN, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNBOTTOM, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNHORIZONTALCENTERS, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNLEFT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNRIGHT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNTOGRID, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNTOP, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ALIGNVERTICALCENTERS, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ARRANGEBOTTOM, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ARRANGERIGHT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_BRINGFORWARD, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_BRINGTOFRONT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CENTERHORIZONTALLY, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CENTERVERTICALLY, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CODE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_DELETE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FONTNAME, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FONTSIZE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_GROUP, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_HORIZSPACECONCATENATE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_HORIZSPACEDECREASE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_HORIZSPACEINCREASE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_HORIZSPACEMAKEEQUAL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_INSERTOBJECT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_MULTILEVELREDO, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SENDBACKWARD, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SENDTOBACK, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SHOWTABLE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SIZETOCONTROL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SIZETOCONTROLHEIGHT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SIZETOCONTROLWIDTH, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SIZETOFIT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SIZETOGRID, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SNAPTOGRID, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_TABORDER, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_TOOLBOX, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_MULTILEVELUNDO, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_UNGROUP, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_VERTSPACECONCATENATE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_VERTSPACEDECREASE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_VERTSPACEINCREASE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_VERTSPACEMAKEEQUAL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYFULL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_BACKCOLOR, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_BORDERCOLOR, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FLAT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FORECOLOR, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYCENTER, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYGENERAL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYLEFT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYRIGHT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_RAISED, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SUNKEN, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CHISELED, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_ETCHED, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SHADOWED, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FIND, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_SHOWGRID, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST0, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST1, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST2, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST3, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST4, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST5, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST6, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST7, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST8, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLIST9, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_OBJECTVERBLISTLAST, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CONVERTOBJECT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CUSTOMCONTROL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CUSTOMIZEITEM, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_RENAME, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_IMPORT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_NEWPAGE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_MOVE, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_CANCEL, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_FONT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_STRIKETHROUGH, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_DELETEWORD, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_EXECPRINT, &CGID_MSHTML_Moz, NULL, L"", L"")
OLECOMMAND_HANDLER(IDM_JUSTIFYNONE, &CGID_MSHTML_Moz, NULL, L"", L"")
END_OLECOMMAND_TABLE()
HWND GetCommandTargetWindow() const
{
return m_hWnd;
}
HWND GetCommandTargetWindow() const
{
return m_hWnd;
}
// Windows message handlers
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnPrint(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPageSetup(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnViewSource(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnPrint(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPageSetup(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnViewSource(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnSaveAs(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnProperties(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCut(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCopy(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPaste(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnSelectAll(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnSaveAs(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnProperties(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCut(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCopy(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPaste(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnSelectAll(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentBack(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentSelectAll(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentPrint(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentRefresh(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentProperties(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentBack(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentForward(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentSelectAll(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentPrint(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentRefresh(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnDocumentProperties(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnLinkOpen(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnLinkOpenInNewWindow(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnLinkCopyShortcut(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnLinkProperties(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// IViewObjectEx
STDMETHOD(GetViewStatus)(DWORD* pdwStatus)
{
ATLTRACE(_T("IViewObjectExImpl::GetViewStatus\n"));
*pdwStatus = VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE;
return S_OK;
}
STDMETHOD(GetViewStatus)(DWORD* pdwStatus)
{
ATLTRACE(_T("IViewObjectExImpl::GetViewStatus\n"));
*pdwStatus = VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE;
return S_OK;
}
// Protected members
protected:
@ -341,55 +341,55 @@ protected:
// List of browsers
static nsVoidArray sBrowserList;
// Pointer to web shell manager
CWebBrowserContainer * mWebBrowserContainer;
// CComObject to IHTMLDocument implementer
CIEHtmlDocumentInstance * mIERootDocument;
// Pointer to web shell manager
CWebBrowserContainer * mWebBrowserContainer;
// CComObject to IHTMLDocument implementer
CIEHtmlDocumentInstance * mIERootDocument;
// Mozilla interfaces
nsCOMPtr<nsIWebBrowser> mWebBrowser;
nsCOMPtr<nsIBaseWindow> mWebBrowserAsWin;
// Mozilla interfaces
nsCOMPtr<nsIWebBrowser> mWebBrowser;
nsCOMPtr<nsIBaseWindow> mWebBrowserAsWin;
// Context menu
nsCOMPtr<nsIDOMNode> mContextNode;
nsIPref * mPrefs;
nsIEditor * mEditor;
nsIPref * mPrefs;
nsIEditor * mEditor;
// Flag to indicate if browser is created or not
BOOL mValidBrowserFlag;
// Indicates the browser is busy doing something
BOOL mBusyFlag;
// Flag to indicate if browser is in edit mode or not
BOOL mEditModeFlag;
// Flag to indicate if the browser has a drop target
BOOL mHaveDropTargetFlag;
// Contains an error message if startup went wrong
tstring mStartupErrorMessage;
// Property list
PropertyList mPropertyList;
// Ready status of control
READYSTATE mBrowserReadyState;
// List of registered browser helper objects
CComUnkPtr *mBrowserHelperList;
// Flag to indicate if browser is created or not
BOOL mValidBrowserFlag;
// Indicates the browser is busy doing something
BOOL mBusyFlag;
// Flag to indicate if browser is in edit mode or not
BOOL mEditModeFlag;
// Flag to indicate if the browser has a drop target
BOOL mHaveDropTargetFlag;
// Contains an error message if startup went wrong
tstring mStartupErrorMessage;
// Property list
PropertyList mPropertyList;
// Ready status of control
READYSTATE mBrowserReadyState;
// List of registered browser helper objects
CComUnkPtr *mBrowserHelperList;
ULONG mBrowserHelperListCount;
// Post data from last navigate operation
CComVariant mLastPostData;
// Post data from last navigate operation
CComVariant mLastPostData;
virtual BOOL IsValid();
virtual HRESULT Initialize();
virtual HRESULT Terminate();
virtual HRESULT CreateBrowser();
virtual HRESULT DestroyBrowser();
virtual BOOL IsValid();
virtual HRESULT Initialize();
virtual HRESULT Terminate();
virtual HRESULT CreateBrowser();
virtual HRESULT DestroyBrowser();
virtual HRESULT SetStartupErrorMessage(UINT nStringID);
virtual HRESULT SetErrorInfo(LPCTSTR lpszDesc, HRESULT hr);
virtual HRESULT GetDOMDocument(nsIDOMDocument **pDocument);
virtual HRESULT SetEditorMode(BOOL bEnabled);
virtual HRESULT OnEditorCommand(DWORD nCmdID);
virtual HRESULT SetErrorInfo(LPCTSTR lpszDesc, HRESULT hr);
virtual HRESULT GetDOMDocument(nsIDOMDocument **pDocument);
virtual HRESULT SetEditorMode(BOOL bEnabled);
virtual HRESULT OnEditorCommand(DWORD nCmdID);
virtual HRESULT PrintDocument(BOOL promptUser);
virtual HRESULT LoadBrowserHelpers();
virtual HRESULT UnloadBrowserHelpers();
virtual HRESULT UnloadBrowserHelpers();
// User interface methods
virtual int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = _T(""), UINT nType = MB_OK);
@ -398,10 +398,10 @@ protected:
public:
// IOleObjectImpl overrides
HRESULT InPlaceActivate(LONG iVerb, const RECT* prcPosRect);
HRESULT InPlaceActivate(LONG iVerb, const RECT* prcPosRect);
// IOleObject overrides
virtual HRESULT STDMETHODCALLTYPE CMozillaBrowser::GetClientSite(IOleClientSite **ppClientSite);
virtual HRESULT STDMETHODCALLTYPE CMozillaBrowser::GetClientSite(IOleClientSite **ppClientSite);
// IMozControlBridge implementation
virtual HRESULT STDMETHODCALLTYPE GetWebBrowser(/* [out] */ void __RPC_FAR *__RPC_FAR *aBrowser);
@ -434,50 +434,50 @@ public:
virtual HRESULT STDMETHODCALLTYPE get_Busy(VARIANT_BOOL __RPC_FAR *pBool);
// IWebBrowserApp implementation
virtual HRESULT STDMETHODCALLTYPE Quit(void);
virtual HRESULT STDMETHODCALLTYPE ClientToWindow(int __RPC_FAR *pcx, int __RPC_FAR *pcy);
virtual HRESULT STDMETHODCALLTYPE PutProperty(BSTR Property, VARIANT vtValue);
virtual HRESULT STDMETHODCALLTYPE GetProperty(BSTR Property, VARIANT __RPC_FAR *pvtValue);
virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR __RPC_FAR *Name);
virtual HRESULT STDMETHODCALLTYPE get_HWND(long __RPC_FAR *pHWND);
virtual HRESULT STDMETHODCALLTYPE get_FullName(BSTR __RPC_FAR *FullName);
virtual HRESULT STDMETHODCALLTYPE get_Path(BSTR __RPC_FAR *Path);
virtual HRESULT STDMETHODCALLTYPE get_Visible(VARIANT_BOOL __RPC_FAR *pBool);
virtual HRESULT STDMETHODCALLTYPE put_Visible(VARIANT_BOOL Value);
virtual HRESULT STDMETHODCALLTYPE get_StatusBar(VARIANT_BOOL __RPC_FAR *pBool);
virtual HRESULT STDMETHODCALLTYPE put_StatusBar(VARIANT_BOOL Value);
virtual HRESULT STDMETHODCALLTYPE get_StatusText(BSTR __RPC_FAR *StatusText);
virtual HRESULT STDMETHODCALLTYPE put_StatusText(BSTR StatusText);
virtual HRESULT STDMETHODCALLTYPE get_ToolBar(int __RPC_FAR *Value);
virtual HRESULT STDMETHODCALLTYPE put_ToolBar(int Value);
virtual HRESULT STDMETHODCALLTYPE get_MenuBar(VARIANT_BOOL __RPC_FAR *Value);
virtual HRESULT STDMETHODCALLTYPE put_MenuBar(VARIANT_BOOL Value);
virtual HRESULT STDMETHODCALLTYPE get_FullScreen(VARIANT_BOOL __RPC_FAR *pbFullScreen);
virtual HRESULT STDMETHODCALLTYPE put_FullScreen(VARIANT_BOOL bFullScreen);
virtual HRESULT STDMETHODCALLTYPE Quit(void);
virtual HRESULT STDMETHODCALLTYPE ClientToWindow(int __RPC_FAR *pcx, int __RPC_FAR *pcy);
virtual HRESULT STDMETHODCALLTYPE PutProperty(BSTR Property, VARIANT vtValue);
virtual HRESULT STDMETHODCALLTYPE GetProperty(BSTR Property, VARIANT __RPC_FAR *pvtValue);
virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR __RPC_FAR *Name);
virtual HRESULT STDMETHODCALLTYPE get_HWND(long __RPC_FAR *pHWND);
virtual HRESULT STDMETHODCALLTYPE get_FullName(BSTR __RPC_FAR *FullName);
virtual HRESULT STDMETHODCALLTYPE get_Path(BSTR __RPC_FAR *Path);
virtual HRESULT STDMETHODCALLTYPE get_Visible(VARIANT_BOOL __RPC_FAR *pBool);
virtual HRESULT STDMETHODCALLTYPE put_Visible(VARIANT_BOOL Value);
virtual HRESULT STDMETHODCALLTYPE get_StatusBar(VARIANT_BOOL __RPC_FAR *pBool);
virtual HRESULT STDMETHODCALLTYPE put_StatusBar(VARIANT_BOOL Value);
virtual HRESULT STDMETHODCALLTYPE get_StatusText(BSTR __RPC_FAR *StatusText);
virtual HRESULT STDMETHODCALLTYPE put_StatusText(BSTR StatusText);
virtual HRESULT STDMETHODCALLTYPE get_ToolBar(int __RPC_FAR *Value);
virtual HRESULT STDMETHODCALLTYPE put_ToolBar(int Value);
virtual HRESULT STDMETHODCALLTYPE get_MenuBar(VARIANT_BOOL __RPC_FAR *Value);
virtual HRESULT STDMETHODCALLTYPE put_MenuBar(VARIANT_BOOL Value);
virtual HRESULT STDMETHODCALLTYPE get_FullScreen(VARIANT_BOOL __RPC_FAR *pbFullScreen);
virtual HRESULT STDMETHODCALLTYPE put_FullScreen(VARIANT_BOOL bFullScreen);
// IWebBrowser2 implementation
virtual HRESULT STDMETHODCALLTYPE Navigate2(VARIANT __RPC_FAR *URL, VARIANT __RPC_FAR *Flags, VARIANT __RPC_FAR *TargetFrameName, VARIANT __RPC_FAR *PostData, VARIANT __RPC_FAR *Headers);
virtual HRESULT STDMETHODCALLTYPE QueryStatusWB(OLECMDID cmdID, OLECMDF __RPC_FAR *pcmdf);
virtual HRESULT STDMETHODCALLTYPE ExecWB(OLECMDID cmdID, OLECMDEXECOPT cmdexecopt, VARIANT __RPC_FAR *pvaIn, VARIANT __RPC_FAR *pvaOut);
virtual HRESULT STDMETHODCALLTYPE ShowBrowserBar(VARIANT __RPC_FAR *pvaClsid, VARIANT __RPC_FAR *pvarShow, VARIANT __RPC_FAR *pvarSize);
virtual HRESULT STDMETHODCALLTYPE get_ReadyState(READYSTATE __RPC_FAR *plReadyState);
virtual HRESULT STDMETHODCALLTYPE get_Offline(VARIANT_BOOL __RPC_FAR *pbOffline);
virtual HRESULT STDMETHODCALLTYPE put_Offline(VARIANT_BOOL bOffline);
virtual HRESULT STDMETHODCALLTYPE get_Silent(VARIANT_BOOL __RPC_FAR *pbSilent);
virtual HRESULT STDMETHODCALLTYPE put_Silent(VARIANT_BOOL bSilent);
virtual HRESULT STDMETHODCALLTYPE get_RegisterAsBrowser(VARIANT_BOOL __RPC_FAR *pbRegister);
virtual HRESULT STDMETHODCALLTYPE put_RegisterAsBrowser(VARIANT_BOOL bRegister);
virtual HRESULT STDMETHODCALLTYPE get_RegisterAsDropTarget(VARIANT_BOOL __RPC_FAR *pbRegister);
virtual HRESULT STDMETHODCALLTYPE put_RegisterAsDropTarget(VARIANT_BOOL bRegister);
virtual HRESULT STDMETHODCALLTYPE get_TheaterMode(VARIANT_BOOL __RPC_FAR *pbRegister);
virtual HRESULT STDMETHODCALLTYPE put_TheaterMode(VARIANT_BOOL bRegister);
virtual HRESULT STDMETHODCALLTYPE get_AddressBar(VARIANT_BOOL __RPC_FAR *Value);
virtual HRESULT STDMETHODCALLTYPE put_AddressBar(VARIANT_BOOL Value);
virtual HRESULT STDMETHODCALLTYPE get_Resizable(VARIANT_BOOL __RPC_FAR *Value);
virtual HRESULT STDMETHODCALLTYPE put_Resizable(VARIANT_BOOL Value);
virtual HRESULT STDMETHODCALLTYPE Navigate2(VARIANT __RPC_FAR *URL, VARIANT __RPC_FAR *Flags, VARIANT __RPC_FAR *TargetFrameName, VARIANT __RPC_FAR *PostData, VARIANT __RPC_FAR *Headers);
virtual HRESULT STDMETHODCALLTYPE QueryStatusWB(OLECMDID cmdID, OLECMDF __RPC_FAR *pcmdf);
virtual HRESULT STDMETHODCALLTYPE ExecWB(OLECMDID cmdID, OLECMDEXECOPT cmdexecopt, VARIANT __RPC_FAR *pvaIn, VARIANT __RPC_FAR *pvaOut);
virtual HRESULT STDMETHODCALLTYPE ShowBrowserBar(VARIANT __RPC_FAR *pvaClsid, VARIANT __RPC_FAR *pvarShow, VARIANT __RPC_FAR *pvarSize);
virtual HRESULT STDMETHODCALLTYPE get_ReadyState(READYSTATE __RPC_FAR *plReadyState);
virtual HRESULT STDMETHODCALLTYPE get_Offline(VARIANT_BOOL __RPC_FAR *pbOffline);
virtual HRESULT STDMETHODCALLTYPE put_Offline(VARIANT_BOOL bOffline);
virtual HRESULT STDMETHODCALLTYPE get_Silent(VARIANT_BOOL __RPC_FAR *pbSilent);
virtual HRESULT STDMETHODCALLTYPE put_Silent(VARIANT_BOOL bSilent);
virtual HRESULT STDMETHODCALLTYPE get_RegisterAsBrowser(VARIANT_BOOL __RPC_FAR *pbRegister);
virtual HRESULT STDMETHODCALLTYPE put_RegisterAsBrowser(VARIANT_BOOL bRegister);
virtual HRESULT STDMETHODCALLTYPE get_RegisterAsDropTarget(VARIANT_BOOL __RPC_FAR *pbRegister);
virtual HRESULT STDMETHODCALLTYPE put_RegisterAsDropTarget(VARIANT_BOOL bRegister);
virtual HRESULT STDMETHODCALLTYPE get_TheaterMode(VARIANT_BOOL __RPC_FAR *pbRegister);
virtual HRESULT STDMETHODCALLTYPE put_TheaterMode(VARIANT_BOOL bRegister);
virtual HRESULT STDMETHODCALLTYPE get_AddressBar(VARIANT_BOOL __RPC_FAR *Value);
virtual HRESULT STDMETHODCALLTYPE put_AddressBar(VARIANT_BOOL Value);
virtual HRESULT STDMETHODCALLTYPE get_Resizable(VARIANT_BOOL __RPC_FAR *Value);
virtual HRESULT STDMETHODCALLTYPE put_Resizable(VARIANT_BOOL Value);
public:
HRESULT OnDraw(ATL_DRAWINFO& di);
HRESULT OnDraw(ATL_DRAWINFO& di);
};

View File

@ -27,8 +27,8 @@
// Note: Proxy/Stub Information
// To build a separate proxy/stub DLL,
// run nmake -f MozillaControlps.mk in the project directory.
// To build a separate proxy/stub DLL,
// run nmake -f MozillaControlps.mk in the project directory.
#include "stdafx.h"
#include "resource.h"
@ -41,7 +41,7 @@
CComModule _Module;
BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_MozillaBrowser, CMozillaBrowser)
OBJECT_ENTRY(CLSID_MozillaBrowser, CMozillaBrowser)
END_OBJECT_MAP()
/////////////////////////////////////////////////////////////////////////////
@ -50,21 +50,21 @@ END_OBJECT_MAP()
extern "C"
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
NG_TRACE_METHOD(DllMain);
NG_TRACE_METHOD(DllMain);
if (dwReason == DLL_PROCESS_ATTACH)
{
NG_TRACE(_T("Mozilla ActiveX - DLL_PROCESS_ATTACH\n"));
_Module.Init(ObjectMap, hInstance);
DisableThreadLibraryCalls(hInstance);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
NG_TRACE(_T("Mozilla ActiveX - DLL_PROCESS_DETACH\n"));
_Module.Term();
}
if (dwReason == DLL_PROCESS_ATTACH)
{
NG_TRACE(_T("Mozilla ActiveX - DLL_PROCESS_ATTACH\n"));
_Module.Init(ObjectMap, hInstance);
DisableThreadLibraryCalls(hInstance);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
NG_TRACE(_T("Mozilla ActiveX - DLL_PROCESS_DETACH\n"));
_Module.Term();
}
return TRUE; // ok
return TRUE; // ok
}
/////////////////////////////////////////////////////////////////////////////
@ -72,7 +72,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
STDAPI DllCanUnloadNow(void)
{
return (_Module.GetLockCount()==0) ? S_OK : S_FALSE;
return (_Module.GetLockCount()==0) ? S_OK : S_FALSE;
}
/////////////////////////////////////////////////////////////////////////////
@ -80,7 +80,7 @@ STDAPI DllCanUnloadNow(void)
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
return _Module.GetClassObject(rclsid, riid, ppv);
return _Module.GetClassObject(rclsid, riid, ppv);
}
/////////////////////////////////////////////////////////////////////////////
@ -88,8 +88,8 @@ STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
STDAPI DllRegisterServer(void)
{
// registers object, typelib and all interfaces in typelib
return _Module.RegisterServer(TRUE);
// registers object, typelib and all interfaces in typelib
return _Module.RegisterServer(TRUE);
}
/////////////////////////////////////////////////////////////////////////////
@ -97,8 +97,8 @@ STDAPI DllRegisterServer(void)
STDAPI DllUnregisterServer(void)
{
_Module.UnregisterServer();
return S_OK;
_Module.UnregisterServer();
return S_OK;
}

View File

@ -43,59 +43,59 @@ CPropertyBag::~CPropertyBag()
HRESULT STDMETHODCALLTYPE CPropertyBag::Read(/* [in] */ LPCOLESTR pszPropName, /* [out][in] */ VARIANT __RPC_FAR *pVar, /* [in] */ IErrorLog __RPC_FAR *pErrorLog)
{
if (pszPropName == NULL)
{
return E_INVALIDARG;
}
if (pVar == NULL)
{
return E_INVALIDARG;
}
if (pszPropName == NULL)
{
return E_INVALIDARG;
}
if (pVar == NULL)
{
return E_INVALIDARG;
}
VariantInit(pVar);
PropertyList::iterator i;
for (i = m_PropertyList.begin(); i != m_PropertyList.end(); i++)
{
// Is the property already in the list?
if (wcsicmp((*i).szName, pszPropName) == 0)
{
// Copy the new value
VariantCopy(pVar, &(*i).vValue);
return S_OK;
}
}
return S_OK;
VariantInit(pVar);
PropertyList::iterator i;
for (i = m_PropertyList.begin(); i != m_PropertyList.end(); i++)
{
// Is the property already in the list?
if (wcsicmp((*i).szName, pszPropName) == 0)
{
// Copy the new value
VariantCopy(pVar, &(*i).vValue);
return S_OK;
}
}
return S_OK;
}
HRESULT STDMETHODCALLTYPE CPropertyBag::Write(/* [in] */ LPCOLESTR pszPropName, /* [in] */ VARIANT __RPC_FAR *pVar)
{
if (pszPropName == NULL)
{
return E_INVALIDARG;
}
if (pVar == NULL)
{
return E_INVALIDARG;
}
if (pszPropName == NULL)
{
return E_INVALIDARG;
}
if (pVar == NULL)
{
return E_INVALIDARG;
}
PropertyList::iterator i;
for (i = m_PropertyList.begin(); i != m_PropertyList.end(); i++)
{
// Is the property already in the list?
if (wcsicmp((*i).szName, pszPropName) == 0)
{
// Copy the new value
(*i).vValue = CComVariant(*pVar);
return S_OK;
}
}
PropertyList::iterator i;
for (i = m_PropertyList.begin(); i != m_PropertyList.end(); i++)
{
// Is the property already in the list?
if (wcsicmp((*i).szName, pszPropName) == 0)
{
// Copy the new value
(*i).vValue = CComVariant(*pVar);
return S_OK;
}
}
Property p;
p.szName = CComBSTR(pszPropName);
p.vValue = *pVar;
Property p;
p.szName = CComBSTR(pszPropName);
p.vValue = *pVar;
m_PropertyList.push_back(p);
return S_OK;
m_PropertyList.push_back(p);
return S_OK;
}

View File

@ -29,25 +29,25 @@
// Object wrapper for property list. This class can be set up with a
// list of properties and used to initialise a control with them
class CPropertyBag : public CComObjectRootEx<CComSingleThreadModel>,
public IPropertyBag
class CPropertyBag : public CComObjectRootEx<CComSingleThreadModel>,
public IPropertyBag
{
// List of properties in the bag
PropertyList m_PropertyList;
// List of properties in the bag
PropertyList m_PropertyList;
public:
// Constructor
CPropertyBag();
// Destructor
virtual ~CPropertyBag();
// Constructor
CPropertyBag();
// Destructor
virtual ~CPropertyBag();
BEGIN_COM_MAP(CPropertyBag)
COM_INTERFACE_ENTRY(IPropertyBag)
COM_INTERFACE_ENTRY(IPropertyBag)
END_COM_MAP()
// IPropertyBag methods
virtual /* [local] */ HRESULT STDMETHODCALLTYPE Read(/* [in] */ LPCOLESTR pszPropName, /* [out][in] */ VARIANT __RPC_FAR *pVar, /* [in] */ IErrorLog __RPC_FAR *pErrorLog);
virtual HRESULT STDMETHODCALLTYPE Write(/* [in] */ LPCOLESTR pszPropName, /* [in] */ VARIANT __RPC_FAR *pVar);
virtual /* [local] */ HRESULT STDMETHODCALLTYPE Read(/* [in] */ LPCOLESTR pszPropName, /* [out][in] */ VARIANT __RPC_FAR *pVar, /* [in] */ IErrorLog __RPC_FAR *pErrorLog);
virtual HRESULT STDMETHODCALLTYPE Write(/* [in] */ LPCOLESTR pszPropName, /* [in] */ VARIANT __RPC_FAR *pVar);
};
typedef CComObject<CPropertyBag> CPropertyBagInstance;

View File

@ -34,11 +34,11 @@
CWebBrowserContainer::CWebBrowserContainer(CMozillaBrowser *pOwner)
{
NS_INIT_REFCNT();
m_pOwner = pOwner;
m_pEvents1 = m_pOwner;
m_pEvents2 = m_pOwner;
m_pCurrentURI = nsnull;
NS_INIT_REFCNT();
m_pOwner = pOwner;
m_pEvents1 = m_pOwner;
m_pEvents2 = m_pOwner;
m_pCurrentURI = nsnull;
}
@ -55,12 +55,12 @@ NS_IMPL_RELEASE(CWebBrowserContainer)
NS_INTERFACE_MAP_BEGIN(CWebBrowserContainer)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebBrowserChrome)
NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome)
NS_INTERFACE_MAP_ENTRY(nsIURIContentListener)
NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome)
NS_INTERFACE_MAP_ENTRY(nsIURIContentListener)
NS_INTERFACE_MAP_ENTRY(nsIEmbeddingSiteWindow)
NS_INTERFACE_MAP_ENTRY(nsIRequestObserver)
NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener)
NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener)
NS_INTERFACE_MAP_ENTRY(nsIContextMenuListener)
// NS_INTERFACE_MAP_ENTRY(nsICommandHandler)
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
@ -92,25 +92,25 @@ NS_IMETHODIMP CWebBrowserContainer::OnShowContextMenu(PRUint32 aContextFlags, ns
/* void onProgressChange (in nsIWebProgress aProgress, in nsIRequest aRequest, in long curSelfProgress, in long maxSelfProgress, in long curTotalProgress, in long maxTotalProgress); */
NS_IMETHODIMP CWebBrowserContainer::OnProgressChange(nsIWebProgress *aProgress, nsIRequest *aRequest, PRInt32 curSelfProgress, PRInt32 maxSelfProgress, PRInt32 curTotalProgress, PRInt32 maxTotalProgress)
{
NG_TRACE(_T("CWebBrowserContainer::OnProgressChange(...)\n"));
long nProgress = curTotalProgress;
long nProgressMax = maxTotalProgress;
NG_TRACE(_T("CWebBrowserContainer::OnProgressChange(...)\n"));
long nProgress = curTotalProgress;
long nProgressMax = maxTotalProgress;
if (nProgress == 0)
{
}
if (nProgressMax == 0)
{
nProgressMax = LONG_MAX;
}
if (nProgress > nProgressMax)
{
nProgress = nProgressMax; // Progress complete
}
if (nProgress == 0)
{
}
if (nProgressMax == 0)
{
nProgressMax = LONG_MAX;
}
if (nProgress > nProgressMax)
{
nProgress = nProgressMax; // Progress complete
}
m_pEvents1->Fire_ProgressChange(nProgress, nProgressMax);
m_pEvents2->Fire_ProgressChange(nProgress, nProgressMax);
m_pEvents1->Fire_ProgressChange(nProgress, nProgressMax);
m_pEvents2->Fire_ProgressChange(nProgress, nProgressMax);
return NS_OK;
}
@ -121,7 +121,7 @@ NS_IMETHODIMP CWebBrowserContainer::OnProgressChange(nsIWebProgress *aProgress,
/* void onStateChange (in nsIWebProgress aWebProgress, in nsIRequest request, in long progressStateFlags, in unsinged long aStatus); */
NS_IMETHODIMP CWebBrowserContainer::OnStateChange(nsIWebProgress* aWebProgress, nsIRequest *aRequest, PRInt32 progressStateFlags, nsresult aStatus)
{
nsresult rv = NS_OK;
nsresult rv = NS_OK;
NG_TRACE(_T("CWebBrowserContainer::OnStateChange(...)\n"));
@ -139,19 +139,19 @@ NS_IMETHODIMP CWebBrowserContainer::OnStateChange(nsIWebProgress* aWebProgress,
rv = channel->GetURI(getter_AddRefs(uri));
if (NS_SUCCEEDED(rv))
{
nsXPIDLCString aURI;
uri->GetSpec(getter_Copies(aURI));
NG_TRACE(_T("CWebBrowserContainer::OnStateChange->Doc Start(..., %s, \"\")\n"), A2CT(aURI));
nsXPIDLCString aURI;
uri->GetSpec(getter_Copies(aURI));
NG_TRACE(_T("CWebBrowserContainer::OnStateChange->Doc Start(..., %s, \"\")\n"), A2CT(aURI));
}
}
//Fire a DownloadBegin
m_pEvents1->Fire_DownloadBegin();
m_pEvents2->Fire_DownloadBegin();
//Fire a DownloadBegin
m_pEvents1->Fire_DownloadBegin();
m_pEvents2->Fire_DownloadBegin();
}
else if (progressStateFlags & STATE_STOP)
{
NG_TRACE(_T("CWebBrowserContainer::OnStateChange->Doc Stop(..., \"\")\n"));
NG_TRACE(_T("CWebBrowserContainer::OnStateChange->Doc Stop(..., \"\")\n"));
if (m_pOwner->mIERootDocument)
{
@ -160,34 +160,34 @@ NS_IMETHODIMP CWebBrowserContainer::OnStateChange(nsIWebProgress* aWebProgress,
m_pOwner->mIERootDocument = NULL;
}
//Fire a DownloadComplete
m_pEvents1->Fire_DownloadComplete();
m_pEvents2->Fire_DownloadComplete();
//Fire a DownloadComplete
m_pEvents1->Fire_DownloadComplete();
m_pEvents2->Fire_DownloadComplete();
nsCOMPtr<nsIURI> pURI;
nsCOMPtr<nsIURI> pURI;
nsCOMPtr<nsIChannel> aChannel = do_QueryInterface(aRequest);
if (!aChannel) return NS_ERROR_NULL_POINTER;
rv = aChannel->GetURI(getter_AddRefs(pURI));
if (NS_FAILED(rv)) return rv;
nsXPIDLCString aURI;
rv = pURI->GetSpec(getter_Copies(aURI));
if (NS_FAILED(rv)) return rv;
USES_CONVERSION;
BSTR bstrURI = SysAllocString(A2OLE((const char *) aURI));
// Fire a DocumentComplete event
CComVariant vURI(bstrURI);
m_pEvents2->Fire_DocumentComplete(m_pOwner, &vURI);
SysFreeString(bstrURI);
nsXPIDLCString aURI;
rv = pURI->GetSpec(getter_Copies(aURI));
if (NS_FAILED(rv)) return rv;
//Fire a StatusTextChange event
BSTR bstrStatus = SysAllocString(A2OLE((CHAR *) "Done"));
m_pEvents1->Fire_StatusTextChange(bstrStatus);
m_pEvents2->Fire_StatusTextChange(bstrStatus);
USES_CONVERSION;
BSTR bstrURI = SysAllocString(A2OLE((const char *) aURI));
// Fire a DocumentComplete event
CComVariant vURI(bstrURI);
m_pEvents2->Fire_DocumentComplete(m_pOwner, &vURI);
SysFreeString(bstrURI);
//Fire a StatusTextChange event
BSTR bstrStatus = SysAllocString(A2OLE((CHAR *) "Done"));
m_pEvents1->Fire_StatusTextChange(bstrStatus);
m_pEvents2->Fire_StatusTextChange(bstrStatus);
SysFreeString(bstrStatus);
}
@ -196,60 +196,60 @@ NS_IMETHODIMP CWebBrowserContainer::OnStateChange(nsIWebProgress* aWebProgress,
if (progressStateFlags & STATE_IS_NETWORK)
{
if (progressStateFlags & STATE_START)
{
// TODO
}
if (progressStateFlags & STATE_START)
{
// TODO
}
if (progressStateFlags & STATE_STOP)
{
nsXPIDLCString aURI;
if (m_pCurrentURI)
{
m_pCurrentURI->GetSpec(getter_Copies(aURI));
}
if (progressStateFlags & STATE_STOP)
{
nsXPIDLCString aURI;
if (m_pCurrentURI)
{
m_pCurrentURI->GetSpec(getter_Copies(aURI));
}
// Fire a NavigateComplete event
USES_CONVERSION;
BSTR bstrURI = SysAllocString(A2OLE((const char *) aURI));
m_pEvents1->Fire_NavigateComplete(bstrURI);
// Fire a NavigateComplete event
USES_CONVERSION;
BSTR bstrURI = SysAllocString(A2OLE((const char *) aURI));
m_pEvents1->Fire_NavigateComplete(bstrURI);
// Fire a NavigateComplete2 event
CComVariant vURI(bstrURI);
m_pEvents2->Fire_NavigateComplete2(m_pOwner, &vURI);
// Fire a NavigateComplete2 event
CComVariant vURI(bstrURI);
m_pEvents2->Fire_NavigateComplete2(m_pOwner, &vURI);
// Cleanup
SysFreeString(bstrURI);
// Cleanup
SysFreeString(bstrURI);
nsCOMPtr<nsIWebNavigation> webNav(do_QueryInterface(m_pOwner->mWebBrowser));
nsCOMPtr<nsIWebNavigation> webNav(do_QueryInterface(m_pOwner->mWebBrowser));
// Fire the new NavigateForward state
VARIANT_BOOL bEnableForward = VARIANT_FALSE;
PRBool aCanGoForward = PR_FALSE;
webNav->GetCanGoForward(&aCanGoForward);
if (aCanGoForward == PR_TRUE)
{
bEnableForward = VARIANT_TRUE;
}
m_pEvents2->Fire_CommandStateChange(CSC_NAVIGATEFORWARD, bEnableForward);
// Fire the new NavigateForward state
VARIANT_BOOL bEnableForward = VARIANT_FALSE;
PRBool aCanGoForward = PR_FALSE;
webNav->GetCanGoForward(&aCanGoForward);
if (aCanGoForward == PR_TRUE)
{
bEnableForward = VARIANT_TRUE;
}
m_pEvents2->Fire_CommandStateChange(CSC_NAVIGATEFORWARD, bEnableForward);
// Fire the new NavigateBack state
VARIANT_BOOL bEnableBack = VARIANT_FALSE;
PRBool aCanGoBack = PR_FALSE;
webNav->GetCanGoBack(&aCanGoBack);
if (aCanGoBack == PR_TRUE)
{
bEnableBack = VARIANT_TRUE;
}
m_pEvents2->Fire_CommandStateChange(CSC_NAVIGATEBACK, bEnableBack);
// Fire the new NavigateBack state
VARIANT_BOOL bEnableBack = VARIANT_FALSE;
PRBool aCanGoBack = PR_FALSE;
webNav->GetCanGoBack(&aCanGoBack);
if (aCanGoBack == PR_TRUE)
{
bEnableBack = VARIANT_TRUE;
}
m_pEvents2->Fire_CommandStateChange(CSC_NAVIGATEBACK, bEnableBack);
m_pOwner->mBusyFlag = FALSE;
m_pOwner->mBusyFlag = FALSE;
if (m_pCurrentURI)
{
NS_RELEASE(m_pCurrentURI);
}
}
if (m_pCurrentURI)
{
NS_RELEASE(m_pCurrentURI);
}
}
}
return NS_OK;
@ -261,8 +261,8 @@ NS_IMETHODIMP CWebBrowserContainer::OnLocationChange(nsIWebProgress* aWebProgres
nsIRequest* aRequest,
nsIURI *location)
{
// nsXPIDLCString aPath;
// location->GetPath(getter_Copies(aPath));
// nsXPIDLCString aPath;
// location->GetPath(getter_Copies(aPath));
return NS_ERROR_NOT_IMPLEMENTED;
}
@ -272,11 +272,11 @@ CWebBrowserContainer::OnStatusChange(nsIWebProgress* aWebProgress,
nsresult aStatus,
const PRUnichar* aMessage)
{
NG_TRACE(_T("CWebBrowserContainer::OnStatusChange(..., \"\")\n"));
NG_TRACE(_T("CWebBrowserContainer::OnStatusChange(..., \"\")\n"));
BSTR bstrStatus = SysAllocString(W2OLE((PRUnichar *) aMessage));
m_pEvents1->Fire_StatusTextChange(bstrStatus);
m_pEvents2->Fire_StatusTextChange(bstrStatus);
BSTR bstrStatus = SysAllocString(W2OLE((PRUnichar *) aMessage));
m_pEvents1->Fire_StatusTextChange(bstrStatus);
m_pEvents2->Fire_StatusTextChange(bstrStatus);
SysFreeString(bstrStatus);
return NS_OK;
@ -297,78 +297,78 @@ CWebBrowserContainer::OnSecurityChange(nsIWebProgress *aWebProgress,
/* void onStartURIOpen (in nsIURI aURI, out boolean aAbortOpen); */
NS_IMETHODIMP CWebBrowserContainer::OnStartURIOpen(nsIURI *pURI, PRBool *aAbortOpen)
{
USES_CONVERSION;
NG_TRACE(_T("CWebBrowserContainer::OnStartURIOpen(...)\n"));
USES_CONVERSION;
NG_TRACE(_T("CWebBrowserContainer::OnStartURIOpen(...)\n"));
if (m_pCurrentURI)
{
NS_RELEASE(m_pCurrentURI);
}
m_pCurrentURI = pURI;
NG_ASSERT(m_pCurrentURI);
m_pCurrentURI->AddRef();
if (m_pCurrentURI)
{
NS_RELEASE(m_pCurrentURI);
}
m_pCurrentURI = pURI;
NG_ASSERT(m_pCurrentURI);
m_pCurrentURI->AddRef();
nsXPIDLCString aURI;
m_pCurrentURI->GetSpec(getter_Copies(aURI));
nsXPIDLCString aURI;
m_pCurrentURI->GetSpec(getter_Copies(aURI));
// Setup the post data
CComVariant vPostDataRef;
CComVariant vPostData;
vPostDataRef.vt = VT_BYREF | VT_VARIANT;
vPostDataRef.pvarVal = &vPostData;
// TODO get the post data passed in via the original call to Navigate()
// Setup the post data
CComVariant vPostDataRef;
CComVariant vPostData;
vPostDataRef.vt = VT_BYREF | VT_VARIANT;
vPostDataRef.pvarVal = &vPostData;
// TODO get the post data passed in via the original call to Navigate()
// Fire a BeforeNavigate event
BSTR bstrURI = SysAllocString(A2OLE((const char *)aURI));
BSTR bstrTargetFrameName = NULL;
BSTR bstrHeaders = NULL;
VARIANT_BOOL bCancel = VARIANT_FALSE;
long lFlags = 0;
// Fire a BeforeNavigate event
BSTR bstrURI = SysAllocString(A2OLE((const char *)aURI));
BSTR bstrTargetFrameName = NULL;
BSTR bstrHeaders = NULL;
VARIANT_BOOL bCancel = VARIANT_FALSE;
long lFlags = 0;
m_pEvents1->Fire_BeforeNavigate(bstrURI, lFlags, bstrTargetFrameName, &vPostDataRef, bstrHeaders, &bCancel);
m_pEvents1->Fire_BeforeNavigate(bstrURI, lFlags, bstrTargetFrameName, &vPostDataRef, bstrHeaders, &bCancel);
// Fire a BeforeNavigate2 event
CComVariant vURI(bstrURI);
CComVariant vFlags(lFlags);
CComVariant vTargetFrameName(bstrTargetFrameName);
CComVariant vHeaders(bstrHeaders);
// Fire a BeforeNavigate2 event
CComVariant vURI(bstrURI);
CComVariant vFlags(lFlags);
CComVariant vTargetFrameName(bstrTargetFrameName);
CComVariant vHeaders(bstrHeaders);
m_pEvents2->Fire_BeforeNavigate2(m_pOwner, &vURI, &vFlags, &vTargetFrameName, &vPostDataRef, &vHeaders, &bCancel);
m_pEvents2->Fire_BeforeNavigate2(m_pOwner, &vURI, &vFlags, &vTargetFrameName, &vPostDataRef, &vHeaders, &bCancel);
// Cleanup
SysFreeString(bstrURI);
SysFreeString(bstrTargetFrameName);
SysFreeString(bstrHeaders);
// Cleanup
SysFreeString(bstrURI);
SysFreeString(bstrTargetFrameName);
SysFreeString(bstrHeaders);
if (bCancel == VARIANT_TRUE)
{
*aAbortOpen = PR_TRUE;
return NS_ERROR_ABORT;
}
else
{
m_pOwner->mBusyFlag = TRUE;
}
if (bCancel == VARIANT_TRUE)
{
*aAbortOpen = PR_TRUE;
return NS_ERROR_ABORT;
}
else
{
m_pOwner->mBusyFlag = TRUE;
}
//NOTE: The IE control fires a DownloadBegin after the first BeforeNavigate.
//NOTE: The IE control fires a DownloadBegin after the first BeforeNavigate.
// It then fires a DownloadComplete after the engine has made it's
// initial connection to the server. It then fires a second
// DownloadBegin/DownloadComplete pair around the loading of
// everything on the page. These events get fired out of
// CWebBrowserContainer::StartDocumentLoad() and
// CWebBrowserContainer::EndDocumentLoad().
// We don't appear to distinguish between the initial connection to
// We don't appear to distinguish between the initial connection to
// the server and the actual transfer of data. Firing these events
// here simulates, appeasing applications that are expecting that
// initial pair.
m_pEvents1->Fire_DownloadBegin();
m_pEvents2->Fire_DownloadBegin();
m_pEvents1->Fire_DownloadComplete();
m_pEvents2->Fire_DownloadComplete();
m_pEvents1->Fire_DownloadBegin();
m_pEvents2->Fire_DownloadBegin();
m_pEvents1->Fire_DownloadComplete();
m_pEvents2->Fire_DownloadComplete();
return NS_OK;
return NS_OK;
}
/* void getProtocolHandler (in nsIURI aURI, out nsIProtocolHandler aProtocolHandler); */
@ -451,28 +451,28 @@ NS_IMETHODIMP CWebBrowserContainer::SetParentContentListener(nsIURIContentListen
NS_IMETHODIMP
CWebBrowserContainer::GetDimensions(PRUint32 aFlags, PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
CWebBrowserContainer::SetDimensions(PRUint32 aFlags, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
CWebBrowserContainer::GetSiteWindow(void **aParentNativeWindow)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
CWebBrowserContainer::SetFocus(void)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
@ -510,14 +510,14 @@ CWebBrowserContainer::SetTitle(const PRUnichar * aTitle)
NS_IMETHODIMP
CWebBrowserContainer::GetVisibility(PRBool *aVisibility)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
CWebBrowserContainer::SetVisibility(PRBool aVisibility)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
///////////////////////////////////////////////////////////////////////////////
@ -526,56 +526,56 @@ CWebBrowserContainer::SetVisibility(PRBool aVisibility)
NS_IMETHODIMP
CWebBrowserContainer::SetStatus(PRUint32 statusType, const PRUnichar *status)
{
//Fire a StatusTextChange event
BSTR bstrStatus = SysAllocString(status);
m_pEvents1->Fire_StatusTextChange(bstrStatus);
m_pEvents2->Fire_StatusTextChange(bstrStatus);
//Fire a StatusTextChange event
BSTR bstrStatus = SysAllocString(status);
m_pEvents1->Fire_StatusTextChange(bstrStatus);
m_pEvents2->Fire_StatusTextChange(bstrStatus);
SysFreeString(bstrStatus);
return NS_OK;
return NS_OK;
}
NS_IMETHODIMP
CWebBrowserContainer::GetWebBrowser(nsIWebBrowser * *aWebBrowser)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
CWebBrowserContainer::SetWebBrowser(nsIWebBrowser * aWebBrowser)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
CWebBrowserContainer::GetChromeFlags(PRUint32 *aChromeFlags)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
CWebBrowserContainer::SetChromeFlags(PRUint32 aChromeFlags)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
CWebBrowserContainer::CreateBrowserWindow(PRUint32 chromeFlags, PRInt32 aX, PRInt32 aY, PRInt32 aCX, PRInt32 aCY, nsIWebBrowser **_retval)
{
IDispatch *pDispNew = NULL;
VARIANT_BOOL bCancel = VARIANT_FALSE;
IDispatch *pDispNew = NULL;
VARIANT_BOOL bCancel = VARIANT_FALSE;
*_retval = nsnull;
// Test if the event sink can give us a new window to navigate into
m_pEvents2->Fire_NewWindow2(&pDispNew, &bCancel);
// Test if the event sink can give us a new window to navigate into
m_pEvents2->Fire_NewWindow2(&pDispNew, &bCancel);
if ((bCancel == VARIANT_FALSE) && pDispNew)
{
if ((bCancel == VARIANT_FALSE) && pDispNew)
{
CComQIPtr<IMozControlBridge, &IID_IMozControlBridge> cpBridge = pDispNew;
if (cpBridge)
{
@ -587,10 +587,10 @@ CWebBrowserContainer::CreateBrowserWindow(PRUint32 chromeFlags, PRInt32 aX, PRI
return NS_OK;
}
}
pDispNew->Release();
}
pDispNew->Release();
}
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
@ -604,29 +604,29 @@ CWebBrowserContainer::DestroyBrowserWindow(void)
NS_IMETHODIMP
CWebBrowserContainer::SizeBrowserTo(PRInt32 aCX, PRInt32 aCY)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
CWebBrowserContainer::ShowAsModal(void)
{
return NS_ERROR_FAILURE;
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
CWebBrowserContainer::IsWindowModal(PRBool *_retval)
{
// we're not
*_retval = PR_FALSE;
return NS_OK;
// we're not
*_retval = PR_FALSE;
return NS_OK;
}
NS_IMETHODIMP
CWebBrowserContainer::ExitModalEventLoop(nsresult aStatus)
{
// Ignore request to exit modal loop
return NS_OK;
// Ignore request to exit modal loop
return NS_OK;
}
///////////////////////////////////////////////////////////////////////////////
@ -636,24 +636,24 @@ CWebBrowserContainer::ExitModalEventLoop(nsresult aStatus)
NS_IMETHODIMP
CWebBrowserContainer::OnStartRequest(nsIRequest *request, nsISupports* aContext)
{
USES_CONVERSION;
NG_TRACE(_T("CWebBrowserContainer::OnStartRequest(...)\n"));
USES_CONVERSION;
NG_TRACE(_T("CWebBrowserContainer::OnStartRequest(...)\n"));
return NS_OK;
return NS_OK;
}
NS_IMETHODIMP
CWebBrowserContainer::OnStopRequest(nsIRequest *request, nsISupports* aContext, nsresult aStatus)
{
USES_CONVERSION;
NG_TRACE(_T("CWebBrowserContainer::OnStopRequest(..., %d)\n"), (int) aStatus);
USES_CONVERSION;
NG_TRACE(_T("CWebBrowserContainer::OnStopRequest(..., %d)\n"), (int) aStatus);
// Fire a DownloadComplete event
m_pEvents1->Fire_DownloadComplete();
m_pEvents2->Fire_DownloadComplete();
// Fire a DownloadComplete event
m_pEvents1->Fire_DownloadComplete();
m_pEvents2->Fire_DownloadComplete();
return NS_OK;
return NS_OK;
}
///////////////////////////////////////////////////////////////////////////////

View File

@ -35,41 +35,41 @@
// interfaces into the web shell and so forth.
class CWebBrowserContainer :
public nsIEmbeddingSiteWindow,
public nsIWebBrowserChrome,
public nsIWebProgressListener,
public nsIRequestObserver,
public nsIURIContentListener,
public nsIInterfaceRequestor,
public nsIEmbeddingSiteWindow,
public nsIWebBrowserChrome,
public nsIWebProgressListener,
public nsIRequestObserver,
public nsIURIContentListener,
public nsIInterfaceRequestor,
public nsIContextMenuListener,
public nsICommandHandler,
public nsSupportsWeakReference
{
public:
CWebBrowserContainer(CMozillaBrowser *pOwner);
CWebBrowserContainer(CMozillaBrowser *pOwner);
friend CMozillaBrowser;
friend CMozillaBrowser;
protected:
virtual ~CWebBrowserContainer();
virtual ~CWebBrowserContainer();
// Protected members
protected:
CMozillaBrowser *m_pOwner;
nsString m_sTitle;
nsIURI *m_pCurrentURI;
CDWebBrowserEvents1 *m_pEvents1;
CDWebBrowserEvents2 *m_pEvents2;
CMozillaBrowser *m_pOwner;
nsString m_sTitle;
nsIURI *m_pCurrentURI;
CDWebBrowserEvents1 *m_pEvents1;
CDWebBrowserEvents2 *m_pEvents2;
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIEMBEDDINGSITEWINDOW
NS_DECL_NSIWEBBROWSERCHROME
NS_DECL_NSIURICONTENTLISTENER
NS_DECL_NSIREQUESTOBSERVER
NS_DECL_NSIINTERFACEREQUESTOR
NS_DECL_NSIWEBPROGRESSLISTENER
NS_DECL_ISUPPORTS
NS_DECL_NSIEMBEDDINGSITEWINDOW
NS_DECL_NSIWEBBROWSERCHROME
NS_DECL_NSIURICONTENTLISTENER
NS_DECL_NSIREQUESTOBSERVER
NS_DECL_NSIINTERFACEREQUESTOR
NS_DECL_NSIWEBPROGRESSLISTENER
NS_DECL_NSICONTEXTMENULISTENER
NS_DECL_NSICOMMANDHANDLER
};

View File

@ -26,7 +26,7 @@
#define GUIDS_H
#define NS_EXTERN_IID(_name) \
extern const nsIID _name;
extern const nsIID _name;
// Class IDs
NS_EXTERN_IID(kEventQueueServiceCID);