⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scriptengine.h

📁 vc++6.0开发网络典型应用实例导航 1. 本光盘提供了本书中所有的实例源程序文件。 2. 附录文件夹下是Winsock 函数参考以及错误码列表
💻 H
字号:
#if !defined(AFX_SCRIPTENGINE_H__7AE78559_3603_4A94_828F_867399AE3CEF__INCLUDED_)
#define AFX_SCRIPTENGINE_H__7AE78559_3603_4A94_828F_867399AE3CEF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <activscp.h>

class CScriptEngine : public CCmdTarget
{
	DECLARE_DYNCREATE(CScriptEngine)

	CScriptEngine();
	virtual ~CScriptEngine();
	
	BOOL Create(REFCLSID rclsid);
	SCRIPTSTATE GetScriptState();
	BOOL AddNamedItem(LPCOLESTR pstrName, DWORD dwFlags = SCRIPTITEM_ISSOURCE | SCRIPTITEM_ISVISIBLE);
	BOOL AddTypeLib(REFGUID guidTypeLib, DWORD dwMaj, DWORD dwMin, DWORD dwFlags);

	IDispatch* GetScriptDispatch(LPCOLESTR pstrItemName);

	BOOL ParseScriptText(LPCOLESTR  pstrCode, 
							LPCOLESTR  pstrItemName = NULL, 
							IUnknown*  punkContext = NULL,
							LPCOLESTR  pstrEndDelimiter = NULL,
							DWORD      dwSourceContextCookie = 0,
							ULONG      ulStartingLineNumber = 0,
							DWORD      dwFlags = 0,
							VARIANT*   pvarResult = NULL,
							EXCEPINFO* pExcepInfo = NULL);

	BOOL Connect();
	BOOL Disconnect();

	BOOL Close();

public:
	CString GetLastError() { return m_strLastError; }

	virtual void CleanUp();
	// IActiveScriptSite overridables
	virtual HRESULT OnGetLCID(LCID* pLCID);
	
	virtual HRESULT OnGetItemInfo(LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown** ppUnknownItem, ITypeInfo** ppTypeInfo);
	
	virtual BSTR OnGetDocVersionString();

	virtual void OnScriptTerminate(const VARIANT* pVarResult, const EXCEPINFO* pExcepInfo);
	
	virtual void OnStateChange(SCRIPTSTATE ssScriptState);
  
	virtual void OnScriptError(IActiveScriptError* pActiveScriptError);
	
	virtual void OnEnterScript();
	
	virtual void OnLeaveScript();

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CScriptEngine)
	//}}AFX_VIRTUAL

protected:
	CString m_strLastError;

	DECLARE_INTERFACE_MAP()
		
	// IActiveScriptSite
	BEGIN_INTERFACE_PART(ActiveScriptSite, IActiveScriptSite)
		INIT_INTERFACE_PART(CActiveScriptSite, ActiveScriptSite)
		STDMETHOD (GetLCID)(LCID *plcid);
		STDMETHOD (GetItemInfo)(LPCOLESTR pstwrName, DWORD dwReturnMask, IUnknown** ppunkItem, ITypeInfo** ppTypeInfo);
		STDMETHOD (GetDocVersionString)(BSTR *pstrVersionString);
		STDMETHOD (OnScriptTerminate) (const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo);
		STDMETHOD (OnStateChange)(SCRIPTSTATE ssScriptState);
		STDMETHOD (OnScriptError)(IActiveScriptError *pase);
		STDMETHOD (OnEnterScript)();
		STDMETHOD (OnLeaveScript)();
	END_INTERFACE_PART(ActiveScriptSite)

private:
	HRESULT m_hrScriptError;
	
	IActiveScript* m_pActiveScript;
	IActiveScriptParse* m_pActiveScriptParse;
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_SCRIPTENGINE_H__7AE78559_3603_4A94_828F_867399AE3CEF__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -