青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 74, 文章 - 0, 評論 - 26, 引用 - 0
數據加載中……

c++ 和 jscript

#pragma once

#include <afxdisp.h>
#include <activscp.h>

class CCodeObject;
class CScriptSite;

class CScriptingSupportHelper
{
public:
    CScriptingSupportHelper();
    ~CScriptingSupportHelper();

    BOOL Create(CWnd* pWnd);
    BOOL RunScript(CString str);

    CCodeObject* GetCodeObject() const { return m_pCodeObject; }
    CScriptSite* GetScriptSite() const { return m_pScriptSite; }
    IActiveScript* GetActiveScript() const { return m_pActiveScript; }

private:
    CCodeObject* m_pCodeObject;
    CScriptSite* m_pScriptSite;

    IActiveScript* m_pActiveScript;  
    IActiveScriptParse* m_pActiveScriptParse;
};

class CCodeObject : public CCmdTarget
{
public:
    CCodeObject(CScriptingSupportHelper* pScripting, CWnd* pWnd);
    virtual ~CCodeObject();

    void Line(long, long, long, long);
    void Ellipse(long, long, long, long);
    void DrawText(LPCTSTR msg, long x, long y, long w, long h);

    void OnPaint();
    void OnMouseClick(long x, long y);

private:
    CWnd* m_pWnd;
    CScriptingSupportHelper* m_pScripting;
    BOOL GetDispatch(OLECHAR* name, COleDispatchDriver& disp, DISPID& dispid);

    enum
    {
        idLine = 1,
        idEllipse,
        idDrawText,
    };

    DECLARE_DISPATCH_MAP()
};

class CScriptSite : public IActiveScriptSite
{
public:
    CScriptSite(CScriptingSupportHelper* pScripting)  
    {
        m_pScripting = pScripting;
    };
   
    ~CScriptSite() 
    {
    };

    virtual ULONG STDMETHODCALLTYPE AddRef()
    {   
        return InterlockedIncrement(&m_nRefCount);
    }
   
    virtual ULONG STDMETHODCALLTYPE Release()
    {    
        return InterlockedDecrement(&m_nRefCount);
    };
   
    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void** ppObj)
    {
        *ppObj = NULL;

        if ((iid == IID_IUnknown) || (iid == IID_IActiveScriptSite))
        {
            *ppObj= (IActiveScriptSite*)this;
            AddRef();
            return S_OK;
        }

        return E_NOINTERFACE;
    }

    virtual HRESULT STDMETHODCALLTYPE GetLCID(LCID __RPC_FAR *)
    {
        return E_NOTIMPL;
    }
   
    virtual HRESULT STDMETHODCALLTYPE GetItemInfo(LPCOLESTR, DWORD, IUnknown __RPC_FAR *__RPC_FAR * pObj, ITypeInfo __RPC_FAR *__RPC_FAR *)
    {
        ASSERT(m_pScripting);
        ASSERT(m_pScripting->GetCodeObject());

        *pObj = m_pScripting->GetCodeObject()->GetIDispatch(TRUE);
        return S_OK;
    }
       
    virtual HRESULT STDMETHODCALLTYPE GetDocVersionString(BSTR __RPC_FAR *)
    {
        return E_NOTIMPL;
    }
       
    virtual HRESULT STDMETHODCALLTYPE OnScriptTerminate(const VARIANT __RPC_FAR * ,const EXCEPINFO __RPC_FAR *)
    {
        return E_NOTIMPL;
    }

       
    virtual HRESULT STDMETHODCALLTYPE OnStateChange(SCRIPTSTATE)
    {
        return E_NOTIMPL;
    }
       
    virtual HRESULT STDMETHODCALLTYPE OnScriptError(IActiveScriptError __RPC_FAR * pScriptError)
    {
        return E_NOTIMPL;
    }
       
    virtual HRESULT STDMETHODCALLTYPE OnEnterScript()
    {
        return E_NOTIMPL;
    }
       
    virtual HRESULT STDMETHODCALLTYPE OnLeaveScript()
    {
        return E_NOTIMPL;
    }

private:
    long m_nRefCount;
    CScriptingSupportHelper* m_pScripting;
};

#include "StdAfx.h"
#include "ScriptingSupport.h"

CCodeObject::CCodeObject(CScriptingSupportHelper* pScripting, CWnd* pWnd)
    : m_pWnd(pWnd),
      m_pScripting(pScripting)

{
    EnableAutomation();
}

CCodeObject::~CCodeObject()
{
}

BEGIN_DISPATCH_MAP(CCodeObject, CCmdTarget)
DISP_FUNCTION_ID(CCodeObject, "Line", idLine, Line, VT_EMPTY, VTS_I4 VTS_I4 VTS_I4 VTS_I4)
DISP_FUNCTION_ID(CCodeObject, "Ellipse", idEllipse, Ellipse, VT_EMPTY, VTS_I4 VTS_I4 VTS_I4 VTS_I4)
DISP_FUNCTION_ID(CCodeObject, "DrawText", idDrawText, DrawText, VT_EMPTY, VTS_BSTR VTS_I4 VTS_I4 VTS_I4 VTS_I4)
END_DISPATCH_MAP()

