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

隨筆 - 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>
            裸体一区二区三区| 韩国av一区| 久久av一区二区三区漫画| aa亚洲婷婷| 一区二区三区视频观看| 亚洲夜间福利| 午夜精品久久久久久久白皮肤| 亚洲嫩草精品久久| 欧美在线首页| 乱人伦精品视频在线观看| 欧美久久久久久| 国产精品激情| 国内外成人免费激情在线视频网站| 狠狠做深爱婷婷久久综合一区| 在线观看视频一区| 亚洲午夜精品在线| 久久国产直播| 亚洲国产精品免费| 亚洲成人在线网| 一本不卡影院| 久久国产夜色精品鲁鲁99| 欧美成人综合在线| 国产日韩精品久久| 9久草视频在线视频精品| 欧美在线视频一区二区| 国产三区精品| 亚洲日本一区二区| 欧美一区二区性| 亚洲国产综合在线看不卡| 亚久久调教视频| 欧美性感一类影片在线播放 | 欧美人与禽性xxxxx杂性| 国产精品夜夜夜| 亚洲欧洲在线播放| 久久久99爱| 制服丝袜激情欧洲亚洲| 免费视频一区二区三区在线观看| 国产精品大片免费观看| 最新日韩精品| 久久久久久久综合色一本| 一本一本a久久| 欧美国产日本高清在线| 在线观看成人一级片| 欧美一区二区三区久久精品 | 久久久一二三| 国产老女人精品毛片久久| 99国产欧美久久久精品| 欧美成人资源网| 久久久在线视频| 国产综合视频| 久久精品视频在线看| 99精品视频网| 欧美另类专区| 夜夜嗨一区二区三区| 欧美顶级艳妇交换群宴| 久久高清福利视频| 国产日产高清欧美一区二区三区| 亚洲午夜一级| 亚洲少妇自拍| 国产精品一区二区在线观看网站| 宅男在线国产精品| av成人免费在线观看| 欧美成人综合| 夜夜嗨av色综合久久久综合网| 亚洲国产日韩欧美在线图片| 狂野欧美一区| 亚洲精品永久免费| 亚洲激情影院| 欧美日韩在线播放三区| 亚洲一区二区久久| 亚洲欧美日韩综合| 国产日韩欧美a| 久久国产日韩| 久久―日本道色综合久久| 在线观看精品| 亚洲国产精品久久91精品| 欧美电影免费观看网站| 一区二区成人精品| 亚洲欧美怡红院| 亚洲国产精品t66y| 999亚洲国产精| 国产亚洲一区二区三区在线播放| 久久久欧美精品sm网站| 欧美黄色小视频| 欧美精品一区三区| 欧美一区二区三区日韩视频| 性色av一区二区怡红| 一区精品久久| 亚洲精品小视频| 国产婷婷色综合av蜜臀av| 欧美激情精品久久久六区热门| 女人天堂亚洲aⅴ在线观看| 亚洲一线二线三线久久久| 久久久91精品国产一区二区三区 | 久久久久国产精品一区| 亚洲第一页中文字幕| 日韩视频在线一区| 国产有码一区二区| 91久久夜色精品国产网站| 国产精品女主播| 欧美激情一区二区三区成人| 国产精品乱码一区二三区小蝌蚪| 麻豆成人在线观看| 欧美午夜视频一区二区| 欧美成在线视频| 国产午夜精品麻豆| 亚洲蜜桃精久久久久久久| 一区二区在线视频播放| 亚洲线精品一区二区三区八戒| 亚洲电影免费观看高清| 在线一区免费观看| 亚洲精品在线观看视频| 久久国产免费| 午夜性色一区二区三区免费视频| 每日更新成人在线视频| 久久精品欧洲| 国产精品午夜春色av| 日韩视频第一页| 最新热久久免费视频| 久久三级福利| 久久亚洲春色中文字幕久久久| 国产精品久久久久av免费| 99v久久综合狠狠综合久久| 亚洲国产三级在线| 久久综合国产精品| 美女图片一区二区| 国内自拍一区| 欧美在线一区二区| 久久精品女人的天堂av| 国产精品永久入口久久久| 夜夜爽av福利精品导航 | 欧美高清在线| 亚洲第一黄网| 亚洲精品无人区| 噜噜噜躁狠狠躁狠狠精品视频| 久久五月激情| **性色生活片久久毛片| 久久婷婷综合激情| 欧美国产高清| 亚洲精品一品区二品区三品区| 麻豆精品在线视频| 亚洲人成小说网站色在线| 欧美视频在线不卡| 一本色道久久综合精品竹菊| 亚洲香蕉在线观看| 国产精品久久久999| 亚洲视频在线视频| 久久国产精品一区二区三区四区| 国产精品一区二区三区观看| 亚洲自拍偷拍麻豆| 久久久久网址| 亚洲精品一区在线| 欧美视频日韩视频在线观看| 亚洲天堂成人| 久久中文精品| 日韩一级大片在线| 国产精品久久久久久一区二区三区 | 一区电影在线观看| 国产精品白丝av嫩草影院| 亚洲影院一区| 久久综合色影院| 一区二区免费在线观看| 国产精品―色哟哟| 久久精品夜色噜噜亚洲a∨| 欧美成人在线免费视频| 夜夜嗨av一区二区三区免费区| 国产精品视频你懂的| 久久手机精品视频| 亚洲一级二级在线| 女女同性精品视频| 亚洲影院在线| 亚洲国产欧美在线| 国产精品免费视频观看| 久久免费偷拍视频| 一区二区三区免费网站| 美女视频网站黄色亚洲| 亚洲字幕在线观看| 亚洲国产精品99久久久久久久久| 国产精品国产三级国产普通话99 | 在线视频亚洲| 国产精品va在线播放我和闺蜜| 欧美亚洲系列| 日韩一区二区精品在线观看| 久久免费视频一区| 亚洲免费视频中文字幕| 亚洲娇小video精品| 国产亚洲欧美日韩美女| 欧美视频免费| 欧美激情综合五月色丁香小说| 亚洲综合日韩| 亚洲理伦在线| 亚洲高清不卡在线观看| 久久久另类综合| 午夜精品福利一区二区蜜股av| 亚洲黄色av一区| 在线播放不卡| 激情综合在线| 含羞草久久爱69一区| 国产精品亚洲综合久久| 欧美日韩一级片在线观看|