C#相当于这个C ++代码

时间:2009-09-21 07:23:24

标签: c# visual-c++ activex

下面的代码是否有C#等价物?

 HRESULT hr;
    ActiveXSite* pSite;
    pSite = CAxWindowlessHost<CMainDlg>::CreateControlSite(L"AgControl.AgControl", NULL, IDC_AGCONTROL1);
    if ( pSite != NULL )
    {
        // disable right-click!
        pSite->SetAllowRClick(false);
        // set moniker URL
        CComBSTR bstrUrl("file:///C:/Temp/SilverlightDemo.xap");
        pSite->SetUrl(bstrUrl);

        PropertyParams props;
        props.push_back( PropertyParam(L"Windowless", L"true") );
        props.push_back( PropertyParam(L"MinRuntimeVersion", L"2.0.31005.0") );
        props.push_back( PropertyParam(L"Source", static_cast<LPCWSTR>(bstrUrl)) );
        props.push_back( PropertyParam(L"InitParams", L"") );
        hr = pSite->ActivateAx(rc, false, props);
    }

2 个答案:

答案 0 :(得分:2)

您似乎希望将Silverlight应用程序嵌入到您自己的桌面应用程序中。我自己没有这样做,但似乎与

有些相关

Host silverlight in the Windows.Forms...

也尝试谷歌搜索“在winforms中嵌入silverlight”。一种可能性是嵌入一个Web浏览器控件并将silverlight应用程序加载到其中。

PS:由于ATL是一种C ++技术,因此肯定没有直接等效的代码......

答案 1 :(得分:0)

除了尝试使用P / Invoke为行转录创建一条线的相当不正确的方法之外,使用来自.net的本机COM对象的预期方法是通过Runtime Callable Wrapper