void CCodeObject::Line(long x1, long y1, long x2, long y2)
{
    CWindowDC dc(m_pWnd);

    dc.MoveTo(x1, y1);
    dc.LineTo(x2, y2);
}

void CCodeObject::Ellipse(long x1, long y1, long x2, long y2)
{
    CWindowDC dc(m_pWnd);
    dc.Ellipse(x1, y1, x2, y2);
}

void CCodeObject::DrawText(LPCTSTR msg, long x, long y, long w, long h)
{
    CWindowDC dc(m_pWnd);
    CRect rect(x, y, x+w, y+h);

    dc.DrawText(msg, rect, 0);
}

void CCodeObject::OnPaint()
{
    COleDispatchDriver disp;
    DISPID dispid;
    if (GetDispatch(L"OnPaint", disp, dispid)) {
        disp.InvokeHelper(dispid, DISPATCH_METHOD, VT_EMPTY, 0, 0);
    }
}

BOOL CCodeObject::GetDispatch(OLECHAR* name, COleDispatchDriver& disp, DISPID& dispid)
{
    IDispatch* pScriptDispatch = 0;
    m_pScripting->GetActiveScript()->GetScriptDispatch(0, &pScriptDispatch);
    disp.AttachDispatch(pScriptDispatch);
    HRESULT hr = pScriptDispatch->GetIDsOfNames(IID_NULL, &name, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
    return SUCCEEDED(hr);
}

void CCodeObject::OnMouseClick(long x, long y)
{
    COleDispatchDriver disp;
    DISPID dispid;
    if (GetDispatch(L"OnMouseClick", disp, dispid)) {
        disp.InvokeHelper(dispid, DISPATCH_METHOD, VT_EMPTY, 0, (const BYTE*)(VTS_I4 VTS_I4), x, y);
    }
}

CScriptingSupportHelper::CScriptingSupportHelper()
    : m_pCodeObject(0),
      m_pScriptSite(0),
      m_pActiveScript(0),
      m_pActiveScriptParse(0)
{
}

CScriptingSupportHelper::~CScriptingSupportHelper()
{
    if (m_pActiveScript)
    {
        m_pActiveScript->Close();
        m_pActiveScriptParse->Release();
        m_pActiveScript->Release();
    }

    delete m_pCodeObject; m_pCodeObject=0;
    delete m_pScriptSite; m_pScriptSite=0;
}

BOOL CScriptingSupportHelper::RunScript(CString strText)
{
    EXCEPINFO ei = {0};
    BSTR bstrText = strText.AllocSysString();
    m_pActiveScriptParse->ParseScriptText(bstrText, NULL, NULL, NULL, 0, 0, 0, NULL, &ei);
    SysFreeString(bstrText);

    m_pActiveScript->SetScriptState(SCRIPTSTATE_CONNECTED);

    return TRUE;
}

BOOL CScriptingSupportHelper::Create(CWnd* pWnd)
{
    m_pCodeObject = new CCodeObject(this, pWnd);
    m_pScriptSite = new CScriptSite(this);

    CLSID clsidJScript;
    CLSIDFromProgID(L"JScript", &clsidJScript);
    CoCreateInstance(clsidJScript, NULL, CLSCTX_INPROC_SERVER, IID_IActiveScript, (void **)&m_pActiveScript);
    m_pActiveScript->QueryInterface(IID_IActiveScriptParse, (void**)&m_pActiveScriptParse);
    m_pActiveScript->SetScriptSite(m_pScriptSite);
    m_pActiveScript->AddNamedItem(L"Code", SCRIPTITEM_ISVISIBLE | SCRIPTITEM_ISSOURCE | SCRIPTITEM_GLOBALMEMBERS);
    m_pActiveScriptParse->InitNew();


    return TRUE;
}




posted on 2007-11-20 09:19 井泉 閱讀(671) 評論(0)  編輯 收藏 引用 所屬分類: C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一本色道久久综合| 亚洲欧美电影院| 国产真实久久| 欧美区在线观看| 亚洲三级免费观看| 国产一区999| 国产欧美日韩在线视频| 久久综合中文字幕| 久久人人爽爽爽人久久久| 欧美一区二区三区在线看| 久久精品国产精品| 久久久久久久精| 欧美va天堂va视频va在线| 99精品国产热久久91蜜凸| 国产毛片一区| 国产午夜精品美女视频明星a级| 久久综合九色综合欧美就去吻| 久久成人精品电影| 久久久亚洲国产天美传媒修理工| 欧美亚洲一区三区| 嫩草影视亚洲| 国产精品国产三级国产aⅴ入口| 欧美精品123区| 国产精品美女久久久久久久| 国产精品一区二区久久久| 激情综合色综合久久| 永久免费精品影视网站| 一区二区免费看| 麻豆freexxxx性91精品| 欧美电影在线| 香蕉久久夜色精品| 欧美性猛交一区二区三区精品| 欧美久久成人| 国产亚洲精品aa| 一区二区三区|亚洲午夜| 久久精品在线视频| 一区二区三区国产精品| 久久精品国产第一区二区三区| 久久综合色婷婷| 久久国产精品99精品国产| 欧美成熟视频| 亚洲韩国青草视频| 翔田千里一区二区| 日韩午夜电影av| 欧美日韩亚洲视频一区| 亚洲大片一区二区三区| 久久精品亚洲| 香蕉成人久久| 一区二区视频在线观看| 国产偷自视频区视频一区二区| 欧美视频一区二区在线观看 | 久久av一区| 西瓜成人精品人成网站| 黄色成人av| 亚洲黄一区二区| 欧美一区午夜视频在线观看| 国产一二精品视频| 欧美综合激情网| 久久久精品性| 亚洲少妇在线| 性久久久久久| 日韩天堂av| 欧美一级播放| 日韩亚洲一区在线播放| 亚洲欧美国产制服动漫| 欧美国产一区二区在线观看| 一区二区三欧美| 久久一区欧美| 久久久久久久性| 国产精品一二三四区| 亚洲韩日在线| 亚洲免费视频成人| 一本久久a久久精品亚洲| 欧美在线免费看| 亚洲一区二区在| 嫩草影视亚洲| 亚洲国产精品一区在线观看不卡 | 国产精品国产三级欧美二区| 久久女同精品一区二区| 国产日韩精品久久| 亚洲欧美日韩区| 欧美日韩性生活视频| 六月婷婷一区| 亚洲特色特黄| 国产精品自拍小视频| 一区二区三区四区五区在线| 亚洲自拍高清| 国产欧美一二三区| 欧美激情视频免费观看| 欧美日韩精品免费在线观看视频| 亚洲激情国产精品| 亚洲网站在线观看| 亚洲综合视频网| 欧美电影免费观看高清| 亚洲天堂av综合网| 影音先锋亚洲一区| 国产模特精品视频久久久久| 欧美伊人久久| 欧美日韩一区二区国产| 亚洲精品小视频在线观看| 午夜精品美女自拍福到在线| 韩国成人精品a∨在线观看| 欧美在线视频一区二区三区| 国产日韩精品视频一区二区三区| 美女免费视频一区| 西瓜成人精品人成网站| 亚洲精品三级| 欧美高清视频在线| 久久精品视频在线免费观看| 欧美久久久久中文字幕| 欧美一区二区三区四区高清 | 夜夜嗨一区二区三区| 久久综合精品一区| 久久久久久综合| 久久xxxx| 久久久久高清| 久久久久久久尹人综合网亚洲 | 欧美日韩三级一区二区| 久久深夜福利| 欧美成年网站| 新67194成人永久网站| 亚洲影视在线播放| 一区二区三区四区在线| 日韩亚洲精品电影| 日韩视频一区二区三区在线播放免费观看| 亚洲天堂av电影| 亚洲网在线观看| 亚洲图片欧洲图片av| 中文国产亚洲喷潮| 一区二区三区视频在线| 亚洲免费在线播放| 久久午夜电影网| 亚洲高清资源综合久久精品| 欧美一区1区三区3区公司| 99国产麻豆精品| 久久精品国产一区二区三区| 久久综合久久久| 日韩亚洲综合在线| 亚洲一区二区在| 久久av一区二区| 亚洲麻豆视频| 噜噜噜在线观看免费视频日韩| 欧美成人亚洲成人日韩成人| 欧美日韩在线一区二区| 精品91免费| 欧美在线视频播放| 亚洲伦理久久| 美女成人午夜| 激情综合网激情| 久久疯狂做爰流白浆xx| 日韩视频―中文字幕| 美女精品自拍一二三四| 国产午夜亚洲精品理论片色戒 | 久久精品国产亚洲a| 日韩视频国产视频| 免费在线观看日韩欧美| 国产三级欧美三级| 欧美亚洲一区在线| 在线亚洲一区| 欧美体内she精视频在线观看| 亚洲九九爱视频| 久久精品国产精品亚洲| 欧美国产精品劲爆| 亚洲欧美成人网| 亚洲激情精品| 久久综合图片| 亚洲人精品午夜在线观看| 女人香蕉久久**毛片精品| 麻豆精品网站| 亚洲免费成人av电影| 99re6这里只有精品| 欧美三级午夜理伦三级中视频| 亚洲综合另类| 久久riav二区三区| 国产午夜精品一区二区三区欧美| 久久精品二区亚洲w码| 久久亚洲视频| 中文亚洲欧美| 欧美影院在线播放| 99精品国产热久久91蜜凸| 一区二区三区成人| 欧美福利视频在线| 久久av最新网址| 亚洲一区www| 在线观看日韩av| 欧美欧美天天天天操| 久久久久久久97| 亚洲美女黄色| 国产香蕉久久精品综合网| 久久爱www久久做| 亚洲国产成人91精品 | 亚洲欧美日韩精品久久久久| 亚洲视频axxx| 国产区亚洲区欧美区| 猛干欧美女孩| 欧美在线观看一区| 亚洲男女自偷自拍| 亚洲免费高清视频| 亚洲电影自拍| 麻豆免费精品视频|