📄 scriptengine.cpp
字号:
/* */
/* Function name : OnStateChange */
/* Description : Scripting engine has changed states. */
/* */
/********************************************************************/
void CScriptEngine::OnStateChange(SCRIPTSTATE ssScriptState)
{
switch(ssScriptState)
{
case SCRIPTSTATE_UNINITIALIZED:
TRACE0("State -> Uninitialized\n");
break;
case SCRIPTSTATE_INITIALIZED:
TRACE0("State -> Initialized\n");
break;
case SCRIPTSTATE_STARTED:
TRACE0("State -> Started\n");
break;
case SCRIPTSTATE_CONNECTED:
TRACE0("State -> Connected\n");
break;
case SCRIPTSTATE_DISCONNECTED:
TRACE0("State -> Disonnected\n");
break;
case SCRIPTSTATE_CLOSED:
TRACE0("State -> Closed\n");
break;
default:
TRACE0("State -> Invalid\n");
break;
}
}
/********************************************************************/
/* */
/* Function name : OnScriptError */
/* Description : An execution error occurred while the engine was */
/* running the script. */
/* */
/********************************************************************/
void CScriptEngine::OnScriptError(IActiveScriptError* pActiveScriptError)
{
DWORD dwSourceContext = 0;
ULONG nLineNumber = 0;
LONG nCharPosition = 0;
// get source line info
HRESULT hResult = pActiveScriptError->GetSourcePosition(&dwSourceContext,
&nLineNumber,
&nCharPosition);
if(SUCCEEDED(hResult))
{
// get the source line
BSTR bstrSourceLine = NULL;
hResult = pActiveScriptError->GetSourceLineText(&bstrSourceLine);
// get the exception info
EXCEPINFO excepinfo;
memset(&excepinfo, 0, sizeof(excepinfo));
hResult = pActiveScriptError->GetExceptionInfo(&excepinfo);
ASSERT(SUCCEEDED(hResult));
// format error message
CString strMsg;
strMsg.Format("Script error detected at line %d.", nLineNumber);
if (bstrSourceLine != NULL)
{
strMsg += "\nSource line: ";
strMsg += bstrSourceLine;
::SysFreeString(bstrSourceLine);
}
if (excepinfo.bstrDescription != NULL)
{
strMsg += "\nDescription: ";
strMsg += excepinfo.bstrDescription;
}
// issue error message
AfxMessageBox(strMsg, MB_OK | MB_ICONEXCLAMATION);
}
// script failed
m_hrScriptError = E_FAIL;
}
/********************************************************************/
/* */
/* Function name : OnEnterScript */
/* Description : Engine has begun executing the script code. */
/* */
/********************************************************************/
void CScriptEngine::OnEnterScript()
{
}
/********************************************************************/
/* */
/* Function name : OnLeaveScript */
/* Description : Engine has returned from executing script code. */
/* */
/********************************************************************/
void CScriptEngine::OnLeaveScript()
{
}
/********************************************************************/
/* */
/* Function name : CleanUp */
/* Description : Clean up */
/* */
/********************************************************************/
void CScriptEngine::CleanUp()
{
if (m_pActiveScriptParse)
{
m_pActiveScriptParse->Release();
m_pActiveScriptParse = NULL;
}
if (m_pActiveScript)
{
m_pActiveScript->Close();
m_pActiveScript->Release();
m_pActiveScript = NULL;
}
}
/********************************************************************/
/* */
/* Function name : XActiveScriptSite::AddRef */
/* Description : */
/* */
/********************************************************************/
STDMETHODIMP_(ULONG) CScriptEngine::XActiveScriptSite::AddRef()
{
METHOD_PROLOGUE_EX_(CScriptEngine, ActiveScriptSite)
ULONG nResult = (ULONG)pThis->ExternalAddRef();
return nResult;
}
/********************************************************************/
/* */
/* Function name : XActiveScriptSite::Release */
/* Description : */
/* */
/********************************************************************/
STDMETHODIMP_(ULONG) CScriptEngine::XActiveScriptSite::Release()
{
METHOD_PROLOGUE_EX_(CScriptEngine, ActiveScriptSite)
ULONG nResult = (ULONG)pThis->ExternalRelease();
return nResult;
}
/********************************************************************/
/* */
/* Function name : XActiveScriptSite::QueryInterface */
/* Description : */
/* */
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::QueryInterface(REFIID iid, LPVOID* ppvObj)
{
METHOD_PROLOGUE_EX_(CScriptEngine, ActiveScriptSite)
HRESULT hr = (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
return hr;
}
/********************************************************************/
/* */
/* Function name : XActiveScriptSite::GetLCID */
/* Description : Retrieves the locale identifier associated with */
/* the host's user interface. */
/* */
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::GetLCID(LCID* pLCID)
{
METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
HRESULT hr = pThis->OnGetLCID(pLCID);
return hr;
}
/********************************************************************/
/* */
/* Function name : XActiveScriptSite::GetItemInfo */
/* Description : Allows the scripting engine to obtain */
/* information about an item added with the */
/* IActiveScript::AddNamedItem method. */
/* */
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::GetItemInfo(LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown **ppunkItem, ITypeInfo **ppTypeInfo)
{
METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
HRESULT hr = pThis->OnGetItemInfo(pstrName, dwReturnMask, ppunkItem, ppTypeInfo);
return hr;
}
/********************************************************************/
/* */
/* Function name : XActiveScriptSite::GetDocVersionString */
/* Description : Retrieves a host-defined string that uniquely */
/* identifies the current document version. */
/* */
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::GetDocVersionString(BSTR* pbstrVersionString)
{
METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
*pbstrVersionString = pThis->OnGetDocVersionString();
return S_OK;
}
/********************************************************************/
/* */
/* Function name : XActiveScriptSite::OnScriptTerminate */
/* Description : The script has completed execution. */
/* */
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::OnScriptTerminate(const VARIANT* pVarResult, const EXCEPINFO* pExcepInfo)
{
METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
pThis->OnScriptTerminate(pVarResult, pExcepInfo);
return S_OK;
}
/********************************************************************/
/* */
/* Function name : XActiveScriptSite::OnStateChange */
/* Description : Scripting engine has changed states. */
/* */
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::OnStateChange(SCRIPTSTATE ssScriptState)
{
METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
pThis->OnStateChange(ssScriptState);
return S_OK;
}
/********************************************************************/
/* */
/* Function name : XActiveScriptSite::OnScriptError */
/* Description : An execution error occurred while the engine was */
/* running the script. */
/* */
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::OnScriptError(IActiveScriptError *pActiveScriptError)
{
METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
pThis->OnScriptError(pActiveScriptError);
return S_OK;
}
/********************************************************************/
/* */
/* Function name : XActiveScriptSite::OnEnterScript */
/* Description : Engine has begun executing the script code. */
/* */
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::OnEnterScript()
{
METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
pThis->OnEnterScript();
return S_OK;
}
/********************************************************************/
/* */
/* Function name : XActiveScriptSite::OnLeaveScript */
/* Description : Engine has returned from executing script code. */
/* */
/********************************************************************/
STDMETHODIMP CScriptEngine::XActiveScriptSite::OnLeaveScript()
{
METHOD_PROLOGUE_EX(CScriptEngine, ActiveScriptSite)
pThis->OnLeaveScript();
return S_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -