下面的代码是否有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);
}
答案 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